Fórum Root.cz
Hlavní témata => Server => Téma založeno: vana-hb 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/
-
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.
-
# 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...