Lomítka v adresářové cestě

Lomítka v adresářové cestě
« kdy: 20. 04. 2015, 20:58:16 »
Zdravím,
mám dotaz na nutnost-nenutnost psaní lomítek v cestě k adresáři. Pochopil jsem, že lomítko před cestou značí že cesta je z rootu a bez lomítka z aktuálního adresáře. Ale co lomítko za adresářem? Řekl bych, že příkaz funguje s nim i bez něho. Je nějaký doporučený způsob jestli psát a nebo ne?
Dík moc.

Jde mi třeba o příklad kde bych řekl, že funguje oboje
cd /etc/cron.d
cd /etc/cron.d/

cp -r /zalohy/* /mnt/disk
cp -r /zalohy/* /mnt/disk/

umount /mnt/disk
umount /mnt/disk/


Re:Lomítka v adresářové cestě
« Odpověď #1 kdy: 20. 04. 2015, 21:11:45 »
Jestli ti to udělá radost, tak ve většina programů, které jsem psal, lomítko na konci cesty značí, že cesta vede na adresář (složku), zatímco pokud tam lomítko chybí, jedná se o jméno souboru. Má to vliv na odvozování například relativní cesty. Ale jestli to je stejný případ tady?


Peter

Re:Lomítka v adresářové cestě
« Odpověď #2 kdy: 20. 04. 2015, 21:36:01 »
Človek si veľmi jednoducho uvedomí načo slúži lomítko na konci cesty ak napríklad triedi fotky a cieľ (adresár, folder) kam ich presúva neexistuje. Vytvorí sa z poslednej fotky, a ostatné sa stratia. Ak by tam to lomítko bolo a cieľ by neexistoval, tak presun zlyhá a nič sa nestratí.

Kit

Re:Lomítka v adresářové cestě
« Odpověď #3 kdy: 20. 04. 2015, 21:46:13 »
Jednou jsem tam to lomítko na konec nedal. Nebyl to adresář, ale symbolický link na něj. Nadělalo mi to slušnou paseku a od té doby si to hlídám.

nobody

Re:Lomítka v adresářové cestě
« Odpověď #4 kdy: 20. 04. 2015, 22:25:13 »
vyznam psat lomitko je tehdy pokud se muze jednat o soubor nebo adresar a chces to jasne rict ze jde o adresar

# netreba, protoze "cd do souboru" nelze
cd /etc/cron.d

# neni sice nutne, ale rozhodne vhodne, jak pise Peter, pri neexistenci ciloveho adresare se zauvazuje jako cilovy soubor
cp -r /zalohy/* /mnt/disk/

# netreba, neodpojujes adresar, ale mountpoint (pripadne jmeno zarizeni, jmeno image...)
umount /mnt/disk
umount /dev/disk

dalsi priklad treba u rsync

# bez / by v kam byl adresar odkud
rsync /odkud /kam

# v kam by byl rovnou obsah adresar odkud
rsync /odkud/* /kam

priklad rm
# smazani obsahu adresare neco i vcetne neco
rm -R /nekde/neco

# smazani pouze obsahu adresare neco
rm -R /nekde/neco/*


Re:Lomítka v adresářové cestě
« Odpověď #5 kdy: 21. 04. 2015, 19:05:29 »
Lomitka na konci jsou potreba zejmena pri psani velych skriptu. Uz nekolikrat jsem si neco takto smazal, nebo neco v rozsahlem bash skriptu nefungovalo. Vetsinou to funguje i bez neich, problem ale nastava v jiz zminenych pripadech a ze jich je.

Re:Lomítka v adresářové cestě
« Odpověď #6 kdy: 21. 04. 2015, 19:22:41 »
# neni sice nutne, ale rozhodne vhodne, jak pise Peter, pri neexistenci ciloveho adresare se zauvazuje jako cilovy soubor
cp -r /zalohy/* /mnt/disk/

# bez / by v kam byl adresar odkud
rsync /odkud /kam

# v kam by byl rovnou obsah adresar odkud
rsync /odkud/* /kam
A němelo by být lomítko za /kam (tedy /kam/) v příkladu s rsynch?? Přijde mi to podobný případ jako to cp. D

nobody

Re:Lomítka v adresářové cestě
« Odpověď #7 kdy: 21. 04. 2015, 21:37:32 »
logicky ano, ale neni potreba, rsync narozdil od cp (nebo mv) bere cil vzdy jako adresar a pokud neexistuje tak ho vytvori(je jedno jestli cil konci nebo nekonci lomitkem)...

vyjimka je pouze pokud zdroj = 1 soubor, pak se jako cil zauvazuje soubor a zdrojovy soubor se prejmenuje na cil, pokud by zdroj byl 1 soubor a cil byl zakoncen lomitkem, vytvori se adresar a do nej se syncne zdroj o puvodnim nazvu...