Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
Podmínky pro práci se soubory
1. srpna 2002, 00.00 | Minule jsme si ukázali základní podmínkové příkazy, využívané jako součást příkazu if. Dnes si doplníme několik dalších podmínek, jež umožňují bohatou a pohodlnou práci se soubory.
Minule jsme si ukázali základní podmínkové příkazy, využívané jako součást příkazu if. Dnes si doplníme několik dalších podmínek, jež umožňují bohatou a pohodlnou práci se soubory."Souborové" podmínky mají všechny stejný formát, podobný unárnímu operátoru -z pro ověření, zda je textový řetězec neprázdný:
[[ -podmínka soubor ]]
Mezi nejčastěji používané podmínky patří:
- -f, ověření existence běžného souboru;
- -d, ověření existence složky;
- -h, ověření existence (soft)linku;
- -r, ověření čitelnosti souboru;
- -w, ověření možnosti měnit obsah souboru;
- -x, ověření spustitelnosti souboru;
- -s, ověření neprázdnosti souboru;
- -O, ověření zda jsem vlastníkem souboru.
První tři podmínky ověří, zda zadaný objekt existuje, a zda je požadovaného typu:
1 ~> if [[ -f /mach_kernel ]] then echo OK ; fi
OK
2 ~> if [[ -d /tmp ]] then echo OK ; fi
OK
3 ~> if [[ -h /tmp ]] then echo OK ; fi
OK
4 ~>
Snad nejtypičtějším využitím je ověření, zda existuje složka, do které chceme ve skriptu ukládat nějaké soubory.
Další trojice podmínek přesně odpovídá nám už dávno známým třem bitům rwx z přístupových práv:
8 ~> ls -l /mach_kernel
-rw-r--r-- 1 root wheel 3152396 Oct 30 2001 /mach_kernel
9 ~> if [[ -r /mach_kernel ]] then echo OK ; else echo Nene ; fi
OK
10 ~> if [[ -w /mach_kernel ]] then echo OK ; else echo Nene ; fi
Nene
11 ~> if [[ -x /mach_kernel ]] then echo OK ; else echo Nene ; fi
Nene
12 ~>
Předposlední podmínka umožní snadno ověřit, zda je délka souboru nulová nebo ne (neexistující soubor se přitom logicky považuje také za soubor s "nulovou délkou"):
22 /tmp> ls foo
ls: foo: No such file or directory
23 /tmp> if [[ -s foo ]] then echo Neco tam je ; else echo prazdny ; fi
prazdny
24 /tmp> touch foo
25 /tmp> if [[ -s foo ]] then echo Neco tam je ; else echo prazdny ; fi
prazdny
26 /tmp> echo "Foo" > foo
27 /tmp> if [[ -s foo ]] then echo Neco tam je ; else echo prazdny ; fi
Neco tam je
28 /tmp>
Poslední z podmínek pak zjistí, zda ten, kdo příkaz if volal (tj. uživatel, který spustil daný skript) je nebo není vlastníkem souboru:
28 /tmp> if [[ -O foo ]] then echo Muj ; else echo Cizi ; fi
Muj
29 /tmp> if [[ -O /mach_kernel ]] then echo Muj ; else echo Cizi ; fi
Cizi
30 /tmp> su
Password:
1 /tmp# if [[ -O foo ]] then echo Muj ; else echo Cizi ; fi
Cizi
2 /tmp# if [[ -O /mach_kernel ]] then echo Muj ; else echo Cizi ; fi
Muj
3 /tmp#
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová