Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: McKay 18 Května 2015, 21:10:38
-
Ahoj, obracím se sem s dalším dotazem ohledně jednoho problému s umístěním programů do určité složky...
V adresáři "Domů" jsem si vytvořil vlastní složku kam umistuju všechny programy bez instalace např. serviio, freaarapid downloader atd... a když to do té složky umístím a chci spustit ten program tak mi to v terminálu vypíše že adresář, nebo soubor neexistuje, jestli je to přímo v adresáři "Domů" tak vše funguje, ale chtěl bych to mít roztříděné kvůli pořádku...
-
Jak ho spouštíš?
-
Spoustěl jsem ho ted pro odzkoušení v terminálu... jinak používám spouštěče...
-
Běž do té složky > otevřit Terminál zde > zadej název sp. souboru > enter.
Zkrátka špatně zadáváš cestu (nebo je chyba v syntaxi).
-
Nemyslím si, že špatně zadávám cestu, soubor přetáhnu do terminálu, cesta je správně... Jak jsem psal, když je složka s programem přímo v adresáři "Domů" tak to funguje, když je program ještě ve složce např. /Domů/Programy/serviio, tak to nefunguje...
-
To prostě není možné - není k tomu žádný důvod. Odstraň z názvů v celé cestě diakritiku, mezery nahraď podtržítkem.
-
Napiš konkrétní příklad, jinak ti nelze pomoci.
Dej sem text spouštěče, a výpis adresáře, ve kterém ten program je:
cd ~/adresář_s_programem
ls -l
-
Dobře, promiňte za zpoždění dostal jsem se k tomu až ted...
Chci spustit například serviio, spouštěč je v /home/martin/Program Files/Nástroje- editory/serviio-1.5.2/binVýpis adresáře, ve kterém program je: martin@ASRock-desktop:~$ cd '/home/martin/Program Files/Nástroje- editory/serviio-1.5.2'
martin@ASRock-desktop:~/Program Files/Nástroje- editory/serviio-1.5.2$ ls -l
celkem 100
drwxr-xr-x 2 martin martin 4096 kvě 20 21:01 bin
drwxr-xr-x 2 martin martin 4096 kvě 10 17:31 config
drwxr-xr-x 2 martin martin 4096 kvě 10 17:31 legal
drwxr-xr-x 2 martin martin 4096 kvě 10 17:31 lib
drwxr-xr-x 5 martin martin 4096 kvě 10 17:31 library
-rw-r--r-- 1 martin martin 3255 dub 8 21:35 LICENCE.txt
drwxr-xr-x 2 martin martin 4096 kvě 11 17:00 log
-rw-r--r-- 1 martin martin 10900 dub 8 21:35 NOTICE.txt
drwxr-xr-x 2 martin martin 4096 kvě 10 17:31 plugins
-rw-r--r-- 1 martin martin 4231 dub 8 21:35 README.txt
-rw-r--r-- 1 martin martin 45157 dub 8 21:35 RELEASE_NOTES.txt
martin@ASRock-desktop:~/Program Files/Nástroje- editory/serviio-1.5.2$Text spouštěče, (vytvořil jsem malý skript, který spustí jak serviio.sh tak serviio-console.sh: '/home/martin/Program Files/Nástroje- editory/serviio-1.5.2/bin/serviio.sh' & '/home/martin/Program Files/Nástroje- editory/serviio-1.5.2/bin/serviio-console.sh' Text z terminálu po pokusu spuštění skriptu: martin@ASRock-desktop:~$ '/home/martin/Program Files/Nástroje- editory/serviio-1.5.2/bin/serviio.sh' & '/home/martin/Program Files/Nástroje- editory/serviio-1.5.2/bin/serviio-console.sh'
[1] 22300
basename: nadbytečný operand „editory/serviio-1.5.2/bin/serviio-console.sh“
Více informací získáte příkazem „basename --help“.
basename: nadbytečný operand „editory/serviio-1.5.2/bin/serviio.sh“
Více informací získáte příkazem „basename --help“.
Error: Could not find or load main class org.serviio.MediaServer
Error: Could not find or load main class org.serviio.console.ServiioConsole
[1]+ Ukončena 1 '/home/martin/Program Files/Nástroje- editory/serviio-1.5.2/bin/serviio.sh'
Ale jak říkám, jakmile to je ve složce "Home" tak to funguje normálně...
K tomu, že mám ty programy ve složce s názvem "Program Files", je to takový zlozvyk z Widlí :D ;)
-
Jak píše i juwa2 adresáře bez mezer, někdy to opravdu dělá problémy, v nejlepším i tu diakritiku. Osobně nepoužívám ani velká písmena, je to lepší při práci s terminálem.
-
Ano, funguje to :), jenom trošku zamrzí, že tomu vadí ta diakritika a mezery... Jinak díky moc ;)
-
Proboha co tě vedlo k takovémuto adresáři.
/home/martin/Program Files/Nástroje- editory/Už i Microsoft přišel na to, že to je blbost, akorát neví jak se toho zbavit.
Ano, funguje to :), jenom trošku zamrzí, že tomu vadí ta diakritika a mezery... Jinak díky moc ;)
Linuxu to v podstatě nevadí, pouze se s tím složitěji pracuje. Musíš při práci s takovými adresáři dávat pozor na moc věcí, Dát cesty do uvozovek(apostrofů) nebo před každou mezerou psát backslash "\", kontrolovat kódování skriptu a filesystému, aby si odpovídalo. Sledovat jestli jsem nepopletl malá a velká písmena.... A určitě ještě mnoho dalších věcí, které mě teď zrovna nenapadají... Navíc je to zbytečně dlouhé...
Vždyť by stačilo třeba jen:
~/programs/editors/
-
Jop, takhle jsem to nějak překopal...
-
V obou těch tvých spouštěcích skriptech je chyba v nepoužití uvozovek při práci s cestou ke skriptu. Budeš tam mít pravděpodobně něco jako:
basename ${BASH_SOURCE[0]}
basename $(pwd)místo
basename "${BASH_SOURCE[0]}"
basename "$(pwd)"tudíž shell při výskytu mezery cestu rozdělí na více částí a ty předá příkazu basename jednotlivě, místo vcelku. Určitě je lepší začít tady, než špatnému kódu přizpůsobovat vstypy. I tak je třeba se v názvech adresářů a souborů vyvarovat některých speciálních znaků, které použitý shell expanduje i ve dvojitých uvozovkách, jako například ten string "$" a samozřejmě jakékoli uvozovky.