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
Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
6. září 2001, 00.00 | Čím více souborů, čím složitější systém, tím častěji se stává, že něco hledáme a nemůžeme najít.
Čím více souborů, čím složitější systém, tím častěji se stává, že něco hledáme a nemůžeme najít. Pokud je to soubor, jehož jméno (nebo alespoň část jména) známe, je nejjednodušší použít příkaz locate:
174 /tmp> locate NSScan
/System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSScanner.h
/System/Library/Frameworks/Foundation.framework/Versions/C/ Resources/English.lproj/Documentation/Reference/ObjC_classic/Classes/NSScanner.html
175 /tmp>
Vzhledem k tomu, že locate hledá soubory všude (ve všech složkách, na všech discích...), často se nám stane, že pro obecnější jméno dostaneme příliš mnoho výsledků — např. příkaz "locate Terminal" vrátí na mém systému skoro 800 řádků. Pro omezení však můžeme s výhodou využít "triky" pro specifikaci jména souboru, jež jsme se naučili u příkazu ls:
178 /tmp> locate "*Terminal[1-4]*" /Local/Users/ocs/Text/MujMac/Terminal/Terminal_02/HTML/Terminal2.html /Local/Users/ocs/Text/MujMac/Terminal/Terminal_02/Terminal2.txt /Local/Users/ocs/Text/MujMac/Terminal/Terminal_03/Terminal3.html /Local/Users/ocs/Text/MujMac/Terminal/Terminal_03/Terminal3.txt /Local/Users/ocs/Text/MujMac/Terminal/Terminal_04/Terminal4.html /Local/Users/ocs/Text/MujMac/Terminal/Terminal_04/Terminal4.txt 179 /tmp>
Jen je třeba si uvědomit, že vyhledávaným textem není jen vlastní jméno souboru, ale celá jeho cesta — proto jsme museli použít hvězdičku na začátku, jinak by se nenašlo nic. A, samozřejmě, jistě už každý ví, proč jsme použili uvozovky?
Příkaz locate je velice, velice rychlý: používá totiž indexy, které jsou automaticky udržovány na disku. To samozřejmě znamená, že někdy se může stát, že indexy neodpovídají skutečnému obsahu disku; speciálně tomu tak může být u nedávno vytvořených souborů:
187 /tmp> touch blbost 188 /tmp> ls -l blbost -rw-r—r— 1 ocs wheel 0 Aug 24 14:04 blbost 189 /tmp> locate blbost 190 /tmp>
V praxi to obvykle nevadí, protože většinou hledáme "dávno zapomenuté" soubory, které měly dost času se do indexů dostat. Je jen zapotřebí mít toto omezení na paměti v případě, že příkaz locate nenašel, co měl.
Pro hledání souborů, obsahujících požadovaný text, slouží příkaz grep. Prozatím si ukážeme jen jeho nejjednodušší využití (později se k němu ještě vrátíme) — pak je prvním argumentem vyhledávaný text, a za ním následuje seznam souborů, jež se mají prohledat. Chceme-li se např. podívat, kolik a jakých funkcí typu "NSStringToClass" lze najít v hlavičkových souborech Apple, můžeme zkusit
216 /System/Library/Frameworks> grep NSStringFrom *.framework/Headers/*.h
Foundation.framework/Headers/NSGeometry.h:FOUNDATION_EXPORT NSString *NSStringFromPoint(NSPoint aPoint);
Foundation.framework/Headers/NSGeometry.h:FOUNDATION_EXPORT NSString *NSStringFromSize(NSSize aSize);
Foundation.framework/Headers/NSGeometry.h:FOUNDATION_EXPORT NSString *NSStringFromRect(NSRect aRect);
Foundation.framework/Headers/NSHashTable.h:FOUNDATION_EXPORT NSString *NSStringFromHashTable(NSHashTable *table);
Foundation.framework/Headers/NSMapTable.h:FOUNDATION_EXPORT NSString *NSStringFromMapTable(NSMapTable *table);
Foundation.framework/Headers/NSObjCRuntime.h:FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);
Foundation.framework/Headers/NSObjCRuntime.h:FOUNDATION_EXPORT NSString *NSStringFromClass(Class aClass);
Foundation.framework/Headers/NSRange.h:FOUNDATION_EXPORT NSString *NSStringFromRange(NSRange range);
217 /System/Library/Frameworks>
Mimochodem, pro vyhledávání řetězce bez ohledu na malá a velká písmena slouží přepínač -i ("case Insensitive").
Na co se můžeme těšit?
Jak jsme si slíbili minule, příště se pustíme do práce s programy: vysvětlíme si, jak z shellu program spustit, jaké možnosti a triky máme k dispozici, a podobně.
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á