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

Název: Jakoby soubor/adresář neexistoval.
Přispěvatel: 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...
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: juwa2 18 Května 2015, 21:38:16
Jak ho spouštíš?
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: McKay 18 Května 2015, 21:44:08
Spoustěl jsem ho ted pro odzkoušení v terminálu... jinak používám spouštěče...
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: juwa2 18 Května 2015, 21:48:36
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).
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: McKay 18 Května 2015, 21:49:48
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...
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: juwa2 18 Května 2015, 22:03:34
To prostě není možné - není k tomu žádný důvod. Odstraň z názvů v celé cestě diakritiku, mezery nahraď podtržítkem.
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: Myrmica 19 Května 2015, 06:55:51
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:
Kód: [Vybrat]
cd ~/adresář_s_programem
ls -l
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: McKay 20 Května 2015, 21:07:26
Dobře, promiňte za zpoždění dostal jsem se k tomu až ted...
Chci spustit například serviio, spouštěč je v
Kód: [Vybrat]
/home/martin/Program Files/Nástroje- editory/serviio-1.5.2/binVýpis adresáře, ve kterém program je:
Kód: [Vybrat]
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:
Kód: [Vybrat]
'/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:
Kód: [Vybrat]
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 ;)
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: Jogi 20 Května 2015, 21:42:41
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.
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: McKay 20 Května 2015, 21:49:23
Ano, funguje to  :), jenom trošku zamrzí, že tomu vadí ta diakritika a mezery... Jinak díky moc  ;)
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: Myrmica 20 Května 2015, 23:05:05
Proboha co tě vedlo k takovémuto adresáři.
Kód: [Vybrat]
/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:
Kód: [Vybrat]
~/programs/editors/
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: McKay 21 Května 2015, 05:20:06
Jop, takhle jsem to nějak překopal...
Název: Re:Jakoby soubor/adresář neexistoval.
Přispěvatel: GdH 21 Května 2015, 10:05:13
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:
Kód: [Vybrat]
basename ${BASH_SOURCE[0]}
basename $(pwd)
místo
Kód: [Vybrat]
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.