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/
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?
Č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í.
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.
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/*
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.
Citace od: nobody kdy 20. 04. 2015, 22:25:13
# 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
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...