Obcování s ďáblem 7: Samá voda, přihořívá, hoří! - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

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:

Soutěž

Sponzorem soutěže je:

IDIF

 

Odkud pochází fotografka Anne Erhard?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



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):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Tipy a Triky  

 » Rubriky  » Začínáme s  

 » Rubriky  » Software  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: