Hledßte obΦas klφΦe, br²le, hlavu a podobn∞? Pak se vßm urΦit∞ n∞co podobnΘho stane i p°i prßci s Linuxem. Prost∞ budete pot°ebovat najφt soubor nebo text. Abyste nemuseli nazda°b∙h prochßzet disk a prohlφ₧et si ka₧d² soubor, staΦφ vßm mßlo û p°eΦφst si dneÜnφ Φlßnek.
Pro hledßnφ informacφ, o kter²ch vφte, ₧e jsou na disku, ale nevφte p°esn∞ kde, slou₧φ mimo jinΘ dva velice u₧iteΦnΘ p°φkazy û find a grep.
Hledßnφ v souborech
Find slou₧φ k hledßnφ soubor∙ podle jmΘna a je schopen soubory nejen najφt, ale takΘ spustit libovolnou akci a p°edat jφ jmΘno nalezenΘho souboru jako parametr. ZaΦneme nejjednoduÜÜφm zp∙sobem jeho pou₧itφ:
find . -name brejle
Tento zßpis vyvolß prohledßnφ aktußlnφho adresß°e (.) a jeho podadresß°∙ a v²pis cesty k souboru brejle. HledanΘ jmΘno souboru m∙₧e obsahovat ne·pln∞ zadanΘ jmΘno, kde n∞kterΘ znaky nahradφme "₧olφky" û znaky *,?. V r∙zn²ch p°φkazov²ch interpretech majφ * nebo ? zvlßÜtnφ v²znam. Proto je nutnΘ zajistit, aby se znaky dostaly a₧ k p°φkazu find, kter² s nimi mß pracovat. Pak to m∙₧e vypadat nap°φklad takto:
find . -name \*penguin.gif
nebo
find . -name "*penguin.gif"
Pokud si nejsme jisti, zda se v nßzvu vyskytujφ malß nebo velkß pφsmena, napφÜeme mφsto -name -iname.
Prohledßvßnφ vÜech podadresß°∙ m∙₧e trvat hodn∞ dlouho, proto je mo₧nΘ pou₧φt n∞kterΘ z p°epφnaΦ∙ pro up°esn∞nφ prohledßvanΘho prostoru.
find . -name soubor -mindepth 2 -maxdepth 4
Takto find pracuje a₧ se soubory od ·rovn∞ vno°enφ 2 a nezajφmß se o obsah adresß°∙ na ·rovnφ v∞tÜφ ne₧ 4.
Soubory lze vyhledßvat i podle jin²ch kritΘriφ ne₧ jmΘna, nap°φklad podle skupiny, do kterΘ soubor pat°φ (-group), Φasu poslednφ zm∞ny (-ctime), p°φstupov²ch prßv (-perm) a mnoha dalÜφch.
S nalezen²mi soubory je mo₧nΘ dßle pracovat pomocφ parametr∙ p°φkazu find. Asi nejpou₧φvan∞jÜφ jsou t°i z nich: -exec, -ok a r∙znΘ varianty parametru -print.
Pomocφ -exec m∙₧eme spustit libovoln² jin² program a p°edat mu jmΘno nalezenΘho souboru jako parametr.
find . -name "*.txt" -exec head \{\} \;
VypφÜe prvnφch 10 °ßdk∙ ka₧dΘho nalezenΘho textovΘho souboru (p°φkaz head). P°edßnφ jmΘna nalezenΘho souboru je zprost°edkovßno zßpisem {}, parametr exec se ukonΦuje st°ednφkem. Zp∞tnß lomφtka zajiÜ¥ujφ, ₧e se je p°φkazov² interpret nepokusφ zpracovat a p°edß je p°φmo p°φkazu find.
N∞kterΘ akce vyvolßvanΘ pomocφ parametru -exec mohou b²t destruktivnφ a budeme asi chtφt, aby bylo mo₧nΘ u ka₧dΘho nalezenΘho souboru rozhodnout, mß-li se p°φkaz vykonat. K tomu slou₧φ parametr -ok. P°ed ka₧dou akcφ se vßs zeptß, jestli chcete p°φkaz pro nalezen² soubor vykonat.
find . -name "*.txt~" -ok rm \{\} \;
Find toho umφ jeÜt∞ daleko vφc. DoporuΦuji vßm vyzkouÜet si uvedenΘ p°φklady, dalÜφ inspiraci m∙₧ete hledat nap°φklad v manußlovΘ strßnce.
P°i hledßnφ se m∙₧e hodit mo₧nost prohledat nalezen² soubor a zjistit, vyskytuje-li se v n∞m hledan² °et∞zec znak∙. K tomu slou₧φ p°φkaz grep, kter² je samoz°ejm∞ mo₧nΘ pou₧φt i samostatn∞. Hledß se jφm v²skyt °et∞zce znak∙ v souboru nebo vφce souborech.
grep banßn *
VypφÜe jmΘna soubor∙, kterΘ obsahujφ slovo banßn, a souΦasn∞ vypφÜe vÜechny °ßdky, kterΘ jej obsahujφ. Hledan² °et∞zec se zadßvß jako regulßrnφ v²raz nebo jen jako °et∞zec znak∙ (p°epφnaΦ -F).
grep -F "hv∞zdiΦka *" *.txt
V²stup je mo₧nΘ r∙zn²m zp∙sobem formßtovat. Nejb∞₧n∞jÜφ jsou p°epφnaΦe -A (after) a -B (before), pomocφ kter²ch zv∞tÜφte vypisovanou Φßst souboru o n∞kolik °ßdk∙ za, resp. p°ed nalezen²m v²razem.
grep -B 2 -A 5 slova *.txt
VypφÜe 2 °ßdky p°ed a 5 °ßdk∙ za ka₧d²m °ßdkem obsahujφcφm v²raz slova.
Grep se dß pou₧φt v kombinaci s find k prohledßvßnφ nalezen²ch soubor∙.
find . -name \*.txt -exec grep Linux \{\} \; -print
Nalezne vÜechny textovΘ soubory a vyhledß v nich slovo Linux. Za v²pis °ßdk∙ s nalezen²m textem vytiskne jmΘno souboru (-print).
Struktura adresß°∙ Linuxu
Jako ka₧d² operaΦnφ systΘm mß i Linux pravidla, kterß °φkajφ, kam se majφ umφstit soubory, kterΘ tvo°φ systΘm. KonfiguraΦnφ soubory platnΘ pro cel² systΘm pat°φ nap°φklad do adresß°e /etc, specißlnφ soubory do /dev a u₧ivatelskΘ adresß°e do /home. Zatφmco prvnφ dva p°φpady jsou striktn∞ vy₧adovßny, umis¥ovßnφ domovsk²ch adresß°∙ u₧ivatel∙ do /home u₧ povinnΘ nenφ. Podobn²ch nepovinn²ch zvyklostφ je hodn∞ a jejich nepovinnost p∙sobφ problΘmy p°i p°enßÜenφ dat a aplikacφ mezi jednotliv²mi distribucemi.
Aby se p°edeÜlo nedorozum∞nφm, vznikl v rßmci projektu LSB popis struktury adresß°∙ souborovΘho systΘmu Linuxu, nazvan² Filesystem Hierarchy Standard (FHS). Dnes jej dodr₧ujφ tΘm∞° vÜechny distribuce Linuxu a jeho znalost uÜet°φ hodn∞ Φasu jinak strßvenΘho pßtrßnφm po r∙zn²ch souborech. V²jimkou je bohu₧el takΘ distribuce Red Hat, na kterou se v naÜem serißlu zam∞°ujeme. Zßkladnφ rozlo₧enφ soubor∙ ale dodr₧uje. Bude jist∞ u₧iteΦnΘ projφt si zßkladnφ strukturu adresß°∙ a zφskat p°ehled o rozlo₧enφ soubor∙ na disku s Linuxem.
Ko°enov² adresß° neboli / je hlavnφm rozcestnφkem ve vÜech Unixech. N∞kdy je p°φmo v / umφst∞no jßdro operaΦnφho systΘmu v souboru vmlinuz, Φast∞ji ale bude v adresß°i /boot.
V /boot jsou soubory urΦenΘ pro startovßnφ operaΦnφho systΘmu, tedy hlavn∞ jßdro. D∙vodem pro vznik samostatnΘho startovacφho adresß°e je v²jimeΦnost startovacφho procesu. N∞kterΘ boot managery vy₧adujφ specißlnφ umφst∞nφ startovacφch soubor∙ na disku, nebo dokonce nutφ u₧ivatele, aby m∞l startovacφ soubory na primßrnφm master disku. ╪eÜenφm je mal² oddφl, kter² se p°ipojuje do struktury systΘmu soubor∙ jako /boot.
V /etc sφdlφ konfiguraΦnφ soubory pro operaΦnφ systΘm a vÜechny programy. TextovΘ konfiguraΦnφ soubory z /etc vyu₧φvajφ i nadstavbovΘ programy typu linuxconf, tak₧e si m∙₧ete v²sledky jejich prßce na vlastnφ oΦi zkontrolovat. VelkΘ systΘmy typu X Window nebo Corba vy₧adujφ vφce konfiguraΦnφch soubor∙ a zbyteΦn∞ by vznikal chaos v hlavnφm adresß°i /etc, proto majφ v∞tÜinou svΘ vlastnφ podadresß°e (/etc/X11 apod.)
K uchovßvßnφ zßkladnφch p°φkaz∙ slou₧φ /bin a /sbin. Zatφmco p°φkazy z /bin slou₧φ vÜem, /sbin je urΦen pro "nebezpeΦnΘ" povely, kterΘ pou₧φvß administrßtor systΘmu. Tento systΘmov² diktßtor je natolik d∙le₧itß pers≤na, ₧e mß p°φmo v ko°enovΘm adresß°i sv∙j vlastnφ adresß° û /root. Ostatnφ smrtelnφci se musejφ spokojit s adresß°em /home, kde jim root vytvo°φ podadresß°.
D∙kazem platnosti jednΘ z klasick²ch unixov²ch pouΦek, ₧e vÜechno je soubor, je adresß° /dev. Sφdlφ zde specißlnφ soubory, kterΘ systΘmu zp°φstup≥ujφ perifernφ za°φzenφ, jako jsou disky, sΘriovΘ a jinΘ porty, zvukovΘ karty apod.
V /lib naleznete zßkladnφ sdφlenΘ knihovny a v /lib/modules linuxovou specialitu, moduly û Φßsti k≤du jßdra, kterΘ nejsou pot°ebnΘ neustßle, a proto mohou b²t ulo₧eny na disku mφsto v pam∞ti poΦφtaΦe.
Poslednφ nad∞jφ po zhroucenφ systΘmu, p°esn∞ji havßrii disku, je /lost+found. Sem se umis¥ujφ soubory, kterΘ katastrofu nep°e₧ily v nejlepÜφm stavu û Φasto je to lepÜφ ne₧ ·plnß ztrßta dat.
Adresß° /mnt slou₧φ k doΦasnΘmu p°ipojovßnφ disk∙, typicky diskety (/mnt/floppy) a CD-ROM (/mnt/cdrom).
Do /tmp si rad∞ji nic neodklßdejte. Je to doΦasn² uklßdacφ prostor, kter² se p°i startu systΘmu Φasto ma₧e.
Struktura /usr p°ipomφnß samotn² / û pou₧φvß se pro u₧ivatelskß data a aplikace. ╚asto je /usr v rßmci sφt∞ sdφlen², a proto by m∞l obsahovat jen statickß data. Prßv∞ proto, ₧e se Φasto p°ipojuje k vφce poΦφtaΦ∙m, musφ obsahovat celou aplikaci vΦetn∞ jejφ konfigurace û proto tolik p°ipomφnß ko°enov² adresß°.
K uklßdßnφ prom∞nn²ch dat pou₧φvajφ programy adresß° /var. Slou₧φ tΘ₧ ke sdφlenφ prost°edk∙, nap°φklad tiskßrny (/var/spool/lpd) nebo mailu (/var/spool/mail). Je takΘ mφstem, kam se budete dφvat, kdy₧ n∞co nebude fungovat tak, jak mß. Adresß° /var/log toti₧ pou₧φvajφ aplikace pro archivaci ·daj∙ o svΘm b∞hu. P°i prßci systΘmu m∙₧ete nap°φklad p°φkazem tail -f /var/log/messages sledovat zßpisy program∙, kterΘ na poΦφtaΦi pracujφ (vypisovßnφ ukonΦφte stiskem Ctrl+C).
Jakousi brßnou do jßdra Linuxu je /proc, kter² pou₧φvajφ Φasto i programy poskytujφcφ informace o zatφ₧enφ systΘmu. P°i instalaci nov²ch za°φzenφ mohou b²t u₧iteΦnΘ zejmΘna soubory /proc/interrupts a /proc/ioports.
To je pro dneÜek vÜe. Doufßm, ₧e si po dneÜnφm pokraΦovßnφ naÜeho serißlu nebudete v Linuxu p°ipadat tak ztraceni.