You are on page 1of 273

Operan

systm Vil m Vy ch o d il

Zklady idetai
ly
ovldn systmu

Ui
vatel, soubory,
pro cesy, st

Pkaz ov i
nterpret,
textov igrafick
rozhran

Pr ce v eskm
prosted
Operan
systm

Pruka eskho uivatele

Vilm Vychodil
Touto knihou se dostv uivatelm operaniho systmu Unux do rukou pr (*1979) je asistentem na katede informatiky
vodce, kter neohromuje rozsahem ani tloukou, ale obsahuje ve potebn University Palackho v Olomouci. Zde se mi
pro kadho, kdo chce samostatn ovldat prci na svm poitai a rozumt mo jin vnuje sprv systmu GNU/Unux
pitom tomu, co provdi. Text je orientovn vlun uivatelsky - a dvod je na nkolika ser verech rznch hardwaro
prost: dobr sprvce systmu mus bYt pedevm dobrm uvatelem. vch platforem. Jeho odborn zjmy se up
naji k metodm formalizace a zpracovn ne
ten v knize najde vysvtleni funknch princip, stejn jako efektivni
uritosti a t na logick a funkcionln pro
postupy pro nejrznj typy innosti. Strun z obsahu:
gramovni. Ve volnm ase se snai pisp
Exkurze do historie Unixu a Unuxu
vat k rozvoji a ieni open-source softwaru.
Zklady prce a orientace v systmu
Organizace dat na disku, pstupov prva
Systm proces a spoutn uivatelskch loh
Zaazen publikace:
Monosti interpretu pkazu, vytven skript
Zpracovn textu v obslunch programech, filtrech a editorech, vetn vi odbornk
a Emacsu
Prce v sovm prosted: IP-sit, protokoly TCP/IP, sluba DNS
Elektronick pota, komunikan sluby, penos dat
Grafick rozhrani X Window System, vzdlen spoutni klient

Kad z kapitol zan osvtlenm potebn teoretick vbavy, dky n se te


ni asto otevr pohled do nitra systmu a zskv tak pevnou pdu pod no Computer Press, a.s.
hama pro praktick vyuit obslunch program. Autor nechv prostor pro Nm. 28. dubna 48,
vlastnorun vyzkouen zskanch poznatk a experimenty. 63500 Brno
Knihu lze st bu od zatku do konce a osvojovat si tak postupn Objednvejte na:
schopnosti Unuxu, stejn tak ale lze nalistovat tma, je chce ten poznat www.knihy.cpress.cz
dokonaleji, nebo pouze vyhledat potebn nstroj i funkci. Rychlmu naleze distribuce@cpress.cz
n vydatn napomh obshl, precizn zpracovan rejstik. V knize eskho Bezplatn telefonn linka:
autora se tak odr pochopen problm samostatn pracujciho uivatele, 800555 513
napklad spolehliv nastaven systmu pro sprvn zobrazen a penos textu
s diakritickmi znamnky.

"Knihu Vilma Vychodila znam ji od prvnich verzi, kter iil mezi kolegy. Teh
dy, stejn jako ted, lo o publikaci u nas zcela ojedinlou, a to nejen kvalitou zpra
ISBN 80-7226-333-1
covani, ale i pistupem k problematice. Cilem autora toti neni pedvst Linux v okil PRODEJN KD K0866
zalm Mvu, jak to s oblibou ini vrobci komernich distribuci, ale seriozn ped
doporuen cena
stavit Linux jakoto systm unixovho typu se vemi vhodami, kter plynou pede
vim z klasickho zpsobu prace v textovm reimu. 269 K
Ve velmi systematickm vkladu najdete vyvilen mnostvi piklad, zkue 404 Sk
nosti z praxe i dostatek teorie pro dkladn pochopeni vysvtlovanch tmat. Do
provazet vas bude autorv pehled i nadhled, proloen petkou odmenho hu

I
moru. Doporuuji knihu vem, kdo chtji svj Linux pochopit a ovlildat stejn dob
e jako on."

- Ivan Bbr, Mandrake. cz.

978807
Operan systm Linux
Pruka eskho uivatele
Vilm Vychodil
Copyright Computer Press 2003. Vydn prvn. Vechna prva vyhrazena.
Vydavatelstv a nakladatelstv Computer Press,
Nm. 28. dubna 48, 635 00 Brno, http://www.cpress.cz

ISBN 80-7226-333-1

Prodejn kd: K0866

Odborn korektura: Ivan BO)r Rejstk: Vilm Vychodil


Jazykov korektura: Petra Lnkov Technick spoluprce: Ji Matouek, Petr Klma,
Vnitn prava: Vilm Vychodil Petr Chldek, Mirek Zachrdle
Sazba: Vilm Vychodil Odpovdn redaktor: Ivo Magera
Oblka: Martin Sodomka Technick redaktor: Ji Matouek
Koment na zadn stran oblky: Ivan Bhr, Produkce: Petr Bal
Ivo Magef'd

Kniha me obsahovat nzvy produkt, kter mohou bt ochrannmi znmkami nebo zapsanmi
ochrannmi znmkami pslunch vlastnk.

dn st tto publikace nesm bt publikovna a ena dnm zpsobem


a v dn podob bez vslovnho svolen vydavatele.

Computer Press, a.s., Nm. 28. dubna 48, 635 00 Brno


tel.: 546 122 111, fax: 546 122 112
Objednvejte na: www.knihy.cpress.cz
distribuce@cpress.cz
Bezplatn telefonn linka: 800 555 513

Dotazy k vydavatelsk innosti smujte na: knihy@cpress.cz


Objednvat mete na adresch vydavatelstv nebo pmo na: www.knihy.cpress.cz

Mte-li zjem o pravideln zasln informac o kninch novinkch do Va e-mailov schrnky,


zalete nm jakoukoli, i przdnou zprvu na adresu novinky@cpress.cz.

k nihy@cpressocz

vttava .cz t.U


intetneIoII
obchod
http://www.vltava.cz

Nejir nabdka literatury, hudby, MP3, Vae dotazy, vzkazy, nmty, pipomnky ke knin
multimedilnl10 softwaru a videa za produkci Computer Press pijm 24 hodin denn
bezkonkurenn ceny. nae hork linka: knihy@cpress.cz
x

Obsah
vod xi

1. Zkladn pojmy, historie systm 1


Ll. Operan systm . . . . 1
1 .2. Historie systmu Unix 3
1 .3. Zkladn rysy Unixu 5
1 .4. vvoj systmu Linux . 8
1 .5. Linux a softwarov distribuce 9

2. Zklady prce v systmu 13


2.1. Vstup uivatele do systmu . . . . . . . 13
2.2. Prvn kroky v systmu . . . . . . . . . . 16
2.3. Zkladn pkazy a obslun programy 18
2.4. Systmov dokumentace . . . . . . . . . 21

3. Souborov systm 25
3.1. Architektura souborovho systmu v Unixu 27
3.2. Obyejn soubory a adrese . . . 28
3.3. Speciln adrese a relativn cesta 31
3.4. Speciln soubory . . . . . 41
3.5. Odkazy . . . . . . . . . . . . . 45
3.6. Tradin pstupov prva . . 47
3.7. zen pstupu pomoc ACL 56
3.8. Sdlen diskovho prostoru 61
3.9. Zkladn adresov struktura systmu 62

4. Systm proces 67
4. 1 . Vznik proces a jejich organizace 68
4.2. Ze ivota procesu . . . . . . . 69
4.3. Ukonen ivota procesu . . . 76
4.4. Plnovan spoutn proces 81

5. Zklady pkazovho interpretu 85


5.1. Vykonvn pkazu 86
5.2. Pesmrovn a roury . 92
5.3. Expanze jmen soubor 99
5.4. Promnn . . . . . . . 105
5.5. dc struktury a zabudovan aritmetika 113
5.6. Vytven skriptu . . . . . 121
5.7. Poten nastaven shellu . . . . . . . . . 128
x

6. Zpracovn textu 131


6.1. Zkladn nstroje . . . . . . 133
6.2. Filtry a proudov editory . . 140
6.3. Celoobrazovkov editor vi . 150
6.4. Celoobrazovkov editor GNU Emacs 156
6.5. Podpora nrodnho prosted 167
6.6. Archivace a komprese dat . . . . . . . 172

7. Sov prosted 177


7. 1 . Protokoly TCP lIP . . . . . . . . . . . . . . . . . . . . . . . . 178
7.2. Zkladn stov sluby . . . . . . . . . . . . . . . . . . . . . 187
7.3. Sdlen uivatelskch t a vzdlen souborov systmy . 193
7.4. Elektronick pota a Network News . . . . . 196
7.5. Sluby vzdlenho pihlen a penosu dat . 207
7.6. Komunikan a informan sluby . . . . . . 215

8. Grafick sov rozhran 221


8.1. Architektura X . . . . . . . . . . . . . . . 222
8.2. Sputn X serveru a lokln pihlen . 225
8.3. Prce se vzdlenmi klienty . 230
8.4. Atributy X klient . . 234
8.5. Standardn X klienti . . . . . . 242

Literatura 247

Rejstk soubor 249

Rejstk pojm 251


xi

Uvod
Operan systm GNU/Linux je v souasnosti velmi populrn, soud nejen podle
potu rznch polemik, kter se kadm dnem objevuj v rozlinch diskusnch
klubech i na strnkch elektronickch asopis. I skaln pesimist mus v souasnosti
pipustit, e si GNU/Linux ve svt operanch systm vydobyl sv pevn msto.
S GNU /Linuxem se lze setkat od kapesnch pota, pes pracovn stanice a servery,
a k potam tdy mainframe. Pro GNU /Linux a konec konc i pro ostatn voln
iiteln operan systmy existuje nessln aplikac pokrvajcch v souasnosti
snad vechny nejdleitj oblasti nasazen vpoetn techniky. Zd se, e ve svt
operanho systmu GNU /Linux ns ek velmi slibn budoucnost.
Co s sebou nese tato popularita? Pedevm stle vt pliv novch a nadench ui
vatel z ad odbornk, profesionl, ale i laick veejnosti. Bohuel, adu uivatel
po chvli poten naden pejde a operan systm GNU /Linux pestanou pln
pouvat. Nkte nanejv zklaman uivatel dokonce zanaj proti GNU/Linuxu
intenzivn zbrojit. Dvod ztrty zjmu o systm je tm ve vech ppadech stejn
- absolutn nepochopen filosofie systmu, jeho zkladnch princip a uivatelskch
nvyk. Zvldnut prce se systmem GNU /Linux na uivatelsk rovni nen v d
nm ppad triviln a vyaduje jistou asovou investici a uivatelskou sebekze.
ada zatenk ale s tmto faktem nen seznmena a pi pokusu o bli seznmen
s operanm systmem jsou zklamni leckdy jen proto, e nevd, kde zat.
Nebezpem pro zanajc uivatele mohou bt paradoxn rozvinut grafick pro
sted KDE a GNOME, kter uivatelm umouj pracovat v systmu pouze "s my
v ruce". Orientac vhradn na grafick prosted nelze obecn nic zkazit. Na dru
hou stranu, uivatel pracujc pouze s intuitivnm grafickm prostedm vyuv jen
zlomek potencilu celho systmu, jeho styl prce se stv mnohdy neefektivnm
a operan systm GNU / Linux je tak degradovn pouze na grafick rozhran pro n
kolik oblbench aplikac. A to je bez pochyby koda. Aktivn uivatel GNU /Linuxu
mus umt eit i problmy, kter jsou za hranic prce s intuitivnm grafickm roz
hranm.
Start novkm leckdy neulehuj ani zkuen uivatel systmu. Zdaleka ne kad
uivatel je toti ochoten odpovdat na dotazy, kter mu asto pipadaj naprosto
naivistick nebo jako z pln jinho svta. Rozdl mezi zkuenm uivatelem a za
tenkem je obvykle naprosto propastn. Nezdka se stv, e se mezi obma typy
uivatel nachz komunikan vakuum - uivatel spolu nejsou schopni nalzt spo
lenou e. Co tedy doporuit zanajcmu uivateli? Rozhodn nen vhodn hned
zpotku zat st tiscistrnkov referenn pruky a objemn kompendia. Jejich
obsah je leckdy jen shrnutm dokumentace, kterou lze nalzt ve standardn instalaci
GNU / Linuxu. Jako prvn potebuje uivatel nahldnout do stylu prce a pedevm
si potebuje osvojit bn metody een rznch problm. Jedin tak bude scho
pen dle rozvjet sv schopnosti a naplno vyuvat vskutku mocn operan systm,
kterm GNU /Linux bezesporu je.
xii

tenm pedkldm prvodce problematikami prce s operacmm systmem


GNU /Linux. Text je orientovn vlun uivatelsky, nen v nm napklad roze
brna instalace nebo sprva systmu. Dvod je prost - dobr sprvce systmu
mus bt v prvn ad dobrm uivatelem. Sprvu systmu GNU/Linux lze navc
jen velmi obtn popsat, jeliko z velk sti zvis na pouit softwarov distribuci.
Pi psan textu jsem se snail vyhnout jakmkoli pevnm vazbm na tu i onu distri
buci, text by ml bt pnosn i pro uivatele jinch operanch systm zaloench
na filosofii Unixu, lze jej tedy povaovat za obecnou uebnici prce v systmu. Kniha
u tene nepedpokld tm dn znalosti, snad vyjma znalost zkladnho ovl
dn potae. V obsahu knihy jsem se snail koncentrovat sv zkuenosti s vukou
prce v systmu GNU /Linux na univerzit vetn vuky u neinformatickch obor.
Kniha by mla bt pstupn irok tensk veejnosti. Inspiraci a pouen v n
mohou nalzt jak pln zatenci, tak i pokroil uivatel.
Pro koho je kniha urena? Jsou to pedevm, ale nikoli jen, zanajc uivatel
GNU /Linuxu. Kniha je koncipovna jako systematick uebnice probrajc na sebe
navazujc problematiky. vodn kapitoly jsou psny co mon nejpstupnjm zp
sobem, v dalm textu se obtnost mrn stupuje. Knihu jsem napsal jako protipl
k dosavadn dostupn literatue, kter se mi pro zatenky nejev pli vhodn.
Pi pronikn do zklad systmu uivatel zdaleka nepotebuje kompletn popis
vech pepna njakho obslunho programu i peloen manulov strnky.
Stejn je pochopen stylu prce, kter je poteba demonstrovat pklady. Stejn tak
podstatn je zdvodnit vechny aspekty prce vetn jejich motivace a historickho
vvoje. Jedin tak bude uivatel s to pochopit, pro se dan innosti provdj prv
vyloenm zpsobem, a ne jinm. Kniha se tedy nesna suplovat referenn p
ruku, jednotliv problmy jsou rozebrny do hloubky, je se mi jev dostaujc
pro solidn prci v systmu. Je samozejm, e zvdav teni pjdou ve zkoumn
systmu daleko za mnou vyznaen hranice.
Kniha je rozdlena do tematicky navazujcch kapitol. Prvn dv kapitoly jsou sezna
movac - vnuj se elementrnm pojmm a vodu do prce s operanm systmem.
Nkter pase obsaen v prvnch dvou kapitolch jsou dle rozebrny v dalch
stech knihy. Vem tenm v kadm ppad doporuuji pest i tyto dv vodn
kapitoly, jsou uiten minimln z dvodu seznmen se s pouvanm znaenm
a nzvoslovm. Dalch est kapitol se vnuje dlm problematikm prce v systmu.
Soust kad kapitoly je jednak vod do problematiky, jednak praktick pklady
pouit obslunch program. Vele doporuuji vnovat se obma stem kapitol.
Pklady nemohou dt smysl bez pochopen podstaty problm, na druhou stranu sa
motn pochopen problmu je poteba podpoit pklady. Pro tene bude uiten,
pokud si po peten kad kapitoly vechny pklady znovu projdou a vyzkou
na bcm GNU/Linuxu. Sled kapitol a navazujc problematiky tvo dohromady
pirozen pojmotvorn proces a knihu lze mimo jin bez problm pout k p
prav zkladnho kursu prce s operanmi systmy vychzejcmi z filosofie Unixu
a dodrujcmi alespo st normy POSIX.
xiii

Nsledujc pehled obsahuje strun obsah kapitol.


1. Zkladn pojmy, historie systm.
V vodn kapitole se snam sjednotit se tenem e. Velk draz je kla
den na vysvtlen zkladnch pojm, sem pat zejmna operan systm, jdro
systmu, softwarov distribuce a jejich vzjemn vztah. Soust kapitoly je
i jemn vod do historie operanch systm. Jeho elem rozhodn nen nudit
tene nezajmavmi historickmi fakty. Pi prci se systmem je ale dobr
vdt, e nkter jeho projevy jsou podmnny historickm vvojem. ten
se v vodn kapitole napklad dozv, pro jsou operan systmy vzel z filo
sofie Unixu implicitn "tich".
2. Zklady prce v systmu.
Druh kapitola obsahuje vod do zklad prce se systmem. Jedn se pouze
o nezbytn minimum, stejn je pihlen do systmu a zklady prce s p
kazovm interpretem. Pkazov interpret je rozebrn pouze na rovni jeho
ovldn a vkldn pkaz. Podrobnji je pkazov interpret popsn v ka
pitole 5. V zvru kapitoly je ten seznmen s "umnm hledat npovdu".
Pi prci v systmu je velmi dleit umt hledat dodatenou dokumentaci,
pracovat s manulovmi strnkami a vdt, kam se obrtit v ppad nesnz.
3. Souborov systm.
kolem kapitoly o souborovm systmu je nejprve seznmit uivatele s kon
cepc souboru. Pojem soubor je v operanm systmu naprosto zkladn a jedn
se v podstat o jednotku organizace dat. V kapitole jsou rovn soustedny
informace o bnch typech soubor a hierarchick struktue soubor. Vysvt
leny jsou pojmy absolutn a relativn cesta, kter jsou nezbytn pro dal prci
v systmu. Samozejm nechyb ani informace o pstupovch prvech. Krom
tradinch pstupovch prv je ten informovn tak o POSIX ACL. Infor
mace o POSIX ACL nebyly dosud v esk literatue dostupn. Zvr kapitoly
se vnuje pipojovn diskovch oblast, diskov kvt a nhledu na standardn
strukturu adres operanho systmu GNU jLinux.
4. Systm proces.
Na kapitolu o souborovm systmu plynule navazuje kapitola o systmu pro
ces. Proces hraje v operanm systmu lohu jednotky vykonvn - procesy
jsou nutn z hlediska modifikace dat. Struktura kapitoly kopruje ivotn cyk
lus procesu. Z uivatelskho pohledu je dleit zvldnout sprvu vlastnch
proces, to jest napklad pozastavit a znovu rozbhnout proces nebo spustit
proces na pozad. st kapitoly je vnovna komunikaci pomoc signl, je
liko se jedn o zkladn princip meziprocesov komunikace, kter je navc
pouiteln pi kadodenn prci. Zvr kapitoly je vyhrazen pro plnovan
a periodick spoutn proces.
5. Zklady pkazovho interpretu.
S pkazovm interpretem se lze setkat bezprostedn po pihlen do sys
tmu. I kdy uivatel pracuje pevn s grafickm rozhranm, stle potebuje
xiv

mt alespo zkladn znalosti prce s pkazovm interpretem. V opanm p


pad se ochuzuje o celou klu efektivnch pracovnch postup. V kapitole
o pkazovm interpretu jsou postupn rozebrny jeho bn vnitn pkazy,
expanze neplnch jmen soubor a uivatelsk promnn. Pozornost je vno
vna i podmnnm pkazm, substituci pkaz a vytven skript. V zvru
kapitoly je uveden pehled nejpouvanjch promnnch pkazovho inter
pretu s krtkm popisem jejich vznamu.

6. Zpracovn textu.
Prce s textovmi soubory je v operanm systmu klov. Veker konfigu
ran soubory, ale i vtina datovch soubor je v GNU I Linuxu v textovm
tvaru. V vodu kapitoly je tenm objasnn samotn pojem "textov sou
bor", dalm diskutovanm pojmem je "textov editor". K prav textovch
dat lze pout v podstat ti druhy nstroj. V prvn ad jsou to jednoduch ob
slun programy. Druhou kategorii tvo proudov editory a filtry. Konen pro
interaktivn pravu soubor lze pout celoobrazovkov textov editory. Kad
kategorii je v textu vnovna patin pozornost. Pi pouit filtr a proudovch
editor hraj dleitou roli regulrn vrazy. I jim je tedy vyhrazena samostatn
sekce.
Zvr kapitoly je vnovn problematikm pbuznm zpracovn textu. Jedn
se o lokalizaci systmu a prci s dokumenty obsahujcmi diakritiku. Tato pas
je jako jedna z mla tsn vzna na operan systm GNU I Linux. ten zde
nalezne zkladn metody pizpsoben systmu nrodnmu prosted, ale na
pklad i informace o transformaci dokumentu mezi rznmi kdovmi strn
kami a penosu dokumentu mezi nejastji pouvanmi operanmi systmy.
Zvr kapitoly popisuje zklady archivace a komprese dat.

7. Sov prostfed.
Kapitola o stovm prosted systmu Unix se mrn vymyk ostatnm ka
pitolm. Uivatel zde nalezne zkladn pojednn o IP stch a komunikanch
protokolech rodiny TCP lIP. Soust textu je i popis zkladnch stovch slueb
vetn DNS, elektronick poty, komunikanch slueb, slueb vzdlenho pi
hlen a penosu dat. Jedna z podkapitol se vnuje sdlen uivatelskch t
a diskovho prostoru prostednictvm slueb NIS a NFS, diskutovna je rov
n problematika prce v heterogennm stovm prosted. Kapitolu o stovm
prosted je mon s vynechnm nkterch odstavc pest hned po vodnch
dvou kapitolch. Pokud nem uivatel vbec dn zkuenosti s prac v roz
lehlch potaovch stch, lze tento postup jen doporuit. Alespo zkladn
znalosti o stovm prosted systmu jsou poteba i v ppad, kdy uivatel
pouv samostatn pota bez pipojen k potaov sti.

8. Grafick sov rozhran.


Kapitola o grafickm rozhran je do textu zaazena pro plnost. ten v n ne
nalezne dokumentaci ke konkrtnm sprvcm oken nebo k dlm problmm
tkajcm se jejich ovldn i nastaven. Kapitola je psna velmi obecn a je-
xv

jm kolem je pedevm seznmit tene s architekturou grafickho stovho


rozhran X Window System. vod kapitoly se zamuje na zkladn pojmy
X klient, X server a X protokol. Vt pozornost je vnovna monostem spou
tn vzdlench aplikac a vzdlenmu pihlaovn vbec. V zvru kapitoly
je ten seznmen s monostmi upravovn vzhledu a chovn standardnch
X klient pomoc atribut zdroj.

Kniha je krom jinho vybavena velmi podrobnm rejstkem, v nm se vtina


pojm vyskytuje pod rznmi hesly. Tento zpsob organizace rejstku je sice po
nkud nesporn, ale je volen zcela zmrn - usnadn vm pozdj vyhledvn
v textu. Samotn text dopluje 18 obrzk, 31 schmat, okolo 50 tabulek a pes
250 ukzkovch pklad. V celm textu je rozebrno 25 pkaz standardnho p
kazovho interpretu, pes 175 obslunch program a uvedeno je pes 60 vznam
nch systmovch soubor a adres. Vm, e asov investice, kterou jsem vloil
do prce na tto knize, nebyla marn. Pokud se mi touto knihou poda zvtit mno
inu spokojench uivatel GNU / Linuxu, mj zmr bude dosaen.
I pes vekerou pi, kterou jsem textu bhem vvoje vnoval, se v nm mohou
nachzet nepesnosti. Chtl bych tmto poprosit laskav tene, aby mi jakkoliv
nejasnosti zaslali prostednictvm elektronick poty na adresu
vi l em . vychodi l @upo l . c z .

Jedin tak budu moci na problematick pase reagovat a postupn vydvat errata. Ja
kkoliv konstruktivn pipomnky k textu jsou rovn vtny. Dal informace o textu
naleznete na
http : //vychodi l . inf . upol . c z / e rrat a j l inux -pcu . html .

Na zvr bych chtl podkovat vem svm kolegm a ptelm, kte m bhem
psan textu zahrnovali podntnmi pipomnkami. V prvn ad si m dky zaslou
Vladimr Michl a Roman Szturc, kte cel text velmi peliv peetli. Speciln po
dkovn pat Janu Outratovi, jen ml odvahu st tento text hned nkolikrt. Dal
podkovn pat Miroslavu Jekovi za pipomnky k mmu literrnmu projevu.
V neposledn ad se o zkvalitnn knihy zaslouil i Miroslav Kue, dky nmu byly
zpesnny informace o historickm vvoji voln iitelnch operanch systm.
Osobn musm podkovat tak Ivanu Bbrovi, kter mi s laskavost jemu vlastn
upravil nhled na akademick a komern nasazen GNU /Linuxu.
Knihu jsem vytvoil v operanm systmu Debian GNU/Linux pomoc textovho
editoru GNU Emacs, typografickho systmu 1FX a jazyka METAP05T.

V Olomouci, dne 30. bezna 2003 Autor


Nae programy jsme tenkrt nenazvali "voln ifiteln software",
protoe tento termn jet neexistoval, ale pfesn o to belo. Kdyko
liv ns lid z jin univerzity i spolenosti podali o nae programy,
s radost jsme jim je poskytli, aby mohli provdt dal pravy, pf
padn se pokusit o pfenos na jinou platformu. Pokud uvidte nkoho
pouvat neotfel program, vdycky byste mli mt monost podat
jej o zdrojov kdy tohoto programu, abyste je pak mohli vyuvat,
mnit, zlepovat, nebo tfeba jen vykuchat nkterou st a pout ji ke
tvorb novho programu.
Richard M. Stallman: Voices from the Open Source Revolution.

Zkladn pojmy, historie systm

vodn st textu se vnuje samotnmu pojmu operan systm. Jeliko dnes bv


termn operan systm chpn sp intuitivn, ada i velmi pokroilch uivatel
si neuvdomuje jeho vznam a u z hlediska uivatelskho i z hlediska techno
logickho. Po vodu nsleduje krtk shrnut historie vvoje operanch systm
Unix a Linux. V zvru kapitoly naleznete informace o distribucch GNU/Linuxu,
rozebrn je rovn vzjemn vztah systmu Linux k distribucm GNU /Linuxu.

1.1. Operan systm


Jedna z nejoblbenjch definic operanho systmu je pomrn stroh:
" Operan systm je zkladn softwarov vybaven poftae,
kter se star o sprvu systmovch zdroj. "
Jakkoliv je tato formulace obecn, pesn vystihuje podstatu operanho systmu.
Systmovmi zdroji je obvykle mylen vpoetn as procesoru, kter me bt
pedem rezervovn a opakovan pidlovn jednotlivm lohm. Dle sem pat
napklad i dostupn pam potae, diskov prostor, pstup k stovm rozhra
nm potae a tak dle. Zjednoduen eeno, operan systm se star o co mon
nejefektivnj vyuit vech zdroj potae.
Jednm z astch omyl pi vahch o operanch systmech je nesprvn ch
pn jejich zkladnch vlastnost. Operan systm nen primrn charakterizovn
svm "uivatelskm rozhranm", to jest tm, jak vypad a jak jsou zvyklosti pi
jeho ovldn. Hlavnm rysem operanho systmu je prv styl zachzen se syst
movmi zdroji. Jednotliv zdroje - resources jsou uivatelskm lohm pidlovny
buto automaticky, nebo na zklad jejich poadavk. Operan systm poskytuje
vem lohm jednotn softwarov rozhran, nkdy oznaovan zkratkou API - Ap
plication Programming Interface, pes kter mohou lohy zadat o pidlen syst
movch zdroj. Dalm kolem softwarovho rozhran je umonit uivatelskm lo-
2 Kapitola 1 . Zkladn pojmy, historie systm

hm komunikovat s perifernm hardwarem. Z tohoto pohledu je softwarov rozhran


v podstat vrstvou slouc k odstnn konkrtnho hardwaru od aplikac. Operan
systm komunikuje s hardwarem pomoc ovlada, anglicky drivers. Ovladae mo
hou bt zahrnuty buto pmo v operanm systmu, nebo jsou vytveny vrobci
hardwaru a jsou dodvny formou dodatench modul.
Z pohledu hardwaru je operan systm pouze jednou z loh vykonvanou pro
cesorem. Operan systm m vak mezi provdnmi lohami vsadn postaven.
Instrukce operanho systmu jsou vykonvny v privilegovanm reimu procesoru.
V praxi to znamen, e operanmu systmu jsou umonny nkter innosti, kter
uivatelsk lohy provdt nemohou. Operan systm napklad me kontrolo
vat pidlovn vpoetnho asu dalm lohm nebo pmo zasahovat do jejich
ivotnho cyklu . V dobe fungujcch operanch systmech jsou tyto innosti ostatnm
lohm zapovzeny. Vztah operanho systmu k potai a uivatelskm lohm je
znzornn na nsledujcm obrzku.

/ .. (iloha D
,/

D/oha D
hardware
poi'tae
operan
systm
.......... .

loha operanho systmu se bhem vvoje pota mnila. V zatcch pota


ov ry fungovaly samoinn potae zcela bez operanch systm. I kdy byly
potae softwarov programovateln, nebyly natolik vkonn a jejich periferie ne
byly dostaten flexibiln, aby u pota mlo smysl rozdlovat zdroje mezi nkolik
loh. Operan systm na potach zatm nenachzel valn vyuit.
S rstem vkonu hardwaru se zaala situace obracet. Nhle se zjistilo, e hardware
je ji dostaten vkonn pro soubn vpoet vce loh. V ase, kdy jedna loha
te vstup a nevytuje aritmetickou jednotku potae, me naopak dal loha,
teba vpoetn nron, bet a ekonomicky tak vyuvat vpoetn as drahho
systmu. Nvrhy prvnch operanch systm byly motivovny hlavn efektivnm
vyuitm vkonu pota. Pechod od jednolohovch systm k vcelohovm byl
plynul, nikoliv zlomov. V prvn fzi operan systmy umoovaly existenci pouze
dvou soubnch loh - hlavn a doplkov lohy. Doplkov loha bela v dob,
kdy hlavn loha ekala na dokonen vstupn/vstupn operace. Dalm krokem
bylo zaveden obecnch vcelohovch systm umoujcch sdlet vpoetn as
mezi vce lohami. Mezi prvn operan systmy umoujc soubn zpracovn
vce loh patil i systm Unix.

Zkladn sti operanch systm


Srdcem vech operanch systm je jejich jdro. Jdro poskytuje uivatelskm
programm jist mnostv slueb. Z hlediska konstrukce jdra a mnostv nabzench
slueb dlme operan systmy do nkolika kategori.
1 .2. Historie systmu Unix 3

Zkladn dv kategorie zahrnuj


operan systmy s monolitickm jdrem a
mikrojdrov systmy.
Vtina souasnch operanch systm je sestavena na bzi monolitickho jdra.
Jdro monolitickho systmu zahrnuje sluby tkajc se sprvy pamti, sprvy loh
a periferi, ppadn grafickho rozhran. Naproti tomu mikrojdrov systmy zpra
vidla obstarvaj pouze sprvu loh a jejich vzjemnou komunikaci. Ostatn sluby
obstarvaj dodaten moduly. Druh koncepce je jist otevenj a promylenj.
Na druhou stranu, monolitick systmy maj jednu nespornou vhodu - jde v sou
asnosti o reln fungujc systmy. Vskutku, mikrojdrov systmy spadaj vesms
do kategorie experimentlnch operanch systm. Jejich budouc rozvoj je oekvn
s masivnm nasazenm distribuovanch systm. Mezi znm mikrojdrov systmy
pat napklad GNU / Hurd nebo VSTa.
Jdro systmu je z uivatelskho pohledu nezajmav, jeliko s nm nelze pmo
komunikovat. Komunikace s uivatelem je zajitovna uivatelskm rozhranm. Je jen
na tvrcch operanm systmu, zdali se rozhodnou toto rozhran integrovat pmo do
jdra systmu, i nikoliv. Ve vtin vysplch operanch systm nen uivatelsk
rozhran pmou soust jdra.
Operan systmy proly boulivm vvojem i z uivatelskho hlediska. V do
bch, kdy byla komunikace s potaem zaloena jen na drnch ttcch, existovaly
neinteraktivn operan systmy, je zpracovvaly poadavky dvkov. kolem ope
ranho systmu bylo rozliovat mezi vstupnmi drnmi ttky speciln dc ttky
s povely pro operan systm. Jejich kolem bylo dit zpracovn dat a vykon
vn program, kter byly zapsny na ostatnch ttcch. Po pechodu na obrazovkov
terminly se zaaly objevovat interaktivn systmy, to jest systmy s uivatelskou ode
zvou. Tyto systmy ji byly schopny komunikovat s uivatelem principiln stejnm
zpsobem, jako jsme na to zvykl dnes.

1.2. Historie systmu Unix


V roce 1965 se v Bellovch telefonnch laboratoch zaal rodit nov operan sys
tm oznaovan Multics. Clem bylo poskytnout irok skupin uivatel simultnn
multiuivatelsk pstup k potai, mohutn vpoetn vkon a efektivn uloen
dat. Tento systm, akoliv byl velmi ambicizn navren jako univerzln een,
neml jednoduch programtorsk rozhran. Z vvoj se brzy odtpila skupinka
pod vedenm K. Thompsona, D. Ritchieho a B. Kernighana, kter navrhla vlastn mul
tiuivatelsk a multiprocesov operan systm. Systm byl nazvn Unix. Pvodn se
systm jmenoval Unics, co mla bt slovn hka s nzvem systmu Multics. Zro
dek tohoto operanho systmu byl naprogramovn pro minipota PDP-I I, co byl
shodou okolnost prvn a posledn estnctibitov pota firmy Digital Equipment
Corporation (DEC). V prvopotcch byl Unix naprogramovn v kovm assem
bleru, jen byl soust operanho systmu Gecos. V tto dob jet nebyl Unix pln
sobstan operan systm.
4 Kapitola 1 . Zkladn pojmy, historie systm

Zatkem 70. let vyvinul D. Ritchie beztypov programovac jazyk BCPL, z nho
se poslze vyvinul interpretovan jazyk B a peklada jazyka C. Hlavnm rozenm
oproti jazyku BC PL byly strukturovan datov typy. Jazyk C byl v podstat navren
jako makroassembler pro potae PDP-1 1 . V roce 1973 byl operan systm Unix im
plementovn v programovacm jazyku C. Na svou dobu to byl revolun poin, kter
byl motivovn pedevm pfenositelnost systmu. Vznikl tak vcelohov a vceuivatel
sk systm naprogramovan ve vym jazyku. Unix byl navc od tohoto okamiku
penositeln mezi rznmi potai. V roce 1977, tedy 4 roky po jeho vzniku, byl
poprv penesen na jin pota ne PDP.
Kernighan, Ritchie a Thompson prolomili nkolik psychologickch barir. Do
kzali, e operan systm lze napsat ve vym programovacm jazyku, co mlo
krom penositelnosti jet dal neekan dopady. Historie vvoje softwaru zde rov
n zaznamenv nov fenomn - efekt frustrace. Nejvt softwarov perly vznikly
z frustrace, vznikly jako odpov na nedostatek kvalitnho softwaru danho druhu.
Sem pat krom operanho systmu Unix napklad i Stallmanv textov editor
GNU Emacs a Knuthv typografick systm '!EX.
vvoj Unixu zaal zhy pokraovat v nkolika linich. Koncem 70. let uvolnily
Bellovy laboratoe Unix pro pouit mimo sv vzkumn centrum. Systm se zaal
instalovat zejmna na univerzitch, kam byl poskytovn zadarmo k vdeckm e
lm. Nsledujc vvoj probhal jak v Bellovch laboratoch, tak i na Kalifornsk
univerzit v Berkeley (UCB). Systmy z Bellovch laborato jsou oznaovny jako
System n. V souasnosti je aktuln verze SVR4, to jest System V Release 4. Bellovy
laboratoe vydvaj doporuen s nzvem SVID, kter definuje zkladn charakteris
tiky Unixu. Tohoto doporuen se vesms dr i vvoji komernch implementac
systmu. Distribuce systm z UCB se nazvaj BSD Berkeley System Distribution,
-

skupina vvoj BSD se snaila rozit systm o dal monosti, zejmna v oblasti
stovch slueb.
Rozvoj Unixu a mnostv jeho komernch implementac si vynutilo i jeho stan
dardizaci. Aktivitu pi standardizaci vyvjel institut IEEE Institute of Electrical and
-

Electronics Engineers . V jeho vlastnictv je norma POSIX, co je jedna z hlavnch norem


pro systmy odvozen z Unixu. Tato norma se tk hlavn rozhran a penositelnosti
na rovni zdrojovch kd. Dal normou je dokument XPG3 od evropskho sdru
en autor X/OPEN.
Koncem 80. let se v Bellovch laboratoch objevuje dal pokus realizovat pln
nov operan systm. Stejn skupina autor se snaila navrhnout distribuovan s
ov operan systm jmnem PIan 9. Zmnu v koncepci operanho systmu si vynutil
pechod od minipota a pota tdy mainframe k mikropotam pracujcm
v sti. Svou vnitn architekturou je ale PIan 9 velmi odlin od Unixu. V mnoha ohle
dech nebyl PIan 9 dosud pekonn. I pesto systm nedospl prakticky k dnmu
masivnmu nasazen a v souasnosti je povaovn za jeden z mnoha experimentl
nch operanch systm.
Nkter mylenky Unixu pevzaly i jin operan systmy. Filosofi Unixu byla
ovlivnna cel adu voln iitelnch operanch systm, mezi kter pat i systm
Linux. Jednm z vraznch rys Unixu je zejmna pojet souboru. Systm soubor
1 .3. Zkladn rysy Unixu 5

Unixu se stal vzorem i pro ostatn operan systmy, napklad v systmu GNU /Hurd
je chpn souboru dotaeno jet dle. Podstatnm faktem zstv, e akoliv je Unix
v mnoha ohledech historickm systmem, jeho rozhran a nkter implementan
detaily jsou inspirac i pro modern navren systmy. Nen divu, koncepce Unixu je
prokazateln funkn a osvdila se po dobu nkolika desetilet. I z tohoto dvodu je
nutn mt zkladn znalosti o softwarovch souvislostech systm vzelch z Unixu.

1.3. Zkladn rysy Unixu


Jak ji bylo eeno, operan systm Unix byl od prvopotku navren jako

vcelohov - multiprocesov a
vceuivatelsk - multiuivatelsk.

Prvn vlastnost plyne z elu nasazen. Unix byl koncipovn pro velk potae,
na kterch me bet vce loh - proces souasn. Souasn bh zajiuje operan
systm cyklickm pidlovnm procesorovho asu jednotlivm vykonvanm lo
hm. Pidlovn procesorovho asu neboli timesharing je zpravidla zeno pomoc
priorit. Mn vznamnm lohm je pidlena men priorita a procesorov as je
jim pidlovn mn asto nebo v mench asovch jednotkch. Jeliko jsou jednot
liv asov kvanta relativn mal (kolem 30-150 ms), pro lidskho pozorovatele jsou
lohy zpracovvny "soubn". Vzhledem k tomu, e je systm schopen obhospo
daovat vce bcch proces, je rovn nutn zajistit i jejich vzjemnou komunikaci
a sprvu proces . Tmto problematikm se podrobn vnuje kapitola 4.
Podpora vce uivatel plyne opt z nasazen systmu. Vceuivatelsk prosted
je navc motivovno monost zpracovvat vce loh souasn. Je-li systm schopen
obhospodaovat vce proces, ml by bt schopen umonit soubnou prci i vce
uivatelm. Pojem multiuivatelsk operan systm bv nkdy patn vysvtlovn
jen jako systm umoujc vytven nezvislch uivatelskch t. Poadavek na
soubnou prci je ale v naem ppad podstatn. Dobu prce jednoho uivatele
se systmem oznaujeme jako sezen - session. Systm je multiuivatelsk, pokud
umouje vce soubnch sezen.

Terminly
Shrneme-li pedchoz poznatky, na potai vybavenm operanm systmem
Unixu me bt v jednom okamiku zpracovvno nkolik loh soubn. Jdro
systmu se star o pidlovn vpoetnho asu jednotlivm lohm a mimo jin
zajituje i jejich nezvislost - lohy napklad nemohou libovoln pepisovat pam
ostatnm lohm. Jeliko je Unix vceuivatelsk systm, v jednom okamiku me
s potaem pracovat vce uivatel. Pozorn tene jist napadlo, e fyzicky me
za potaem sedt nejv jeden lovk. Jak lze tedy zajistit simultnn pstup vce
uivatelm? K tomuto elu slou speciln zazen ppadn speciln progtamy
zvan terminly. Viz nsledujc obrzek.
6 Kapitola 1 . Zkladn pojmy, historie systm

terminl
--------------potat
terminl
V dvjch dobch byly unixov servery vybaveny velkm mnostvm asyn
chronnch sriovch port a na n byly pipojeny terminly - hardwarov zazen
sestvajc z klvesnice a zobrazovac jednotky. Terminly maj za kol zprosted
kovat interakci uivatele se systmem. lohou terminlu je pouze zobrazovat p
choz data a pedvat informace o vstupech uivatele - napklad informovat pota
o stisknutch klvesch. Terminly samy o sob nemohou nahradit potae. V sou
asnosti nen pouvn hardwarovch terminl pli ast a u osobnch pota
nemaj terminly ani sv hardwarov ekvivalenty. Pi komunikaci s unixovmi sys
tmy je pln nahrazuj softwarov emultory terminlu. Jedn se o speciln uivatel
sk programy fungujc obvykle pod libovolnm operanm systmem. Pokud jsou
emultory terminl umstny na jinm operanm systmu, mus rovn integrovat
i mechanismus vzdlenho pihlaovn. Multiuivatelsk systm prce si vynucuje
rovn ovovn totonosti uivatel. Totonost uivatele je zpravidla ovena na z
klad jeho uivatelskho jmna a hesla. V posledn dob se objevuj i dal pstupy,
napklad otisk prstu nebo identifikace dle on duhovky.

Architektura systmu Unix


Akoliv je Unix systmem s monolitickm jdrem, m vrstevnou architekturu.
Zde opt narme na samotn pojem operan systm a sten na filosofickou ro
vinu vci. Historie ukazuje, e textov nebo dokonce grafick uivatelsk rozhran by
nemlo bt pmou soust operanho systmu. V Unixu je grafick i textov uiva
telsk rozhran realizovno programy bcmi jako uivatelsk procesy. Pi oddlen
jdra systmu od uivatelskho rozhran lze vyvjet ob dv sti samostatn. Navc
je mon pouvat nkolik rozhran souasn a mezi sebou je vzjemn kombino
vat pln dle poteby. Vbr uivatelskho rozhran je do jist mry zvisl na elu
provozu potae. Textov rozhran vhodn pro stov server nen nejvhodnj pro
grafick stanice, na druhou stranu napklad pro kapesn pota je vhodn co mon
nejthlej uivatelsk rozhran s maximln mrou uivatelskho pohodl.
Operan systm Unix se skld ze t zkladnch st:
jdro - kernel,
interpret pkaz - shell,
obslun programy - utilities.
Operan systm jako mezivrstva mezi softwarem a hardwarem je v podstat jen
jdrem. Jdro je program, zpravidla velikosti nkolika stovek kilobajt, kter je bez-
1 .3. Zkladn rysy Unixu 7

prostedn po startu systmu zaveden do pamti a obstarv sprvu zdroj po


tae. Z uivatelskho hlediska je jdro samo o sob nepouiteln. Jdro po svm
startu vykon nkolik nezbytnch systmovch akc, napklad pipojen koeno
vho souborovho systmu a nsledn sputn prvnho procesu v systmu. Tento
inicializan proces se dle postar o sputn dalch slueb umoujcch napklad
lokln a vzdlen pihlaovn do systmu. Inicializan proces ale ji nen pmou
soust jdra, je to speciln systmov program. Dleitm kolem jdra je posky
tovn slueb ostatnm procesm. V systmu Unix jsou sluby poskytovny pomoc
voln jdra.
Interpret uivatelskch pkaz, dle jen shell, umouje uivateli pohodlnm
zpsobem komunikovat se systmem, zadvat pkazy, spoutt uivatelsk pro
gramy a podobn. Shell je rovn siln programovac jazyk, pomoc kterho lze defi
novat vlastn funkce a pst univerzln skripty. Naprogramovan skripty lze ucho
vat pro budouc pouit. Shelly nejsou standardizovan. Existuje nkolik zkladnch
shell, je maj dost odlinou syntaxi. Mezi nejznmj pat Bourne Shell, C Shell
a Korn Shell. V tomto textu je popsn pouze shell GNU Bash, jeho nzev je akrony
mem pro GNU Bourne Again Shell . Shell GNU Bash byl zvolen zcela zmrn, protoe
nejvc zdomcnl v prosted Linuxu a v dalch voln iitelnch operanch sys
tmech. Pi interakci s uivatelem pouv shell textov pkazov reim. Nasazen
textovho rozhran nen v dnm ppad peit. Textov reim a pkazov inter
pret umouj uivateli efektivn eit problmy. V Unixu je dky textovmu reimu
mon jednodue kombinovat programy ec dl problmy.
Obslun programy vykonvaj elementrn operace se soubory a procesy. N
kter obslun programy poskytuj systmov informace. Mezi zkladn obslun
programy pat napklad nstroje pro koprovn soubor, programy pro zjitovn
mry zaplnn disku, programy umoujc vzjemnou komunikaci mezi procesy
a tak dle. V kad z nsledujcch kapitol jsou vdy rozebrny zkladn obslun
programy tkajc se aktuln problematiky. pln popis obslunch program je
k nalezen v systmov dokumentaci, viz kapitolu 2.4.
Pkazov interpret i vtina obslunch program se chov tie. Tm je myleno,
e pokud poadovan kol probhne spn, uivateli se nevype dn hlen.
Zprvy jsou vypisovny zpravidla jen v ppad chyby. Tato vlastnost je dna rovn
historickm vvojem. Ped nstupem obrazovkovch terminl se hojn pouvaly
hard-copy terminly sestvajc z klvesnice a dkov tiskrny plnc lohu zobrazo
vac jednotky. Pi pouit takovho vstupnho zazen bylo zejmna nutn, aby zby
ten nepltvalo paprem. To jest tiskrna vypisovala pouze nezbytn nutn daje.
Pokud toti libovoln akce probhne korektn, nen pli motivujc zkoumat "jak
moc dobe probhla". Naopak pi vskytu chyby je zapoteb mt pokud mono co
nejobrnj popis jejho vzniku. Je-li k dispozici obrn popis chyby, je mon ji
mnohem rychleji odstranit. Tich reim prce petrvv v Unixu dodnes.
Na konec vodn kapitoly jet jednou zdraznme, e v Unixu nen zvykem
chpat uivatelsk rozhran jako soust operanho systmu. Tento pohled m sv
vhody. Zrove je nutn rozliovat dva pojmy jdro operanho systmu a operan
-

systm. Jdro operanho systmu je neinteraktivn, poskytuje pouze sluby. Komu-


8 Kapitola 1 . Zkladn pojmy, historie systm

nikace s uivatelem je na ostatnch komponentch systmu. Je jen na tvrcch tchto


komponent, zdali zvol cestu textovho i grafickho rozhran, nebo teba pln ji
nou metodu komunikace s uivatelem - napklad Braillv terminl pro slepce. Je
to prv nezvislost systmu na uivatelskm rozhran, kter ze systm vzelch
z filosofie Unixu dl univerzln pouiteln softwarov vybaven pota, schopn
fungovat na kapesnch potach i na serverech.

1.4. Vvoj systmu Linux


V roce 1993 skupina Berkeley Computer Systems Research vyerpala sv posledn
finance uren pro vvoj systmu BSD. Jet ped ukonenm vvoje BSD byla na
jeho zdrojovch kdech postavena verze 386BSD uren pro platformu Intel 386.
Tato verze systmu se vyvjela zcela samostatn a nezvisle na ostatnch Unixech.
Hlavn nevhodou vak byla jej uzavenost a pomal reakce vvoj na zaslan
opravy. Nkte vvoji se na jae roku 1993 oddlili od vvoje 386BSD a zaloili
projekt FreeBSD. Na podzim roku 1993 se od projektu oddlila vtev zvan NetBSD
se snahou vytvoit co mon nejvce penositeln operan systm. Nakonec v roce
1996 se z NetBSD oddlila skupina vvoj veden Theo de Raatem a vznikla
OpenBSD - vtev zamen na bezpenost a robustnost.
V souasnosti probh vvoj NetBSD a OpenBSD soubn a oba systmy se vz
jemn ovlivuj. Bezpenostn prvky se penej z OpenBSD zpt do NetBSD, nao
pak v NetBSD jsou rychle vyvjeny ovladae zazen, kter jsou pozdji peneseny
do OpenBSD. Podstatn je, e ve vech variantch operanho systmu byl veker
proprietrn kd nahrazen novm. Vvoji vech implementac ji od potku po
uvali k vzjemn komunikaci Internet. Prostednictvm Internetu byl k dispozici
voln iiteln operan systm. Tento poin pedznamenal jeden z novch trend
vvoje softwaru.
Zhruba ve stejn dob zaal vznikat i operan systm Linux. Jednadvacetilet
finsk student Linus Torvalds zaal programovat operan systm, jeliko nebyl spo
kojen se systmem Minix - implementac Unixu pro stroje Intel 386 od Andyho Ta
nenbauma. To je dal pklad efektu frustrace. Linusovi vadila pedevm nepjemn
omezen tohoto systmu. Cel projekt zaal pouze jako "pokus napsat si operan
systm" pro pota platformy Intel 386. V jnu Linus Torvalds oficiln oznmil
operan systm Linux verze 0.02. Tato verze ji umla pracovat s IDE diskem, obsa
hovala i mal souborov systm a bylo mon spustit v n peklada jazyka C. Ji od
potku neobsahovaly zdrojov kdy operanho systmu dn kd z pvodnho
Unixu z Benovch laborato ani z BSD. Od verze 0.03 skoilo slovn systmu na
0.10 a zaalo na nm pracovat vc programtor. Po nkolika dalch revizch skoilo
slovn na 0.95 a 0.99.
Pi uvolnn verze 1 .0 se zmnilo i slovn jader. Jdra jsou a doposud slovna
x.y.z, kde x je slo generace jdra, y je subgenerace a z je pofadov slo jdra v rmci
subgenerace. Lich hodnota subgenerace oznauje nestabiln srii jader, sud hodnota
subgenerace oznauje stabiln srii jader. Stabiln srie je vhodn pro uivatele, kte
chtj v systmu pracovat, ale nechtj jej vyvjet. Soubn se stabiln sri je zpravidla
1 .5. Linux a softwarov distribuce 9

vyvjena i nestabiln, do kter se pidvaj vlastnosti uvolnn do dal subgenerace


jader. Nestabiln srie jsou vhodn pouze pro vvoje jdra, pi uivatelsk prci
by mohlo dochzet k pdm systmu, nebo dokonce i k pokozen potae nebo
dat. Napklad tento dokument jsem zaal pst pi pouit jdra 2.4.5, to znamen
2. generace, 4. subgenerace, pt jdro v ad, v prbhu oprav textu jsem pracoval
s jdrem 2.4. 18. V t dob existovala i nestabiln ada 2.5.z a jej posledn jdro mlo
slo 2.5.10.
Skuten prvn pouiteln ada jader byla 1 .2.z. Dal srie, 2.0.z ji byla penesena
i pro jin platformy ne Intel 386, teba DEC Alpha. Srie 2.2.z pidala pedevm
monost symetrickho multiprocesingu, kter byl dle zlepen v srii 2.4.z. ada 2.4.z
obsahuje adu dalch rozen. V souasnosti Linux podporuje destky souborovch
systm, stovky hardwarovch zazen a je penesen na adu platforem. S Linuxem
se lze setkat od kapesnch pota - dky jeho malm nrokm na zdroje a po
superskalrn vceprocesorov a distribuovan systmy - dky jeho penositelnosti
a klovatelnosti. Jen pro srovnn, komprimovan zdrojov kdy Linuxu verze 0.01
mly 60 kB, komprimovan zdrojov kdy verze 2.4.20 maj rozsah 27 MB. Linux je
prvem oznaovn za "Unix 90. let".
Linux je voln iiteln operan systm vychzejc z koncepce Unixu. Linux do
konce spluje i velkou st normy POSIX. V dnm ppad ale nesmme pojmy
Linux a Unix ztotoovat. Linux je kompatibiln s ostatnmi implementacemi systmu
Unix na rovni zdrojovho kdu. Obecn nelze penet peloen programy mezi jed
notlivmi unixovmi systmy, dokonce to nkdy nelze i mezi dvma systmy Linux
na jedn platform. To me bt zpsobeno napklad jinou verz sdlench kniho
ven. Linux se nesna bt za kadou cenu zptn kompatibiln, protoe tato vlastnost
je omezujc pi dalm vvoji. Kompatibilita na rovni zdrojovch kd a obslu
nch nstroj je vak zaruena tm vdy. Linux si lze opatit buto zcela zadarmo
napklad ze st Internet, nebo zakoupenm nkter z komernch distribuc.

1.5. Linux a softwarov distribuce


Operan systm Linux je pouze jdrem, kter stejn jako jdro Unixu nen samo
o sob z uivatelskho pohledu pli pouiteln. Obvykle je pod pojmem Linux
myleno jdro spolu se zkladnm softwarovm vybavenm. Mezi zkladn softwarov
vybaven pat shell, textov editor, pekladae a interprety programovacch jazyk
a dal nstroje. Softwarov vybaven nen obvykle zvisl na jdru systmu, obecn
lze jdro nahradit jinm jdrem a pitom pouvat stejn zkladn software. V n
kterch ppadech to ovem nemus platit. Nkter systmov a uivatelsk nstroje
mohou bt tsn vzan na verzi jdra.
Vtina softwarovho vybaven operanho systmu Linux pochz z dlny nadace
pro podporu voln iitelnho softwaru - Free Software Foundation. Zakladatelem na
dace je Richard M. Stallman. Nadace vyvj v rmci projektu GNUl velmi kvalitn
programov vybaven a tak pracuje na vvoji svho vlastnho operanho systmu
IGNU znamen GNU's Not Unix.
10 Kapitola 1 . Zkladn pojmy, historie systm

Hurd. Programov vybaven nesouc oznaen GNU je penositeln na rovni zdro


jovch kd a zahrnuje pedevm zkladn programy, pkazov interprety, pe
kladae, textov editory a programy pro vvoje. Mezi nejznmj produkty pat
zejmna uniktn navren peklada GCC, dle textov editor GNU Emacs a p
kazov interpret GNU Bash.
Operan systm Linux spolu se zkladnm programovm vybavenm GNU ji
tvo kompletn a plnohodnotn operan systm. Vzhledem k rozsahu archivu GNU
softwaru lze bez nadszky ct, e operan systm vybaven nstroji GNU je "velmi
nadstandardn ". Linux i jeho programov vybaven je eno pod licennm ujedn
nm obecn veejn licence GNU GNU General Public License. Zjednoduen eeno,
-

licence GNU GPL umouje koprovat, sdlet, modifikovat a dle distribuovat soft
ware za podmnek, e nebude od tto licence odlouen2 . Dobr licenn strategie je
jednm z dvod, pro je Linux tak oblben operan systm. Licence GNU vak
nebrn napklad vyvjet komern software pomoc GNU nstroj, jak se ada lid
myln domnv. Jdro Linux a softwarov vybaven GNU souhrnn oznaujeme
GNU/Linux.
Manuln instalace operanho systmu a softwarovho vybaven je velmi sloit
a lze ji doporuit pouze velmi vysplm uivatelm disponujcm navc pemrou
volnho asu a pedevm pevnmi nervy. Tohoto nedostatku si zhy vimly sku
pinky vvoj, kter zaaly GNU /Linux distribuovat v "hlednch kabtech". Za
aly vznikat distribuce GNU/Linuxu. Pod tmto pojmem si lze pedstavit GNU /Linux
obohacen o pomocn administrtorsk programy, napklad pro instalaci a sprvu
softwarovch balk. Distribuce maj zpravidla interaktivn instalan programy. Sys
tm je tak umonno instalovat a spravovat i relativnm novkm. Na tomto mst
je ale nutn podotknout, e zvldnut systmu Linux na rovni administrace nen
nejjednodu a rozhodn to nen otzkou jednoho odpoledne.
Tm vechny distribuce pouvaj k organizaci instalovanch program balky,
anglicky packages. Kad balk obsahuje jeden nebo vce pbuznch program. Ad
ministrtorm systmu slou balky k jednoduch a rychl instalaci i odstrann
program. Soust balk jsou zpravidla i informace o verzi a zvislosti balku na
ostatnch balcch. Nkter distribuce GNU /Linuxu maj systm balk tak propra
covan, e upgrade celho systmu lze provst bez restartu potae.
Mezi distribucemi a jdry opt nen dn pevn vztah. Kad vydn distribuce
zpravidla pouv implicitn jdro, to jest jdro zaazen do distribuce pmo jejmi
vvoji. Implicitn jdro zpravidla obsahuje spoustu ovlada pro rozlin hard
warov zazen. Sprvce systmu vak me provozovat tut distribuci i s jinm
jdrem. K tomu v zsad sta pouze opatit si zdrojov kdy jdra, provst jeho
konfiguraci, peklad a zaveden do pamti. Pi konfiguraci jdra je vhodn odstranit
zbytenosti a provst rzn optimalizace vkonu. Vsledkem me bt systm, kter
je rychlej a nadto spotebovv men mnostv pamti. Zdali po instalaci systmu
pekldat vlastn jdro ji nen pedmtem tto knihy. Obecn se ale na tuto proble-

2pro detaily viz h t t p : // www . gnu . org/ copy l e f t / g p l . html, esk peklad ke k dispozici na adrese
h t t p : // www . gnu . c z /gnu - 2 l . html .
1 .5. Linux a softwarov distribuce 11

matiku nzory rzn. Jedni uivatel preferuj pouvn otestovanch implicitnch


jader, jin vol cestu optimalizace.
Distribuce se navzjem li svm nasazenm. Krom klasickch distribuc ure
nch pro instalaci do samostatnch diskovch oddl existuj zce specializovan
distribuce slouc napklad pro instalaci na souborov systm MS-DOSu. Jin dis
tribuce mohou bt nativn a bvaj umstny zpravidla na CD nosii, odkud mohou
bt pmo spoutny. Distribuce se odliuj i svm stylem vvoje. V souasnosti pat
k nejoblbenjm distribucm Mandrake, Red Hat Linux, Slackware a SuSE Linux.
Dky komernm distribucm postupuje vvoj Linuxu rychle kupedu - z prodeje
produkt a z placen uivatelsk podpory mohou bt financovny dleit projekty
v rmci rozvoje jdra i softwarovho vybaven GNU / Linuxu.
Mezi nekomernmi distribucemi vynik Debian GNU/Linux. Debian je skupina
asi 2 000 vvoj, ke kterm se me pidat kdokoliv, kdo chce spravovat balky soft
waru nebo jinak pomoci cel distribuci. Debian je nekomern distribuce a podporuje
nejvce softwarovch i hardwarovch platforem. Distribuce Debian je rovn nez
visl na jdru. V souasnosti je k dispozici i Debian GNU/Hurd a Debian GNU/NetBSD
bc na jdrech Hurd a NetBSD. Distribuce Debian se dl do t skupin, stabiln,
nestabiln a testovac. Stabiln distribuce je vhodn pro uivatelsk pouit. Nestabiln
distribuce se vyvj nejrychleji, ale obas v n nkter sti nemus fungovat. Testo
vac distribuce je nkde na pomez. Pokud se upraven balk proke jako funkn
v nestabiln distribuci, pesune se do testovac. Jednou za as se testovac distribuce
zmraz, odlad se zbytek chyb a prohls se za stabiln. Cel cyklus vvoje se dle opa
kuje. Debian obsahuje velk mnostv balk, souasn stabiln verze jich obsahuje
pes 8 500, poet balk v nestabiln verzi pesahuje deset tisc. Distribuci je mon
instalovat z CD a DVD nosi i pmo z Internetu.
Zbytek textu se vnuje prci v operanm systmu GNU/Linux. Vtina uvedench fakt
plat nejen pro systm GNU/Linux, ale i pro dal voln ifiteln operan systmy. Pfijmme
tedy prosm nsledujc mluvu. Pokud nebude dle uvedeno jinak, vechny uveden zvry
jsou obecn platn pro systmy odvozen z Unixu a systmy vychzejc z jeho filosofie. Pokud
budou v textu uveden informace tsn vzan na systm GNU/Linux, tenfi na to budou
explicitn upozornni.
12 Kapitola 1 . Zkladn pojmy, historie systm
Stsk se vm po krsnch dnech systmu minix-1 . 1 , kter pou
vali jen skuten mui snac se naprogramovat si vlastn ovladae ?
Zrovna nepracujete na dnm projektu a lmete si zuby s marnou
snahou pfizpsobit si operan systm vaim poadavkm? Jste zne
pokojeni, e v systmu minix ji vechno funguje? U jste dlouho
do noci nesnaili rozchodit zapeklit program? Pak je mon tento
dopis uren prv vm.
Linus Torvalds: Free minix-like kernel sources for 386, 5 Oct 1 99 1 .

Zklad y prce v systmu

Hned v vodu kapitoly pijmme nsledujc mluvu o oznaen klvesovch


zkratek. Stisk klvesy 1 CONTROL na klvesnicch nkdy znaen 1 CTRL budeme oznao
vat C - . V systmu m speciln vznam klvesa 1 META I. Stisku 1 META 1 odpovd buto
stisk klvesy lev 1 ALT 1 nebo stisk a uvolnn klvesy 1 ESC I. Stisk klvesy 1 META 1 bu
deme oznaovat M - . Po sob jdouc stisky klves budeme oddlovat mezerami, tedy
napklad C - x i znamen nejprve dret 1 CTRL 1 a stisknout 0, uvolnit 1 CTRL 1 a potom
stisknout [D. Akoliv se tato notace me zdt na prvn pohled exotick, vrazn zjed
noduuje zpis klvesovch zkratek. Nebude-li to na kor pehlednosti, budeme ji
v dalm textu pouvat.
V ukzkovch pkladech je pouit s t ro j op i s pro vstupy operanho systmu
a program. Tun s troj op i s je pouit pro zdraznn vstup uivatele.
Dle je dobr upozornit na fakt, e systm Unix striktn rozliuje velk a mal
psmena, jednak na rovni systmovch pkaz, ale i u jmen soubor, uivatelskch
jmen a klvesovch zkratek. Tato vlastnost se nazv case-sensitivity. Citlivost na
velk a mal psmena ji dle nebudeme zdrazovat, je ale nezbytn mt ji neustle
na pamti.

2.1. Vstup uivatele do sy stmu


Z hlediska bhu rozliuj systmy Unix dva uivatelsk reimy,

jednouivatelsk reim - singleuser mode,


vceuivatelsk reim - multiuser mode.

S jednouivatelskm reimem se bn uivatel nesetk, systm takov reim po


uv v prbhu svho startu. Systm je rovn schopen vynucen se pepnout do
jednouivatelskho reimu pi kritickch chybch. Pepnutm do jednouivatelskho
reimu je znemonna prce bnm uivatel a systm ek na dal kroky admi
nistrtora. Zjednoduen eeno, jednouivatelsk reim se vyznauje pedevm
omezenm monosti prce s potaem pouze na administrtora systmu.
14 Kapitola 2. Zklady prce v systmu

Ve vceuivatelskm reimu mohou s potaem pracovat i bn uivatel. Pokud


chce uivatel zahjit prci se systmem, mus v naprost vtin ppad prokzat
svou totonost pomoc svho uivatelskho jmna a hesla. V nkterch ppadech nen
heslo potebn, systm me bt schopen provst oven hodnovrnosti uivatele
jinm zpsobem, napklad na zklad jeho elektronickho kle.
Je pirozen, e ve vceuivatelskm reimu vedle sebe koexistuje nkolik ui
vatel. Kad uivatel m pidlen svj et - account. Soust tu jsou zkladn
informace o uivateli, napklad jeho jmno nebo teba heslo v zaifrovanm tvaru.
Ne vichni uivatel jsou si v systmu principiln rovni. Uivatele lze rozdlit do
t skupin.
Bn uivatel reprezentuj skuten fyzick uivatele systmu, napklad stu
denty, zamstnance a podobn. Jmna bnch uivatel se obvykle odvozuj
ze jmen a pjmen osob.
Systmov uivatel nereprezentuj fyzick osoby. Tito uivatel maj v systmu
speciln vznam a jsou zpravidla nezbytn pro sprvn a bezpen bh sys
tmovch slueb. Typickmi systmovmi uivateli jsou napklad daemon,
ma i l , news, nobody a dal. Vtina systmovch uivatel m z bezpenost
nch dvod zablokovno pihlaovn do systmu.
Superuivatel roo t m v systmu zcela vsadn postaven. Jeho privilegia jsou
neomezen. Superuivatel root slou k administraci systmu, instalaci soft
waru, sprv uivatelskch t a podobn. Heslo superuivatele root by
nikdy nemlo padnout do nepovolanch rukou.
Z hlediska vstupu uivatele do systmu rozliujeme dv situace. V prvnm ppad je
uivatel fyzicky ptomen u potae nebo jeho terminlu a me s potaem pracovat
pmo. Druhou monost je pracovat s potaem vzdlen. V praxi to znamen, e
uivatel fyzicky sed u potae i terminlu a pracuje s jinm vzdlenm potaem
prostednictvm potaov st. Pihlen uivatele do systmu, kterm zapon
kad sezen, tedy dlme na lokln pfihlen - local login a vzdlen pfihlen - remote
login. Ob metody pihlen jsou popsny v nsledujcch paragrafech.

Lokln pihlen
Pi loklnm pfihlen je vyadovna fyzick ptomnost uivatele u potae, je
pitom jedno, jestli sed pmo u potae nebo s nm komunikuje pomoc hardwaro
vho terminlu. U loklnho pihlen je vdy nutn provst oven hodnovrnosti
uivatele - autentizaci. Pi loklnm pihlaovn je hodnovrnost uivatele kontro
lovna pomoc jeho uivatelskho jmna a hesla . Uivatelsk jmno se skld ze znak
a sel, heslo by mlo mt velikost alespo est znak, mlo by vdy obsahovat velk
i mal psmena, sla a interpunkci. Z bezpenostnch dvod se rovn nedoporu
uje volit hesla zaloen na bzi uivatelskch daj nebo na slovnkovch frzch.
Takov hesla mohou bt snadno odhalena pomoc "hrub sly" a jednoduchch slov
nkovch metod.
2. 1 . Vstup uivatele do systmu 15

Ukame s i nyn typick pihlaovac schma. Pi loklnm pihlen jsme syst


mem nejprve vyzvni ke vloen uivatelskho jmna, na to ns upozoruje nsle
dujc vzva:

l ogin :

Po vloen jmna a stisku klvesy 1 ENTER 1 je uivatel vyzvn zadat heslo.

l og i n : novakj I ENTER I
Pas sword : . . tady heslo nen vidt . . .
.

Heslo se z bezpenostnch dvod bhem vkldn nevypisuje na terminl, je vak


poteba ukonit jej opt klvesou 1 ENTER I. Ve skutenosti je poteba klvesu 1 ENTER 1
pouvat pi dokonen kadho vstupu, dle ji tento fakt nebudeme zdrazovat.
Pokud uivatel udlal chybu ve svm uivatelskm jmnu anebo heslu, objev se
varovn hlen.

Log i n incorre c t .

Systm pitom bl nespecifikuje, kde konkrtn chyba nastala. Tato strategie je


zcela zmrn, systm zbyten nezveejuje informace, kter by potenciln mohly
bt zneuity. Zkladn uivatelsk kroky po korektnm pihlen jsou shrnuty v ka
pitole 2.2.

Vzdlen pihlen
Princip vzdlenho pihlen je obdobn, uivatele vak od potae dl pota
ov st: napklad Internet nebo lokln potaov st: Vzdlen pihlaovn je po
teba pouvat v ppad, kdy nemaj uivatel fyzick pstup k potai. V podniku
me bt napklad jeden vkonn server zamen ve speciln mstnosti, pokud
s nm chtj zamstnanci pracovat, mus se na nj pihlsit vzdlen. Nutn pod
mnky pro spn vzdlen pihlen jsou dv. Uivatel mus mt v prvn ad na
vzdlenm potai platn uivatelsk et. Druhou podmnkou je funkn stov
spojen a oboustrann podpora nkter ze slueb vzdlenho pihlaovn.
Rozeberme nyn vzdlen pihlaovn podrobnji. Pedpokldejme, e uivatel
novakj fyzicky sed za potaem A a chce se vzdlen pihlsit k potai B. Pro
uivatele novakj je tedy A lokln pota, na kterm nemus nutn bet operan
systm unixovho typu, pota B je vzdlen unixov systm. Situaci vystihuje
nsledujc obrzek.

\ //- st' ---" '\.


A

potta B pota A
16 Kapitola 2. Zklady prce v systmu

Vzdlen pota, na kter se uivatel pihlauje, se obvykle nazv hostitel. Na


hostiteli mus bet program zajitujc vzdlen pihlen remote login daemon. Na
-

obrzku jej reprezentuje proces nazvan "daemon". Uivatel snac se vzdlen pi


hlsit mus rovn pouvat speciln klientsk program, na obrzku jej reprezentuje
uivatelsk proces nazvan "klient". Oba dva procesy spolu komunikuj prosted
nictvm potaov st a pouvaj k tomu smluven pihlaovac protokol.
Klientsk program nejprve pod o navzn spojen s hostitelem. Hostitel me
spojen buto odmtnout, nebo pistoup k oven hodnovrnosti uivatele pomoc
uivatelskho jmna a hesla nebo njakm jinm zpsobem. Pokud je uivateli po
volen pstup, dl ji se vzdlenm systmem pracuje stejn, jako by byl pihlen
lokln. Klientsk program zasl hostiteli informace o stisknutch klvesch, hosti
tel zasl klientovi informace o zobrazovanch znacch. Iluze lokln prce je tm
dokonal, zvl pokud je mezi obma potai rychl stbv spojen.
Vzdlen pihlaovn s sebou pin nkolik technologickch problm. Klient
posl hostiteli citliv daje po nechrnn potaov sti, napklad uivatelsk heslo.
Pokud je heslo zaslno v itelnm tvaru, existuje riziko, e jej nkdo zachyt a zne
uije. Z pohledu bezpenosti lze rozdlit sluby vzdlenho pihlaovn do dvou
skupin ifrovan sluby a neifrovan sluby. ifrovan sluby neposlaj citliv data
-

pmo, ale zakdovan pomoc silnch asymetrickch ifer, jejich pouit v nechr
nn sti lze vc ne jen doporuit.
Mezi nejznmj sluby vzdlenho pihlen pat Telnet a SSH. Telnet je velmi
star sluba, pracuje neifrovan a heslo posl zabalen v jednom datagramu. Slubu
je vhodn pouvat pouze v uzaven sti nebo v sti pouvajc dkladnou datagra
movou hradbu. Telnet vyaduje pro autentizaci uivatelsk jmno a heslo uivatele.
Sluba SSH Secure Shell je ifrovanou obdobou sluby Telnet. Je vak celkov mno
-

hem mocnj a umouje napklad rzn druhy autentizace. Pihlaovac klienti


pro Telnet a SSH jsou obvykle k dispozici pro adu operanch systm. Bli popis
obou slueb naleznete v kapitole 7.5.

2.2. Prvn kroky v systmu


V nsledujcm textu jsou strun popsny zkladn kroky uivatele v systmu.
Pedpokldejme, e se uivatel Jan Novk spn pihlsil do systmu na potai
phoenix pod uivatelskm jmnem novakj . Uivatel po pihlen obdr zhruba
nsledujc vpis.
l ogin : novakj
Pas sword :
Last l ogin : Mon Jun 1 1 1 1 : 3 5 : 2 8 2 0 0 1 f rom t i tan on pt s / 3
Linux phoenix 2 . 4 . 5 # 1 SMP Mon May 2 8 0 8 : 3 8 : 0 7 CEST 2 0 0 1 i 6 8 6
You have new ma i l .
$

Prvn dek uivatele informuje o jeho poslednm pihlen do systmu. V naem


ppad se uivatel naposledy hlsil 1 1 . ervna 2001 z potae t i t ano Druh dek je
zvisl na konkrtnm operanm systmu, v naem ppad se jedn o Linux, jdro
2.2. Prvn kroky v systmu 17

verze 2.4.5 s podporou symetrickho multiprocesingu (zkratka SMP) . Z informac


v druhm dku lze rovn vyst, kdy bylo jdro sestaveno a na jak platform
systm funguje, v naem ppad se jedn o Intel i686.
Za druhm dkem se mohou objevit dodaten informace od sprvce systmu.
Jedn se zpravidla o dleit informace zveejnn pro vechny uivatele. Nap
klad bhem reinstalace systmovch program se nemus vechny programy chovat
korektn. Sprvce systmu me na tuto skutenost upozornit pomoc veejnho sou
boru "Message OJ The Day", jeho obsah se vype kadmu uivateli po pihlen
do systmu.
Na tetm dku systm upozoruje uivatele, e m ve sv potovn schrnce
nepetenou potu. Informace o umstn a ten elektronick poty jsou uvedeny
v kapitole 7.4. Pokud je potovn schrnka przdn, systm tuto skutenost buto
nebude nijak ohlaovat, nebo vype hlen "No ma i l " .
Jakmile se uivatel pihls, automaticky se spust uivatelv pfihlaovac pfkazov
interpret - login shell. Informace o pihlaovacm pkazovm interpretu jsou pmo
soust uivatelskho tu a uivatel je neme svvoln mnit. Interpret pkaz
ek na posloupnost pkaz od uivatele, tuto skutenost ohlauje prompt. Prompt je
posloupnost symbol, kterou vypisuje pkazov interpret. Jeho konkrtn tvar si me
uivatel dle libosti upravit, v zsad ale plat, e prompt je ukonen znakem ,, $ ",
pokud jde o bnho uivatele, nebo ,,# " , pokud jde o superuivatele roo t . V na
ukzce je prompt tvoen pouze znakem " $ ", za nm nsleduje kurzor. Tvar promptu
lze upravit. Z uivatelskho hlediska je napklad praktick umstit si do promptu
informaci o aktulnm adresi, viz kapitolu 5.4.
Zadvn pkaz v shellu je pmoar. Kad pkaz je zpracovn shellem a
pot, co uivatel ukon jeho vkldn klvesou 1 ENTER I. Jednotliv pkazov interprety
se li mrou pohodl, kterou poskytuj uivateli pi editaci pkaz. GNU Bash je
velmi vyspl, obsahuje napklad historii pkaz, kterou lze jednodue prohledvat.
Zkladn klvesov zkratky pro ovldn shellu GNU Bash jsou v nsledujc tabulce.

klvesa vznam
C-a sko na zatek dku
C-e sko na konec dku
C-d sma znak na pozici kurzoru
C-u sma znaky od zatku dku do pozice kurzoru
C-k sma znaky od pozice kurzoru do konce dku
C-t zam posledn dva znaky a posu se vpravo
C r
- hledej v historii pkaz
C- krok zpt - undo
C-y vlo smazan text na pozici kurzoru
C- 1 vyisti obrazovku
M- < najdi posledn pkaz
M- > najdi prvn pkaz
M- 1 peve slovo na mal psmena
M-u peve slovo na velk psmena
18 Kapitola 2. Zklady prce v systmu

Veker pkazy zadvan v shellu mus bt opt chpny jako case-sensitive. Jakmile
je zadn pkaz pro ukonen pkazovho interpretu, sezen uivatele je ukoneno.
Pkazov interpret lze ukonit stiskem C - d na przdnm dku, stejn efekt m pkaz
exi t. Interpret GNU Bash m rovn pkaz l ogout, ten na rozdl od pkazu exi t
ukonuje pouze pihlaovac shell. Uivatel toti me ze svho pihlaovacho shellu
spustit dal shell. Tento "vnoen" shell lze ukonit pkazem exi t nebo klvesou
C - d, ale nelze jej ukonit pkazem l ogout. Systm by pi pokusu pout l ogout
ve vnoenm shellu vypsal chybov hlen
$ logout
bash : l ogout : not l ogin she l l : use ' ex i t '

Bhem prce se uivatel me setkat se zdnliv netypickm chovnm interaktiv


nch program, napklad klient na ten poty nebo textovch editor. Problmem
me bt nastaven emulace terminlu. Se patnm nastavenm emulace terminlu
se lze setkat napklad pi pihlen na vzdlen systm nepodporujc pouvan
typ terminlu. Nastavenm promnn prosted TERM lze vybrat pijateln terminl.
Napklad pomoc pkazu
$ export TERM= " vt l O O "

j e nastavena promnn TERM n a hodnotu v t 1 O O , co j e oznaen pro standardn


terminl, kter by neml dlat pote v dnm systmu. Promnnou TERM pouv
systmov knihovna ncurses starajc se o vstup na terminl. Soust knihovny je
i databze terminl. Uivatel by ml vdy nastavit nkter z terminl dostupnch
v databzi systmu.

2.3. Zkladn pkazy a obslun pro gramy


V vodnch kapitolch bylo konstatovno, e Unix je tich. Tato vlastnost se
projevuje nejvc pi prci s pkazovm interpretem. Pokud pkaz nebo program
nepln informativn el, chov se implicitn tie. Pouze v ppad chyby vype
hleni. Stejn tak se chov i sm interpret pkaz.
Mezi nejastji pouvan pkazy shellu pat pkaz sputn programu . Pomoc nj
me uivatel spoutt dal extern programy a vyuvat jejich slueb. Syntaxe p
kazu sputn programu je jednoduch. Pkaz sestv ze slov oddlench mezerami.
eeno pesn, oddlovaem slov je whitespace alespo jednoprvkov sekvence me
-

zer a/nebo znak tabultor. Prvn slovo v pkazu se mus shodovat buto se jmnem
vestavnho pkazu interpretu, nebo se mus shodovat se jmnem spustitelnho souboru
umstnho na cest. V prvnm ppad je vykonn vnitn pkaz shellu. V druhm
ppad je sputn extern program danho jmna. Ponechme zatm tyto pojmy na
rovni intuice, dl se k nim vrtme v kapitole 5 . 1 . Pokud by prvn slovo pkazu
nesplovalo dnou z pedchozch podmnek, shell by vypsal chybov hlen
$ blahblah
bash : bl ahb l ah : command not f ound
2.3. Zkladn pkazy a obslun programy 19

Shell zahlsil chybu, jeliko b l ahb l ah nen vestavn pkaz a v naem mo


delovm ppad to ani nen spustiteln program. Pedchoz pkaz sestval pouze
z jednoho slova. Je-li v tle pkazu ptomno vce slov, oznaujeme je jako argumenty.
Pod pojmem pepna je zpravidla mylen speciln argument zanajc znakem " - ".
Pepnae maj zvltn vznam - mn chovn sputnch program. Nejprve si
ukame sputn programu bez dodatench argument.
$ who
pes pts / O Jun 11 11 : 21 ( bouda . upol . c z )
j e z ekm pt S / 1 Jun 7 18 : 14 ( thunde r . upol . c z )
pes pt s / 3 Jun 11 11 : 59 ( bouda . upo l . c z )
novakj pt s / 5 Jun 11 16 : 15 ( t i t an . inf . upol . c z )
pol akr t typ O Jun 11 11 : 34 ( 1 5 8 . 1 94 . 92 . 5 5 )

Jeliko byl program who sputn bez argument, provedl vpis pihlench
uivatel v systmu. Vpis sestv z informac o uivatelskm jmnu, sle terminlu,
asu pihlen a domnovm jmnu uzlu, z nho se uivatel pihlsil. Program who
lze spustit i s argumenty. Viz nsledujc ukzku.
$ who am i
phoenix ! novakj pt s / 5 Jun 1 1 1 6 : 1 5 ( t i t an . inf . upol . c z )

V pkladu byly pedny dva argumenty "am" a " i " . Podotknme, e tyto ar
-

gumenty nejsou samostatn programy, jejich zpracovn je pln v reii sputnho pro
gramu. V tomto ppad je to program who. Pedchoz voln programu who slou
k identifikaci uivatele, kter je pihlen v systmu na konkrtnm terminlu. Pokud
pouvte jeden et a jednoho hostitele, me se vm tento program zdt nadby
ten. Na druhou stranu pi souasnm pouvn vce t na rznch hostitelskch
potach me pedchoz voln who usnadnit orientaci ve zmti terminl.
Jmno pihlenho uivatele lze vypsat i jinak, napklad pomoc programu
whoam i . Jak ji ale z nzvu programu vyplv, jedn se o zcela jin program, ne
je who. Viz pklad.
$ whoami
novakj

Program whoami nevypisuje pota, na kterm probh sezen ani dal podrobn
daje. Na tomto pkladu je dobr uvdomit si, e who a whoami jsou dva rzn pro
gramy, kter spolu nijak nesouvisej. I kdy se nm voln "who am i " a "whoami "
mohou zdt podobn.
Detailn popis uivatel pihlench v systmu lze zskat pomoc programu w.
$ w
4 : 2 6pm up 1 0 days , 7 : 5 3 , 6 u s e r s , l oad avg : 0 . 00 , 0 . 00 , 0 . 00
USER TTY FROM LOGIN@ ! DLE JCPU PCPU WHAT
pes pt s / O bouda . upol . c z 1 1 : 2 1 am 1 0 : 4 5 0 . 10s O . OOs bash
j e z ekm pt s / 1 thunder . upol . c z Thu 6pm 2 : 5 4m 0 . 12s 0 . 12s bash
novakj p t s / 2 t i t an . inf . upol . c z 8 : 3 1 am 7 : 5 4m 0 . 05s 0 . 05s bash
20 Kapitola 2. Zklady prce v systmu

pes pt s / 3 bouda . upol . c z 1 1 : 5 9 am 1 2 : 4 8 0 . 1 6 s 0 . 1 6 s f t p


novakj ptS/4 t i t an . i nf . upol . c z 4 : 2 6pm O . O O s 0 . 0 5 s 0 . 0 3 s w
pol akr t typ O 1 5 8 . 1 94 . 92 . 5 5 1 1 : 3 4 am 4 : 4 8m 1 : 0 4 0 . 0 3 s bash

Na prvnm dku vpisu jsou daje o bhu systmu, tyto informace lze zskat
i pomoc programu upt irne . Na dalch dcch jsou informace o uivatelch. Zaj
mav daj je I DLE reprezentujc dobu od posledn odezvy uivatele. daje JCPU,
PCPU udvaj as bhu proces uivatele. Druh z daj zahrnuje i procesy bc na
pozad. Posledn sloupec vpisu reprezentuje posledn sputn program.
Podrobn informace o jednom uivateli lze zskat pomoc programu f inger
akceptujcho jako argument buto uivatelsk jmno, nebo jmno hostitele ve tvaru
@<Jhostitel r>. Uivatele lze specifikovat i uivatelskm jmnem a jmnem hostitele
souasn. Argument m potom tvar <J uivatel r>@<J hostitel r>. Argument v poslednm
uvedenm tvaru je vhodn pro zskvn informac o uivatelch na vzdlench
systmech.

$ f inger opicha1 s@phoenix . inf . upo1 . c z


Login : op i cha l s Name : S t ani s l av Op i cha l
D i re c t ory : / home / o t he r s / op i cha l s Shel l : / b in/bash
Last l og i n Tue May 22 1 1 : 3 8 ( CEST ) on pt s / 2 f rom a l pha
Ma i l l a s t read Fri Apr 2 7 1 1 : 5 3 2 0 0 1 ( CEST )
P l an :

Program f inge r poskytuje informace o poslednm asu, kdy se uivatel pihlsil,


a napklad i informace o poslednm vyzvednut poty, co me bt uiten. Pro
gram f inge r funguje jako jedna ze stovch slueb, nejvc je vyuvn na unixovch
platformch. Jeliko se jedn o slubu, ne vechny servery ji mus poskytovat. Prv
naopak. Pomoc tto sluby je mon zskat citliv informace, napklad o dob do
stupnosti konkrtn osoby, proto tuto slubu vtina veejnch server neposkytuje.
Dal vyuit sluby ten nalezne v kapitole 7.6.
Dalm informativnm programem v systmu Unix je dat e . Program dat e vypi
suje systmov as. as je v Unixu reprezentovn potem sekund, kter ubhly od
plnoci 1. ledna 1970. Program dat e bez argument vypisuje as v klasick podob
vetn informac o asovm psmu. esko spad do psma CET Central Euro -

pean Time. Potae s operanm systmem Unix si zpravidla uchovvaj svtov as


GMT Greenwich Mean Time, jin asov psma vypotvaj podle databze aso
-

vch psem, kterou maj systmy k dispozici. Pomoc programu dat e lze vypisovat
asov daje v rozlinch formtech. Nsledujc pklady ukazuj mon pouit
dat e pro vpis daj o ase, posledn z ukzek je vnitn unixov reprezentace.

$ date
Tue Jun 1 2 0 9 : 5 9 : 0 2 CEST 2 0 0 1
$ date + %d . %m . %Y
12 . 06 . 2 0 0 1
$ date +%s
9 9 2 3 3 2 6 81
2.4. Systmov dokumentace 21

Posledn zkladn potebou kadho uivatele, je zmna pstupovho hesla.


Na vod podotknme, e pro zmnu hesla lze pout dva programy, pas swd
a yppa s swd. Druh z nich se pouv v systmech vyuvajcch sdlen uivatel
skch t pomoc sluby NIS, pro detaily viz kapitolu 7.3. Pi zmn hesla pomoc
pas swd a yppas swd jde z uivatelskho hlediska o t proces. Nejprve je uivatel
dotzn na dosavadn heslo. Pot mus dvakrt zadat nov heslo, tm se pedchz
nechtnm peklepm. Bhem zmny hesla se samozejm nevypisuj dn znaky
na obrazovku. Viz pklad.

$ pas swd
Changing pas sword for novakj
Old pas sword :
New pas sword :
Retype new pas sword :
Pas sword changed .

2.4. S ystmov dokumentace


z potku se me uivatel pi prci s pkazovm interpretem ctit bezradn.
Systm navc obsahuje velk mnostv obslunch program a dalch nstroj.
V systmu jsou natst tm vechny dostupn nstroje systematicky dokumen
tovny. Uivatelm je k dispozici hned nkolik prohle dokumentace. Zkladn
informace o obslunch programech, ale teba i o funkcch programovacch jazyk
i o volnch jdra lze zskat pomoc manulovch strnek. Jde o elektronickou po
dobu fulltextov npovdy, kterou je mon prohlet pomoc program apropos,
wha t i s a man. Alternativou k manulovm strnkm je hypertextov dokumentan
systm GNU Info.

Manulov strnky
Manulov strnky jsou rozdleny do sekc. Napklad sekce 1 je vyhrazena pro
uivatelsk programy, sekce 2 je vylenna pro voln jdra, sekce 3 je vyhrazena pro
dokumentaci ke knihovnm funkcm a tak dle. Program what i s slou k vyhledn
zkladnch informac, demonstrujme si jeho pouit pkladem.

$ wha t i s print f
print f ( 1 ) - format and print data
print f ( 3 ) - forma t t e d output conve r s i on

Program what i s vypsal vechny vskyty manulovch strnek k vstupn frzi


"print f " vetn jejich sekc. Z pkladu je zejm, e v systmu se nachzej dv ma
nulov strnky, jedna k uivatelskmu programu p r i nt f, druh k funkci p r i nt f
jazyka C. Program apropos se chov obdobn jako what i s . Vype seznam strnek
obsahujcch zadanou podfrzi v nzvu nebo v popisu manlov strnky. Celou do
kumentaci k zadan frzi lze prohlet pomoc programu man, viz nsledujc ukzku
pouit.
22 Kapitola 2. Zklady prce v systmu

$ man printf
Re f orma t t ing print f ( l ) , please wa i t . . .
. . . zde bude strnka zobrazena . . .
$ man 3 print f
Re f ormat t ing print f ( 3 ) , p l e a s e wa i t . . .
. . . zde bude strnka zobrazena . . .

V prvnm ppad se po dokonen formtovn zobraz strnka ze sekce I , vdy


se pednostn zobrazuj strnky ze sekc s menm slem. V druhm ppad si
uivatel explicitn vynut zobrazen strnky ze sekce 3. Na nsledujcm obrzku je
ukzka sti manulov strnky k programu who.

WHO ( 1 ) F SF WHO ( 1 )

who - show who i s l ogge on

S'V)07S I S
who [OPT I ON ] . . . F I L- 1 ARG1 ARG2 ]

DESCR I Pf I ON
- H , - -head i ng
pr i nt l i ne o f co l uMn hea i ngs

-i, -LI, - - i cl l e
a user i l e t i Me a s HOURS : H I NUT S , . or o l

- I , - - l ooIwp
atteMpt t o canon i ca l i ze hostnaMes v i a DNS

-ft on l y hostnaMe an user assoc i ate w i t h st i n

-q, - -cowrt
Hanua l page who( 1 ) l i ne 3

Manulov strnky jsou velmi jednoduch a vesms se dr zkladn struktury.


Tm kad strnka je rozdlena do st oddlujcch logick celky dokumentu.
Manulov strnky maj definovny jmno a strun popis. Dal oddly jsou voliteln
a do jist mry souvisej s dokumentovanm programem, slubou, pkazem nebo
funkc. Napklad u knihovnch funkc programovacho jazyka C je zvykem uvdt
oddl "CONFORM ING TO " oddl uvd standardy zahrnujc definici dan funkce.
-

Hypertextov dokumentace Info


Klasick manulov strnky bohuel krom odkaz v oddlu "SEE ALSO " ne
obsahuj dn odkazy na souvisejc dokumenty ani jednotn nedefinuj odkazy
v rmci jednoho dokumentu. Tato vlastnost nevadila v dob jejich vzniku, kdy s po
tai pracovali pouze skuten odbornci a dokumentace k systmovm nstrojm
nebyla nikterak rozshl. V souasnosti vak pro systmy odvozen z Unixu existuje
nessln softwarovch balk a jejich dokumentace si vydala nov pstup.
V rmci projektu GNU byl vyvinut hypertextov dokumentan systm GNU
Info. Dokumenty pro GNU Info jsou zalenny do hierarchie s jednm potenm
2.4. Systmov dokumentace 23

dokumentem hlavn strnkou dokumentace. Hlavn strnka slou v dokumentaci


-

jako "rozcestnk", jsou v n uvedeny odkazy na dal dokumenty. Dokumenty na


nich rovnch hierarchie mohou opt obsahovat odkazy buto v rmci vlastnho
dokumentu, nebo na ostatn dokumenty.
Systm npovdy GNU Info je mon prohlet napklad pomoc programu
in fo. Ve vtin ppad je program spoutn bez dodatench argument. Program
info pracuje v celoobrazovkovm reimu a po svm startu zobraz hlavn strnku
npovdy. Pedpokldejme, e uivatel spustil program info. Na obrazovce me
vidt napklad nsledujc vpis.

* l n f o : ( i nfo ) . Documentat i on brows ing sys t em .


* Emac s : ( emac s ) . The extens i b l e s e l f - document ing t ext editor .
* Gnus : ( gnus ) . The news reader Gnus .
* cVS : ( cvs ) . Concurrent Ve r s i ons Sys t em
* GCC : ( gc c ) . The GNU Comp i l e r Col l e c t ion .

V dokumentech pro GNU Info jsou znakem hvzdika " * " uvozeny odkazy na jin
dokumenty. Hlavn strnka dokumentace je zpravidla tematicky rozdlena a odkazy
na dal dokumenty jsou zde uvedeny v pehlednch seznamech. Samotn odkazy
jsou doplnny i krtkm popisem, jak je tomu i v pedchoz ukzce. Pokud si chce
uivatel pest nkter z dokument, mus nsledovat pslun odkaz. Uivatel se
napklad me kurzorovmi ipkami pesunout na odkaz k dokumentu a stisknout
klvesu 1 ENTER I. Ovldn programu info je v nkterch ppadech dost nezvykl.
Nsledujc tabulka shrnuje zkladn klvesov zkratky.

klvesa vznam
q ukonen prohlee
u pechod na nadazen uzel npovdy
p pechod na pedchzejc uzel npovdy
n pechod na nsledujc uzel npovdy
m najdi poloku v menu podle jmna
C-h npovda
C-s hledej dopedu
C-r hledej dozadu

Mezi nejdleitj klvesy pat prv u, p a n. Jednm stiskem klvesy u se uivatel


dostane o rove v. Pokud si v naem ppad uivatel zane st dokumentaci
k programu GNU Emacs a rozhodne se pest si dokumentaci k pekladai GCC,
mus se nejprve vrtit na hlavn strnku dokumentace. Tak lze uinit prv stiskem
klvesy u . Pokud se uivatel v dokumentaci "ztrat", vdy se pomoc nkolika stisk
klvesy u dostane na hlavn strnku dokumentace. Klvesy p a n slou k pohybu
mezi stmi dokumentu pouze v rmci jedn rovn. Problematiku demonstrujme na
pkladu. Nsledujc schma zachycuje st struktury dokumentace k textovmu
editoru GNU Emacs.
24 Kapitola 2. Zklady prce v systmu

Ema c s

D i s t r ib
/ ""Copying Glos sary Ant inews S c reen Us e r I nput

Point

Echo Area
\
Mode L i ne Menu Bar

Pokud by napklad uivatel prohlel uzel "Ant inews " , stiskem klvesy n by
peel na uzel " S c reen " . Dalm stiskem klvesy n by uivatel peel na uzel "Us e r
I nput " , nikoliv na uzel " Po i nt " . Kdyby chtl uivatel st nkter z uzl vno
ench ve " S c reen " , musel by se na patin uzel pesunout ipkami a stisknout
klvesu 1 ENTER I. Na dalm obrzku mete vidt zkladn uivatelsk rozhran pro
gramu info. Aktuln zobrazen uzel "Us e r I n f o rmat i on " obsahuje odkazy na
dokumentaci k programm, kter informuj o uivatelch systmu.

f i l e : sh - ut i l s . i nfo , Noc:le : User i nforNat i on , Next : Syst eN cont ext , Pre\


v : Work i ng context , Up : Top

User i nforNat i on
********** ****

Th i s sect i on c:lescr i bes cONr,anc:ls t hat pr i nt user - re 1 atec:l i nforNat i on :


l og i ns , groups , anc:l so fort h .

* Menu :

* i c:l i nvocat i on : : Pr i nt rea l anc:l effect i ve u i c:l anc:l g i c:l .


* 1 0gnaNe i nvocat i on : : Pr i nt current 1 og i n nar'e .
* whoaN i i nvocat i on : : Pr i nt effect i ve user i c:l .
* groups i nvocat i on : : Pr i nt group nar'les a user i s i n .
* users i nvocat i on : : Pr i nt 1 og i n nar'les of users current 1 y I oggec:l in.
* who i nvZc at i on : : Pr i nt who i s current l y l oggec:l i n .

- - zz- I nfo : ( sh - ut i 1 9 . i nfo . gz ) User i nforr'lat i on , 1 8 I i nes - - A I I - - - - - - - - - - - - -

Dal zdroj e informac


Systm Unix dle obsahuje npovdu ve form HTML a SGML dokument. Sou
bory s dokumentac jsou umstny ve specilnch adresch, viz kapitolu 3.9. Dal
informace o nkterch operanch systmech vychzejcch z koncepce Unixu lze na
lzt v etnch diskusnch listech prostednictvm veejnch potaovch st. Jedn
se pedevm o oteven a voln iiteln operan systmy. Bli popis k diskusnm
listm je uveden v kapitole 7.4. Ped zaslnm dotazu do diskusnho listu se nej
prve vyplat prohledat jeho archiv, Pokud uivatel naraz na problm, s nm si nev
rady, je dost pravdpodobn, e nebyl prvnm a ani poslednm uivatelem, kter se
s tmto problmem setkal. Na vtinu zatenickch dotaz jsou odpovdi prv
v archivech diskusnch list.
Uivatelsk programy v UNIXu nemus znt vnitfn organizaci,
kterou pouv jdro systmu k ukldn soubor . Programy obvykle
pracuj s obsahem soubor pouze jako s posloupnost jednotlivch
znak. Programy mohou obsah souboru rzn interpretovat, to vak
nem dn vliv na zpsob uloen dat operanm systmem.
Maurice J. Bach: The Design of The UNIX Operating System.

Souborov systm

V prvopotcch ry "programovatelnch samoinnch pota " nebyla takov po


teba organizovat data jako dnes. lohy byly zpracovvny dvkov, datovm no
siem byl zpravidla drn ttek nebo magnetick pska. S rozvojem externch pa
mtbvch mdi, umoujcch perzistentn uloen vtho mnostv dat vyvstalo
nkolik problm. Prvn problm se objevil okamit problm diferenciace dat . Pro
-

gramy zpracovvan potaem obsahuj rzn data, kter by se v dnm ppad


nemla "mchat" . Druh navazujc problm je k prvnmu problmu duln: "Jak
pehledn shlukovat data, kter k sob kontextov pat?".
Operan systmy vyeily pedchzejc problmy zavedenm promylen orga
nizace dat souborovch systm. Jednotliv operan systmy si pro sv souborov
-

systmy zvolily rzn cle, co se bezprostedn odr v jejich architektue a monos


tech. Z jinho hlu pohledu souborov systm slou opt k odstnn uivatelskch
loh od hardwaru potae. Uivatelm a programtorm jsou operanm syst
mem poskytovny sluby vy rovn. To jest napklad programtor se pi zpisu
na disk nestar o roztoen disku nebo vystaven hlaviky na danou stopu, nbr
pouv pkazy pracujc se soubory jako s proudy dat. Stejn tak uivatel m zpravi
dla k dispozici sadu uivatelskch nstroj pro sprvu souborovch systm a pro
manipulaci se soubory.

Nosie dat a souborov systmy


Podsystm jdra starajc se o souborov systmy a nosie dat m obvykle vrs
tevnou architekturu. Rozvrstven je do velk mry dno i hardwarem. Clem vrstevn
architektury je vdy oddlit od sebe logicky nesouvisejc sti. Napklad mani
pulace s diskem na fyzick rovni je zcela jin ne programtorsk manipulace se
souborem. Vrstevn architektura umouje zamovat jednotliv prvky bez nutnosti
mnit ostatn. V dsledku lze napklad provozovat star typ souborovho systmu
na novm hardwarovm zazen a je v podstat jedno, zdali v dob vzniku soubo
rovho systmu bylo konkrtn zazen k dispozici, i nikoliv. Obvykle rozliujeme
ti vrstvy.
Nejspodnj vrstvou je nosi dat, napklad pevn disk nebo diskov pole. Nosi
dat mus bt podporovan operanm systmem. To jest operan systm mus
26 Kapitola 3. Souborov systm

bt schopen zskat od nosie dat informace o jeho stavu a mus bt schopen


dvat nosii povely k fyzickmu ten a zpisu dat.
Nosie dat jsou zpravidla rozdleny na diskov oblasti - disk partitions. Diskov
oblasti mohou bt dvojho druhu. Nejrozenj jsou statick diskov oblasti
vytvoen ped nebo bhem instalace zkladnho softwaru na pota. Nejastji
pouvanm typem diskovch oblast na potach platformy Intel je MS-DOS
Partition Table. Na ostatnch platformch se pouvaj jin typy oblast, dost
asto se lze setkat se statickmi oblastmi typu Disk Label. Napklad Digital
Unix pouv OSF / 1 Disk Label. Statick oblasti maj adu nevhod, bhem
prce je nelze pli prun zvtovat i zmenovat dle aktuln poteby. Tento
problm e dynamick diskov oblasti, kter jsou implementovny ve vtin
vysplch operanch systm. Svou implementaci dynamickch diskovch
oblast m ji i operan systm Linux, jedn se o LVM - Logical Volume Manager.
Jednotliv diskov oblasti jsou obsazovny souborovmi systmy - systmy pro
organizaci dat reprezentovanch datovmi soubory. Souborov systm pedsta
vuje vrstvu nad nosiem dat. Jednotliv entity v rmci souborovho systmu
se nazvaj soubory. Viz nsledujc obrzek.
dioblast
skov " " nosi
--,-
---
souborov systm
',_

o-:::::: :: ::== soubory

Koncepce souborovch systm operanho systmu Unix je mezi ostatnmi ope


ranmi systmy uniktn. Ji od potku implementace souborovch systm se
v Unixu dbalo na tyi zkladn poadavky.
Souborov systm by ml organizovat voln msto s maximlnm ohledem na jeho
mon pidlovn. Pokud je v souborovm systmu dostupn voln msto,
mus bt mon pidlit jej libovolnmu souboru, jestlie je to poteba. Poa
davek pidlovn volnho msta se samozejm netk nkterch specilnch
souborovch systm - napklad systm, kter slou pouze pro ten dat
(souborov systm na CD-ROM).
Kad datov soubor je v systmu jednoznan identifikovateln. Jednoznanou
identifikovatelnost je nutn provst na systmov i na uivatelsk rovni - pro
uivatele by identifikace soubor mla bt co mon nejintuitivnj.
Zkladn systmovou ideou je, aby se s datovmi soubory manipulovalo stej
nm zpsobem jako s fyzickm zazenm. Tento poadavek vystil v monost
reprezentovat hardwarov zazen pomoc specilnch soubor, viz kapitolu 3.4.
Implementace by mla bt co mon nejvce abstraktn. Mlo by bt mon
pracovat zrove s nkolika souborovmi systmy na rznch diskovch ob
lastech a zazench. Souasn pouvanm souborovm systmm by mla
bt ponechna volnost, co se te vnitn organizace dat.
3. 1 . Architektura souborovho systmu v Unixu 27

Z dalch nkolika podkapitol bude patrn, kterak se jednotliv poadavky pro


mtly do architektury operanho systmu a do stylu prce se souborovm systmem.
V souasnosti poskytuj souborov systmy jet dal sluby, kter dve nebyly
stejn. Jedn se napklad o diskovou kvtu umoujc prun omezovat diskov
prostor uivatelm. Dal vznamnou vlastnost souborovho systmu je transakn
zpracovn metadat neboli journaling. Transakn zpracovn slou k udren kon
zistence zznam o datech i v ppad nhlho pdu systmu zpsobenho teba
vpadkem proudu.

3.1. Architektura souborovho systmu v Unixu


v Unixu existuje jeden fundamentln pojem - soubor. Tm ve je v Unixu
soubor. Na prvn pohled se toto tvrzen me zdt a pli zjednoduujc, opak je
ale pravdou. Systm soubor je hlavnm spchem a vhodou Unixu. V doposud
vedench vahch o souborech bylo zcela zmrn voleno oznaen datov soubor.
Pojet souboru v Unixu je toti mnohem obecnj ne v jinch operanch systmech.
Nkdy je toti soubor chpn pouze jako "konen posloupnost znak ".
Kad soubor - file sestv ze t st: jmna souboru, administrativnch informac
a obsahu. Prvn dv sloky se souhrnn nazvaj metadata souboru a jsou povinn. Me
tadata jsou ve sv podstat "data popisujc data". V tomto ppad metadata nesou
jmno a administrativn informace o souboru. Obsah souboru je nkdy oznaovn
jako data souboru a je nepovinn. V systmu existuj soubory se specilnm vzna
mem, kter nepotebuj udrovat dn data. Jedn se napklad o pevn odkazy, pro
detaily viz kapitolu 3.5. Data lze chpat jako konenou posloupnost znak. Obsah
souboru sm o sob nem dn vznam, interpretace je mu dna a programem i
uivatelem, kter jej pouv. Strukturu souboru pibliuje nsledujc obrzek.
.." i-uzel ni . /
dminirmacestrativr-;:
I. jmno I. --1". / Info .
. L...i....J
.

Pi manipulaci se soubory na uivatelsk rovni se pro jejich rozlien pouvaj


jmna. Tato jmna mus bt na stejn rovni abstrakce vdy jednoznan, aby bylo
vdy mon odliit od sebe dva libovoln soubory. Administrativn informace m
kad soubor uloeny ve svm i-uzlu - i-node. Z pohledu systmu je jednoznanm
identifiktorem souboru prv i-uzel. Jmna jsou souborm zavdna z dvodu
snaz uivatelsk prce. Mezi administrativn informace obsaen v i-uzlu pat
napklad dlka souboru, informace o vlastnkovi souboru, daje o asu vzniku a modifikace
souboru, pfstupov prva a dal. Informacemi v metadatech se postupn zabvaj dal
kapitoly.

Virtuln a reln souborov systmy


Obdobn abstraktn jako soubor je v Unixu chpn i samotn pojem souborov
systm . Koncepce souborovho systmu je obzvl pozoruhodn v Linuxu. Operan
28 Kapitola 3. Souborov systm

systm Linux ji od potku podporoval vt mnostv rznch souborovch sys


tm. Krom svch vlastnch souborovch systm podporuje i souborov systmy
jinch operanch systm, teba HPFS, NTFS, FAT a adu dalch. V souasnosti po
et podporovanch souborovch systm pesahuje 20. Vzhledem k tomuto potu
bylo nutn oddlit implementaci relnch souborovch systm od systmovch slu
eb abstraktn vrstvou. Vznikl tak nov souborov systm VFS virtuln souborov -

systm.
Virtuln souborov systm je navren s ohledem na podporu leckdy velmi roz
dlnch souborovch3 systm, nkter z nich se pouvaj pouze ve specilnch p
padech. Napklad souborov systm ProcFS umouje pistupovat k systmovm
informacm poskytovanm jdrem jako k obyejnm souborm. Virtuln soubo
rov systm poskytuje pro kad reln souborov systm jednotn programov
rozhran. Detaily implementac jednotlivch souborovch systm jsou pro zbytek
jdra skryty. Programtorm se zven jev vechny souborov systmy stejn, pro
toe pi manipulaci se souborovm systmem vyuvaj pouze slueb VFS. Stejn
tak uivatel mohou pouvat tyt nstroje pro prci s rznmi souborovmi sys
tmy. Vztah virtulnho souborovho systmu k relnm souborovm systmm je
zobrazen v nsledujcm schmatu.

relnrov
soubo /,, 0Ioha 1)
systmy virtuln ,/ GUoha D
..
.. ..


. .

.. ..
souborov API
systm

Jednou z hlavnch pednost virtulnho souborovho systmu je monost snadno


pracovat s nkolika rznmi souborovmi systmy zrove. V Unixu se na rzn soubo
rov systmy uivatel neodkazuje pomoc sel nebo psmen, jak je tomu v jinch
systmech (napklad A : , C : V MS-DOSu). Unix umouje jednotliv souborov
systmy pipojovat a odpojovat na poadavek uivatele. Princip pipojen a odpojen
souborovch systm je popsn v dalch kapitolch.

3.2. Ob yejn soubory a adrese


Poadavky na jednoznanou identifikovatelnost souboru a monost shlukovat
soubory do logickch celk vedly k zaveden hierarchick struktury soubor. Pojem
hierarchick struktura lze pesn vymezit napklad pomoc teorie graf. Intuitivn
si lze hierarchickou strukturu pedstavit jako neorientovan acyklick souvisl graf
s jednm pevn vyznaenm vrcholem. Pevn vyznaen vrchol se nazv koen a
mezi ostatnmi vrcholy hierarchick struktury m vlun postaven.
V hierarchick struktue vede z kadho vrcholu pouze jedna cesta ke koenu.
Dky tomu lze ke kadmu prvku vyjma koenu jednoznan piadit jeho pedchdce.
3 Pojem "souborov systm" budeme nyn chpat jako " reln souborov systm".
3.2. Obyejn soubory a adrese 29

Neformln eeno, v hierarchick struktue figuruj uzly a ke kadmu z nich vyjma


jednoho existuje prv jeden pedchdce. Uzel bez pedchdce se nazv koen. Uzel,
kter nen pedchdcem dnho uzlu, se nazv list.
Graficky lze hierarchickou strukturu znzornit postupnm rovovm kresle
nm. Nejprve se zakresl koen. Na dal rovni jsou zakresleni jeho pm nslednci,
to jest uzly, jejich pedchdcem je prv koen. Koen se spoj s nslednky arou. Cel
proces opakujeme pro kadho nslednka zvl. Pklad hierarchick struktury je
na nsledujcm obrzku.

Koen struktury tvo "ptci". Listy jsou oznaeny edou barvou. Bl uzly re
prezentuj vnitn uzly, to jest nelistov uzly hierarchick struktury. Dle budeme
hierarchickou strukturu nazvat strom. Stromy dovoluj organizovat data tak, aby
byla jednoznan identifikovateln. Zrove umouj i jejich snadn vyhledvn.
Tvrci Unixu se inspirovali v hierarchickch strukturch a vytvoili koncept stromov
struktury adres.
Bhem prce v operanm systmu Unix je udrovn vdy prv jeden strom, je
ho uzly tvo soubory rznch druh. Strom se bhem ivota systmu dynamicky
mn. K jeho modifikaci dochz napklad pi uivatelskch akcch tm, jak jednot
liv uivatel vytvej nebo maou soubory. Dleitm faktem je, e strom je prv
jeden. Mezi prvn akce po startu systmu pat vytvoen tohoto stromu. Proces vy
tvoen je prost, jdro najde obraz souborovho systmu na disku a jeho strukturu
zavede do pamti. Na stromovou strukturu je dle mon pipojovat dal souborov
systmy. Tm Unix elegantn e otzku prce s nkolika souborovmi systmy zro
ve. Navc umouje pipojit t reln souborov systm na rzn msta stromov
struktury, obvykle vak ne souasn.

Nelistov soubory ve ve uvedenm stromu se nazvaj adresov soubory nebo


jen adrese - directories. Adres je jednm ze specilnch typ soubor, jeho kolem
je nst informace o potomcch. Potomek v tomto smyslu je soubor, jeho pedchdce
je prv dan adres, le tedy v hierarchii ne. Obsahem adresovho souboru
jsou odkazy na soubory lec ne v hierarchii. Bnji vak kme "adres obsa
huje soubory" msto "adres obsahuje odkazy na soubory". Akoliv je tento obrat
mrn zavdjc, budeme jej v dalm textu bn pouvat. Struktura adresovho
souboru je zachycena na nsledujcm obrzku.
30 Kapitola 3. Souborov systm

obsah adrese " ,/. i-uzel


administrativn1
'
/.

jmno - informace r;
/

i-.:l z:::: l:e:.... ativn /


!--'-
administ
'. 1

jmno 2 - -
. ,, /

informacer r-;: "


/ .. -- --I

I jmno .I .
.
1. ' '/
- - - i-lIzel2
---
--

administ
informacerativn
--
.

/
/p

. r; "
Adres me obecn obsahovat libovoln soubory, tedy i dal adrese. Ta
kovm adresm se k podadrese - subdirectories. Koenov adres se nazv
koen - root a zna se ul " . Jmno koenovho adrese je toton se jmnem pro
privilegovanho superuivatele roo t . Shoda jmen je zcela zmrn.
Uveden pojmy jsou demonstrovny na nsledujcm obrzku .
. a . . (..-'
- -. __4

Vznam sel a tekovanch ar bude objasnn pozdji. Koenov adres j obsa


huje dva podadrese, work a adu l t. Krom tchto podadres obsahuje jet ble
nespecifikovan soubor t ra sh. Podadres work obsahuje podadres s choo l , ten
vak ji dn dal podadrese neobsahuje. Uvaujme napklad soubor mi s c, jeho
pedchdcem je adres adu l t, kter se nazv rodiovsk adres. Soubory mov i e
a mi s c jsou n a stejn rovni abstrakce, maj spolenho pedka. Lze j e ale o d sebe
vzjemn odliit, jeliko maj rozdln jmna.

Absolutn cesta
Kad soubor je ve stromu jednoznan uren absolutn cestou . Absolutn cesta
je sekvence jmen soubor a adres. Jmna jsou v sekvenci oddlena znakem ll / '"
Posloupnost jmen zan koenovm adresem a kon danm souborem. Absolutn
cesta reprezentuje prchod od koenu k souboru. Napklad absolutn cesta k souboru
report je jwork j s choo l j report . Absolutn cesta k adu l t je j adu l t . Absolutn
cesta ke koenu je j . Pojem absolutn cesty lze pesnji zavst pomoc indukce.
j je absolutn cesta k adresi j .
3.3. Speciln adrese a relativn cesta 31

Je-li p absolutn cesta k adresi d a adres d obsahuje soubor (adres) a, pak


p / a je absolutn cesta k souboru (adresi) a .

Nic jinho nen absolutn cesta.

Je nutn si uvdomit, e absolutn cesta je dostatenm apartem pro rozlien dvou


soubor a to i v ppad, e maj stejn nzvy, ale jsou obsaeny v jinch adresch.
Absolutn cesty reprezentujc tyto soubory budou sice konit stejnm jmnem, ale
nebudou shodn.

Jmna soubor
V Unixu nejsou jmna soubor prakticky nijak omezen. Jedin omezen vytv
ej jen konkrtn implementace souborovch systm, nkter systmy napklad
omezuj dlku jmna souboru na 256 znak. Jmno souboru se me skldat z libo
volnch znak, vhodn je pouvat znaky A-Z, a-z, slice, teku a znaky podtrtko
"_ " a pomlka 11 - //. Nevhodn, i kdy mon, je pouit mezer nebo znak se speci
lnm vznamem, II * //, II ? //, // &// a podobn.
Operan systm Unix nerozdluje jmna soubor na jmno a pponu, jak je tomu
obvykl v jinch operanch systmech. Teka je korektn znak, kter se ve jmnu
souboru me vyskytovat kdekoliv i na vce mstech souasn. V Unixu se meme
asto setkat se soubory, v jejich jmnech jsou pomoc teek oddlen logick infor
mace. Napklad jmno souboru news . 2 O O O 0 1 . html . t a r . g z me reprezento
-

vat novinky z ledna 2000, kter jsou ve formtu HTML, jsou archivovny programem
t a r a zkomprimovny programem g z ip. Archivaci a kompresi se budeme vnovat
v dalm textu, viz kapitolu 6.6.
Teka na zatku jmna souboru oznauje neviditeln soubor. Neviditeln soubory
se pouvaj hlavn tehdy, kdy je poteba nkter soubory skrt. Jedn se napklad
o konfiguran soubory v domovskch adresch uivatel - tyto soubory nen nutn
mt neustle na och. V dnm ppad ale nelze ztotoovat neviditeln soubory
s njakm IIbezpenostnm mechanismem//. Neviditeln soubor je klasick soubor,
jen jeho jmno zan tekou. Nkter programy s neviditelnmi soubory zachzej
specilnm zpsobem. V dalch ukzkovch pkladech uvidme, e program 1 s
slouc k vpisu soubor v adresi neviditeln soubory standardn nezobrazuje.
V ppad programu 1 s je mon vpis vynutit dodatenm argumentem, viz dal
kapitoly.

3.3. Speciln adrese a relativn cesta


m je hierarchie adres hlub, tm je del absolutn cesta. Pi prci by bylo
velmi nepraktick odkazovat se na kad soubor pomoc absolutn cesty. Mnohem
elegantnj een je oznait si v danou chvli jeden adres jako pracovn a vechny
soubory uvaovat relativn k nmu. Pracovn adres pln lohu pracovnho koenu .
Problm nastv, jak s e efektivn odkazovat na soubory, kter s e nachzej v hierarchii
32 Kapitola 3. Souborov systm

ve, to jest ble ke skutenmu koenu. Z tohoto dvodu je nutn zavst dal
pomocn logick adrese.
V pedchoz kapitole bylo rovn konstatovno, e adrese jsou vdy nelistov
soubory. Zrove bylo eeno, e adres me obsahovat i dal adrese. Nov
vytvoen adres tud mus bt vdy neprzdn, jinak bychom se mohli dostat do
sporu. Vskutku, kad adres obsahuje dva speciln neviditeln odkazy jmenujc
se " . " a " . . ". Jejich existence zajit.je, e i nov vytvoen adres obsahuje vdy
alespo dva soubory a kad adres je skuten nelistov. Soubory " . ", " . . " se
nkdy nazvaj speciln adrese a slou jako odkazy na aktuln adres a na rodiov
sk adres. Rodiovsk adres koenu je koen sm. Viz pedchzejc obrzek na
stran 30. Na obrzku jsou tekovanmi arami vyznaeny odkazy na sebe sama - " . "
a na rodiovsk adres - " . . ".

Relativn cesta
Pi prci v shellu je vdy jeden adres oznaen jako pracovn adres. Na soubory
se lze krom absolutn cesty odkazovat i pomoc relativn cesty, kter se vztahuje
k pracovnmu adresi . Relativn cesta m podobn tvar jako absolutn cesta s tm
rozdlem, e nezan znakem I . Relativn cestu lze interpretovat velice jednodue .
Nech r oznauje relativn cestu k souboruf.
Dle nech d oznauje absolutn cestu k pracovnmi adresi.
Pak dlr je absolutn cesta (voliteln obsahujc i odkazy " . ", " . . ") a odpovd
relativn cest k souboru f.
To jest absolutn cestu k souboru zskme sloenm cesty k pracovnmu adresi
a relativn cesty k souboru. Pouit relativn cesty zjednoduuje prci uivateli. Na
druhou stranu ji z pohledu uivatele nen zaruena jednoznan identifikace sou
boru. Demonstrujme si problematiku pkladem. Mjme pracovn adres Iwork.
Potom j ob je relativn cesta k souboru j ob. Stejn tak i . I j ob je relativn cesta
k tomuto souboru. Dle napklad . . /work / j ob, . / s choo l j . . / j ob a tak dle.
Na pkladu je dobr vimnout si rozdlu mezi koenem " / ,, a odkazem na aktuln
adres " . /". Pouitm jmna " . . " se lze odkazovat i na soubory lec v hierarchii
ve. Napklad . . / adu l t /mov i e je korektn relativn cesta.
Na pedchozm obrzku byla u jednotlivch soubor uvedena sla. Jedn se
o poet odkaz na soubor - poet referenci. Obyejn soubor m za normlnch okol
nost poet referenc roven 1 - ukazuje na nj jeho rodiovsk adres. Poet referenc
obyejnho souboru lze zvtit pomoc odkazu neboli linku, viz kapitolu 3.5. Poet
referenc adrese je obecn vt. Kad adres m minimln dva odkazy, od
svho rodiovskho adrese a od " . ". Obsahuje-li adres dal podadrese, poet
referenc se linern zvtuje, protoe vznikaj dal reference od podadres dky
odkazm " . . ".
V systmu existuj jet dal vznamn adrese, na n se lze bhem prce
odkazovat. Pomoc symbolu - nebo -<ljmno r> se lze odkazovat na domovsk adres
aktulnho uivatele nebo na domovsk adres uivatele, jeho <ljmno r> je uvedeno
3.3. Speciln adrese a relativn cesta 33

za vlnkou. Absolutn cesta k domovskmu adresi je soust uivatelskho tu.


Je ale nutn podotknout, e metaznak ,, - " nereprezentuje dn speciln soubor, jeho
interpretace je pln v reii shellu, kter jej expanduje na absolutn cestu k adresi.
Expanzi neplnch jmen soubor se vnuje kapitola 5.3.

Zmna pracovnho adrese


Zbytek vodn kapitoly je vnovn pkazm a programm urenm k prci
se soubory a adresi. Pedpokldejme, e uivatel novakj spn vstoupil do
systmu a vid svj prompt. Nejprve by mohl chtt vdt, v jakm se nachz adresi.
Pouije program pwd.
$ pwd
/ home / s tudent / inf 9 7 / novakj

Program pwd slou pro zobrazen pracovnho adrese a nem dn dal argu
menty. Na potku prce v systmu je uivatelv pracovn adres nastaven na jeho
domovsk adres. Pkaz cd lze pout pro zmnu pracovnho adrese. Pkaz bez
argument nastav pracovn adres na domovsk. Je-li uveden argument, je chpn
jako cesta4 k novmu pracovnmu adresi.
$ cd /var/ l ib
$ pwd
/var / l ib
$ cd / spool
$ pwd
/var/ spoo l
$ cd
$ pwd
/ home / s tudent / inf 9 7 / novakj
$ cd -opicha l s
$ pwd
/ home / s tudent / inf 9 6 / op i c ha l s
$ cd /blah/bl ah
bash : cd : / b l ah/b l ah : No such f i l e or direc tory

Z pedchozho pkladu je vidt, e pkaz cd se chov tie, nepln toti infor


mativn lohu. Stejnho efektu jako pouit cd bez argumentu bychom mohli do
shnout napklad pomoc cd - nebo cd -novakj . V posledn ukzce pkaz cd
zahlsil chybu, protoe nenael poadovan pracovn adres. Z vznamovho hle
diska jsou napklad po sob vloen pkazy cd /var, cd l ib a jeden pkaz cd
/var / l ib toton. Druh zpis je ale spornj, navc se pi jeho pouit zmn
pracovn adres pouze jednou. Na druhou stranu, zpis absolutn cesty po uivateli
vyaduje vt pozornost. Pi psan cesty si lze v shellu GNU Bash pomoci klve
sou 1 TAB I. Mme-li rozepsanou cestu a stiskneme-li 1 TAB shell se bude snait zbytek
cesty doplnit podle adresov struktury. Bude-li vc monost doplnn, budou po
druhm stisku klvesy zobrazeny vechny alternativy. Viz pklad.
4 0le budeme pojmem cesta souhrnn oznaovat absolutn nebo relativn cestu.
34 Kapitola 3. Souborov systm

$ cd Ivar/ l I B I I TAB I
l ib local lock l og
$ cd Ivar/ l ibl

Doplovn cesty klvesou I TAB I je velmi mocn. Vrazn zjednoduuje prci


v shellu a dl z nj siln nstroj . Klvesa I TAB ! je tak jednm z dvod, pro ada ui
vatel GNU/Linuxu mnohem radji pouv pkazov dek ne "okenn sprvce
soubor" - pro zkuen uivatele je prce s pkazovm dkem rychlej. Nakonec
dodejme, e pkaz cd je zabudovan pmo v shellu.

Vpis obsahu adrese


Obsah adrese lze vypsat pomoc programu 1 8 . Program 1 8 me mt mnoho
argument specifikujcch co a jakm zpsobem se m vypisovat. Je-li program 1 8
pouit bez argument, vype seznam jmen soubor v pracovnm adresi. Pedpo
kldejme, e se uivatel novakj nachz ve svm domovskm adresi.
$ 18
bin data etc ma i l t odo

Program 1 8 implicitn nevypisuje neviditeln soubory, jejich zobrazen si musme


vydat argumentem a. -

$ 18 - a
. bash_hi s t ory . forward . fvwmrc . prof i l e bin
dat a e t c ma i l t odo

Soubory jsou seazeny abecedn. Zobrazeny jsou i odkazy " . ", " . . ", protoe
pat mezi neviditeln soubory. Ve uveden vpis jmen soubor je nepehledn
v tom smyslu, e uivateli nic nek o druhu jednotlivch soubor. Pouijeme-li
navc k pepnai - a pepna - F, obdrme nsledujc vpis.
$ 18 - aF
.1 . bash_hi s t ory . fvwmrc binl etcl t odo
. .I . forward . pro f i l e dat a l ma i l l

Ve pouit "zetzen pepna" - a - F na - aF je bn a slou ke zjed


noduen zpisu pepna. Zetzen pepna ale obecn nelze pout u vech
program. Pepna - F zpsobuje, e ve vstupu programu 1 8 jsou adrese ukon
eny " / ,,, to zjednoduuje zkoumn obsahu adrese. Pomoc - F lze dle rozliovat i
jin typy soubor, hvzdikou jsou znaeny spustiteln soubory, znakem @ odkazy a tak
dle. Poadujeme-li jet detailnj vpis adrese, meme pout pepna - 1 .
$ 1 8 - l aF
total 6 6
drwxr - xr - x 6 novakj s t udent 8 1 92 Jan 18 16 : 25 .I
drwxr - xr - x 7 novakj s t udent 8192 Jun 12 12 : 10 . .I
- rw - r - - r - - 1 novakj s t udent 5630 Jan 18 18 : 25 . bash_h i s t ory
- rw - r - - r - - 1 novakj student 28 Jan 18 18 : 20 . forward
3.3. Speciln adrese a relativn cesta 35

- rw - r - - r - - 1 novakj s tudent 8515 Jan 23 8 : 11 . fvwmre


- rw - r - - r - - 1 novakj student 504 Jan 18 16 : 15 . pro f i l e
drwxr - xr - x 2 novakj student 8192 Jun 18 16 : 25 bin/
drwxr - xr - x 4 novakj s t udent 8192 Feb 13 1 5 : 04 dat a /
drwxr - x r - x 2 novakj s t udent 8 1 92 Feb 11 8 : 23 ete/
drwx - - xr - x 2 novakj student 8 1 92 Feb 20 9 : 55 ma i l l
- rwxr - xr - x 1 novakj student 69 Jun 18 12 : 05 t odo

daj na prvnm dku shrnuje celkov poet kilobajt zabranch soubory v aktu
lnm adresi vetn jejich reijnch informac. Prvn sloupec slou k symbolickmu
znzornn uivatelskch prv, problematika je rozebrna v kapitole 3.6. Druh slou
pec reprezentuje poet odkaz na soubor. Nsleduj daje o vlastnkovi a vlastnick
skupin, dle daj o velikosti souboru, asu jeho modifikace a samotn nzev souboru.
Mezi zajmav pepnae pat dle - 1 , vypisujc obsah adrese do jednoho
sloupce. Pepna - r zpsob vypsn soubor v opanm poad. Pepna - R zp
sob vypsn soubor ve vech podadresch. Tomuto stylu vpisu obsahu poda
dres se k rekurzivn. Pokud je poteba vypsat obsah jinho ne pracovnho
adrese, sta uvst cestu jako posledn argument programu 1 8 . Nsledujcm p
kazem lze vypsat obsah vech podadres adrese - / data.
$ ls - RaF - /data
. / dat a :
./ . ./ s eheme / t ex/

. / dat a / s eheme :
. / . . / faktor i a l . s em f i bonaee i . sem

. / dat a / t ex :
./ z ivot op i s . aux z ivotopi s . l og z ivotop i s . p s
. . / z ivot op i s . dvi z ivot op i s . pdf z ivot op i s . t ex

Programu 1 8 je mon pedat i vc adres najednou. Pi prci s 1 8 se opt vy


plat pouvat klvesu 1 TAB I. V ppad, e je hierarchie adres sloit, je vhodn ji
pehledn zobrazit. K tomuto elu lze pout program t re e . Podotknme, e t re e
nen standardn soust vech implementac Unixu. Program t re e implicitn vypi
suje vechny soubory, pomoc pepnae - d jej donutme vypisovat pouze adrese.
$ tree -d -

1 - - bin
1 - - dat a
1 1 - - seheme
1 ' - - tex
1 - - ete
ma i l

Prce s adresi
Bhem prce me uivatel prun vytvet a/nebo mazat adrese. Nov adre
s lze vytvoit pomoc programu mkdi r . Program mkdi r bere jako argument cestu.
36 Kapitola 3. Souborov systm

Program pedpokld, e cesta bez poslednho elementu je cestou k adresi. V tomto


adresi je vytvoen nov, jeho jmno se shoduje s poslednm elementem pedan
cesty.
$ mkdi r - / data/poku8ne
$ cd - /data
$ 18 - F
pokusne / s cheme / t ex/

Pedchozm pkazem uivatel vytvoil v adresi - / da t a podadres pokusne.


Stejnho efektu by doclil kombinac pkaz cd - / da t a a mkd i r pokusne.
V pedchoz ukzce jsme pedpokldali, e adres - / da t a ji existuje. Pokud by
adres - / da t a neexistoval, dolo by k chyb. V tomto ppad by bylo nejprve
nutn vytvoit adres - / da t a a a pot adres pokusne. Alternativn je mon
pout program mkd i r s pepnaem - p o Potom jsou vytvoeny vechny adrese,
kter v pedvan cest neexistuj.
Przdn adres je mon smazat pomoc programu rmd i r. Pod pojmem przdn
adresf je mylen adres obsahujc pouze odkazy " . " a " . . ", to jest nesm obsahovat
dn datov soubory, dal podadrese a tak dle. Program rmd i r m stejnou
syntaxi jako program mkd i r a rovn vykazuje podobn chovn. Program se pokus
smazat vdy posledn element v zadan cest. Pokud se nejedn o przdn adres,
vype se chybov hlen.
Pi prci s nkolika terminly zrove me dochzet k bizarnm situacm. Ped
pokldejme, e uivatel novakj m v jednom shellu nastaven pracovn adres na
- / da t a /pokusne. V dalm shellu tento przdn adres smae. Potom se opt
v prvnm shellu pokus vypsat obsah pracovnho adrese.
$ 18 - l a
ls : . : S t a l e f i l e hand l e

Pedchoz hlen uivateli oznamuje, e odkaz " . " ji neexistuje. Lze se ale setkat
i s podivnjmi situacemi, napklad vpisem " t o t a l o " . Uivatel tak me bt na
chvli zaskoen, protoe se nachz v adresi, jen "neobsahuje ani zkladn odkazy" .
Vchodiskem z obou situac j e nastaven jinho pracovnho adrese pomoc pkazu
cd.
as od asu je dobr zjistit velikost adrese, to jest souhrnnou velikost vech
obsaench dat. K tomuto elu lze pout program duo Program du m opt mnoho
pepna umoujcch mnit styl vpisu velikost. elem tto knihy nen popiso
vat vechny pepnae. Pro detaily viz manulovou strnku programu. Mezi asto
pouvan pepnae pat - b, - k, - m specifikujc po ad jednotky B, kB, MB. Pep
na - h pro kadou hodnotu automaticky vol i jednotku tak, aby byl vsledek dobe
iteln. V komernch implementacch systmu Unix vtinou pepna - h chyb,
jedn se o rozen nstroj GNU. V nsledujcm pkladu jsou vdy voleny kB.
$ du - h
l06k . / dat a / t ex
l Ok . / da t a / s cheme
3.3. Speciln adrese a relativn cesta 37

124k . / dat a
l Ok . /etc
8k . /ma i l
9k . / bin
1 7 7k

Je-li teba vpis omezit jen na uritou hloubku - to jest, pokud je napklad
poteba potlait vpis velikost dalch podadres, lze pout speciln pep
na - - max - depth=<lhodnota l>, kde <l hodnota l> je maximln hloubka vpisu. Je-li
<l hodnota l> nulov, pak bude vypsna jen velikost aktulnho adrese. Viz pklad.
$ du - b - -max - dep th= O
181248
$ du - b - -max - depth= l
126976 . / dat a
10240 . /etc
8 1 92 . /ma i l
9216 . /b i n
181248

Programu du lze rovn pedat jako argument i cestu k adresi nebo souboru,
jeho velikost chceme zjistit. Programy pracujc s adresi se asto chovaj podobnm
zpsobem. Tm kad informativn obslun program pracujc se souborovm
systmem bere jako implicitn argument pracovn adres. Implicitn adres lze
zmnit explicitnm uvedenm jinho adrese pmo z pkazovho dku. Tento fakt
ji dle nebude zdrazovn.

Identifikace a prohlen obsahu soubor


V operanm systmu Unix je k dispozici i ada nstroj pro zkladn manipulaci
se soubory, jde pedevm o nstroje umoujc prohlen jejich obsahu, koprovn
soubor a mazn. Soubor a jeho typ lze klasifikovat pomoc programu f i l e . Cesta
k souboru je programu f i l e pedna jako argument.
$ f i l e - / . fvwmrc
. fvwmrc : ASC I I t ext
$ f i l e - /data/ tex/ z ivo top i s . ps
. / dat a / t ex/ z ivotop i s . p s : Pos t S c ript conforming at l eve l 2 . 0
$ f i l e - /data/ tex/ z ivo top i s . pdf
. / da t a / t ex/ z ivotop i s . pdf : PDF document , vers i on 1 . 2
$ f i l e - /data/tex/ z ivotopi s . tex
. / dat a / t ex/ z ivotop i s . t ex : LaTeX 2e document t ext

Databze programu f i l e je pomrn velk a je dost pravdpodobn, e sprvn


identifikuje typ datovho souboru. Pokud chce uivatel zobrazit obsah souboru,
me nejprve pomoc f i l e provst prvotn nhled do dat a pokusit se klasifiko
vat obsah souboru. Tato klasifikace slou pro zkladn orientaci. Vtina datovch
soubor v Unixu m textov charakter. Tento pstup k datovm souborm je dal ty
pick rys Unixu. Akoliv je velikost textovho souboru zpravidla vt ne velikosti
38 Kapitola 3. Souborov systm

ekvivalentnch binrnch dat, textov soubory maj adu vhod. Vtinu soubor lze
upravovat pomoc jednoho programu - textovho editoru. Dal vhodou je prhled
nost a otevenost. Dobrch vlastnost textovch soubor si zanaj vmat i vvoji
pracujc na jinch platformch. V poslednch letech vystily snahy reprezentovat
pehledn a srozumiteln strukturovan data v zaveden standardu XML.
Obsah textovho souboru me bt vypsn pomoc programu c a t . Program
ca t provede zetzen soubor5, kter jsou mu pedny jako argumenty. Nsledujc
pklad demonstruje zetzen dvou soubor.

$ cat - / todo - /data/scheme / faktorial scm


.

dne s bych se me l naj s t


neco naprogramovat
a t aky bych mohl j t spat
( de f ine ( f n )
( if ( = n O)
1
(* n (f (- n 1) ) ) ) )

Jeliko me soubor obsahovat vce dk, ne kolik jich je k dispozici v klasickm


terminlu, je poteba mt k dispozici program vypisujc obsah souboru "po strn
kch". K tomuto elu slou speciln programy - strnkovae. Typickmi zstupci
jsou programy more, l e s s a mo s t . Jmna program odpovdaj jejich historickmu
vvoji a snaze udlat vdy "lepho nslednka". Program more zobraz textov sou
bor a za kadou strnkou ek na stisk mezernku nebo klvesy q. Pokud je stisknut
mezernk, pokrauje se dal stranou, klvesa q ukon prohlen souboru. Program
l e s s umouje vracet se v textu zpt a prohledvat soubor pomoc regulrnch v
raz, viz kapitolu 6.2. Program mo s t um prakticky tot co program l e s s, navc
je schopen prohlet i obsah binrnch soubor a podporuje barvy. Jsou-li v texto
vm souboru ptomny speciln sekvence nastavujc chovn terminlu, teba barvy,
program mo s t na n doke sprvn reagovat. Program more je soust kadho
Unixu, programy l e s s a mos t jsou soust programovho vybaven GNU.
Pokud je poteba vypsat ze souboru pouze jeho st, napklad zhlav nebo pat,
pak lze pout programy head a t a i l . Program head <lsouborr> vype prvnch 10
dk ze souboru. Pokud chce uivatel poet vypisovanch dk zmnit, lze pout
argument ve tvaru - <l slo r>. V nsledujc ukzce jsou vypsny prvn dva dky
souboru / fvwmrc.
- .

$ head -2 - / . fvwmrc
StdForeColor Wheat
S t dBackCo lor DarkS l a t eGray

Program t a i 1 funguje obdobn, standardn vype poslednch 10 dk souboru.


Je-li uveden argument - <l n r>, vype se poslednch <l n r> dk. Pomoc t a i l je mon
tak peskoit nkolik potench dk. Uvedeme-li argument tvaru +<l n r>, bude
soubor vypsn a od <l n r>-tho dku. Viz pklad.
SOdtud nzev programu - concatenation = zetzen. Tento program nem nic spolenho s kokami.
3.3. Speciln adresfe a relativn cesta 39

$ tail - 3 - / . fvwmrc
* FvwmWinL i s tAc t i on Cl i ck3 Modu l e " Fvwml dent " Fvwml dent
* FvwmWinL i s tUs e SkipL i s t
* FvwmWinL i s tGeome t ry + 0 - 1
$ tail + 2 9 0 - / . fvwmrc
* FvwmWinL i s tUseSkipL i s t
* FvwmWinL i s tGeome t ry + 0 - 1

Pomoc programu wc je mon zjitovat podrobnj informace o dlce souboru.


Program standardn vype poet bajt, slov a dk v souboru.
$ wc - / todo
3 13 6 9 / home / s t udent / inf 9 7 / novakj / t odo

Pedchoz soubor obsahoval 3 dky, 13 slov a 69 bajt. Potem slov je mylen


poet vech maximlnch posloupnost znak v souboru neobsahujcch oddlovae,
to jest znaky pro mezeru, tabultor nebo znak nov fdek.

Prce se soubory
Pro manipulaci se soubory a adresi slou zkladn programy cp, mv a rm .
Programy cp a mv provedou zkoprovn soubor, ppadn jejich pfesun. Program
cp bere jako argumenty soubory, nutn je pedat alespo dva. Posledn pedan
jmno souboru je chpno jako cl. Clem me bt cesta k souboru a/nebo adresi.
Ostatn pedan jmna soubor jsou chpna jako zdroje. Argumenty pro koprovn
i pesun se uvdj vdy v poad co - kam . V zkladn podob cp pedpokld, e
zdroj je seznam soubor, cl je adres. V ppad, e seznam zdrojovch soubor je
jednoprvkov, me bt clem soubor.
Pi koprovn je nutn mt na pamti nkolik zsad. Pokud dojde ke kolizi jmen
soubor, to jest clov adres ji obsahuje soubor stejnho jmna, pvodn sou
bor bude nahrazen nov nakoprovanm souborem. Program cp funguje bez interakce
s uivatelem, ostatn jako vtina program v Unixu. Bezhlav pouit programu cp
me napchat znan kody. Nsledujc pklad demonstruje pouit programu cp.
$ cd - /data/
$ ls - F
s cheme / tex/
$ cp scheme / f ibonac c i . scm tex/ z ivo topi s . tex
$ ls -F
f ibonacc i . scm s cheme / t ex/ z ivotop i s . t ex

V pedchozm pkladu byly zkoprovny dva soubory do pracovnho adrese.


Argument " . " bylo skuten nutn pout, kdyby nebyl uveden, dolo by ke zko
provn souboru f ibonac c i . s cm na soubor z ivotopi s . t ex. Obsah souboru
z ivotop i s . tex by nenvratn zmizel. V Unixu neexistuje operace typu "unde
lete", to jest smazan soubor zpravidla nelze obnovit. Uivatel tak m dal dvod,
pro by si ml dt pozor na pouvn program manipulujcch se soubory. Smazan
data lze v nkterch specilnch ppadech restaurovat, ale vyaduje to privilegia su
peruivatele root, pevn nervy a hlubok znalosti chovn operanho systmu.
40 Kapitola 3. Souborov systm

Program cp standardn neumouje koprovat cel adrese. Koprovn adre


s lze zaruit pomoc pepnae - r nebo - a. Pepna - a provd syrovou kopii,
to jest nesna se napklad nahrazovat symbolick odkazy, zachovv rovn spe
ciln soubory a tak dle. Nsledujc pklad ukazuje vytvoen zlonho adrese
s cheme - backup.

$ cd - / data/
$ cp -r s cheme scheme -backup
$ ls -F
f i bonac c i . s cm scheme / s cheme - backup / tex/ z ivotop i s . t ex

Pomoc programu mv je mon pfesouvat soubory a adrese. Pesunut me


mt stejn vznam jako pfejmenovn, obzvl kdy je pesunut soubor v rmci t
ho adresfe. Pesunut soubor v rmci jednoho relnho souborovho systmu je
velmi rychl, v souborovm systmu dojde pouze k pesunut nkolika odkaz.
Opan situace nastv pi pesunu mezi vce souborovmi systmy, soubory jsou
nejprve zkoprovny a pot vymazny z pvodnho msta. Operace je tedy jet po
malej ne samotn koprovn. Nsledujc pklad ukazuje pejmenovn souboru
z ivot op i s . t ex.

$ cd - / data/
$ mv z ivotopi s . tex curriculum-vi tae . tex
$ ls - F
curri culum - v i t ae . t ex f ibonac c i . s cm s cheme /
s cheme - backup / tex/

Posledn bnou akc se soubory je jejich vmaz. Operace vmazu je velmi p


moar. Program rm bere jako argumenty soubory, kter maj bt smazny. Opt
implicitn nelze mazat adrese, to lze povolit explicitn parametrem - r. Vmaz
probh opt bez ptan. Obzvl opatrn pi prci mus bt systmov administrtoi
s neomezenmi privilegii. Pouhm jednm pkazem6 rm - rf / by tm okamit
mohli smazat veker data v systmu, co by se jist neodrazilo kladn na jejich
osobnm ohodnocen. Program rm se v rukou nezkuenho uivatele chov podobn
nevyzpytateln jako sirky v rukou dvouletho dtte. V nsledujcm pkladu jsou
vymazna data, kter byla v pedchozch pkladech vytvoena.

$ cd - / data
$ rm -r curri culum-vi tae . tex f ibonacci . scm scheme -backup/
$ ls -F
s cheme / t ex/

K ve uvedenm zkladnm programm je nutn dodat, e mohou pracovat


i v interaktivnm reimu. Interaktivn reim se zapn pomoc argumentu - i. Pi prci
v interaktivnm reimu jsou vechny operace, kter by mohly zpsobit ztrtu dat,
konzultovny s uivatelem. Prci v interaktivnm reimu demonstruje nsledujc
pklad.
6 Argument - f zapn pkazy do reimu bez ptan - "force mdu ". Viz dal kapitolu.
3.4. Speciln soubory 41

$ cd - /data
$ r.m - i r curriculum-vitae . tex f ibonacci . scm scheme -backup/
rm : remove ' curriculum - v i t ae . t ex ' y
rm : remove ' f ibona c c i . s cm ' n
rm : de s c end into d i re c t ory ' s cheme - backup ' y
rm : remove ' s cheme - backup / faktor i a l . s cm ' n
rm : remove ' s cheme - backup / f ibonac c i . s cm ' y
rm : remove d i r e c t ory ' s cheme - backup ' n

Vtina nstroj GNU disponuje interaktivnm reimem. Dalm dleitm rei


mem je upovdan reim - verbose mode. Reim se ve vtin ppad zapn pepna
em - v. Pi pouit upovdanho reimu program s uivatelem sice nekomunikuje,
ale rozhodn se nechov tie. Program uivatele podrobn informuje o kad vyko
nvan akci. Upovdanho reimu lze s vhodou vyut napklad pi koprovn
velkho mnostv soubor - na obrazovce terminlu lze sledovat, kter soubory se
zrovna kopruj.

3.4. Speciln soubory


V vodu kapitoly o souborovch systmech Unixu bylo eeno, e jednm ze
zkladnch poadavk byla monost prce s hardwarovm zazenm jako s obyej
nm souborem. Systm tento poadavek e pomoc specilnch soubor. Speciln
soubor neobsahuje data, ale je spjat s njakou rutinou v jdru systmu. Rutina je
volna, jakmile je k souboru pistupovno. Tat koncepce skt adu vhod. V prvn
ad vborn oddluje uivatelsk programy od hardwaru. Komunikuje-li program
napklad s modemem, programtor se nemus soustedit na konkrtn hardwarov
vrobek, pro svou komunikaci pouv speciln soubor reprezentujc zazen sri
ovho portu.

Druhy specilnch soubor


Speciln soubory reprezentuj hardwarov zazen. Podle stylu prce s perife
riemi se rozliuj dva typy specilnch soubor, soubory pro blokov zazen a pro
znakov zazen. Typickm blokovm zazenm je teba disk nebo CD-ROM. Mezi
znakov zazen pat napklad modemy, tiskrny, ale i terminly. Oba druhy za
zen maj sv typick vlastnosti.

Blokov zazen umouj nhodn pstup k datm, jdro systmu si pro n


udruje vyrovnvac pamti. Operanmu systmu se blokov zazen jev jako
posloupnost blok dan dlky. Blokov zazen me bt nosiem souborovho
systmu.

Znakov zazen jsou vechna ostatn zazen. Znakov zazen neumouj


uivateli nhodn pstup. Zpravidla slou k manipulaci s periferiemi, jako
jsou polohovac zazen, tiskrny a podobn.
42 Kapitola 3. Souborov systm

Operan systm Unix piazuje kadmu specilnmu souboru dv sla. Hlavn slo
specilnho zazen major number a vedlej slo minor number. Jdro identifikuje
-

obslunou rutinu prv na zklad tchto sel. V dnm ppad se jdro pi identi
fikaci zazen ned jmny soubor, jmna slou pouze jako odkazy na zazen pro
obslun programy. Speciln soubory jsou v systmu umstny zpravidla v adresi
/ dev. Vytven specilnch soubor je v systmu umonno pouze superuiva
teli root a slou k nmu speciln program mknod. Rovn pstup k jednotlivm
specilnm souborm bv pro uivatele siln omezen. Jednu z mla vjimek tvo
nsledujc tveice soubor.
/ dev / z e ro je speciln soubor, jen na podn vrac sam nuly. Pomoc
/ dev / z e ro a programu dd lze efektivn vytvet nov soubory dan velikosti
sestvaj ze samch nul. Napklad pomoc dd i f = / dev/ z e ro o f = s oubor
b s = l k count = 8 vytvome 8 kB velk soubor pln nul. Nabz se otzka, jak
to m smysl? Na przdnm souboru lze vytvoit napklad souborov systm
a ten pot pipojit pomoc dalho specilnho zazen zptn smyky. Tmto
-

zpsobem lze napklad vytvet obrazy disket a manipulovat s jejich obsahem,


ani bychom potebovali disketovou mechaniku. Popis podobnch technik ale
mrn pesahuje rmec tohoto textu.
/ dev/ random se chov podobn jako soubor / dev/ z e ro. Jedn se o speci
ln soubor, kter na podn vrac nhodn generovan znaky. Algoritmus
generovn znak vyuv "systmovho umu" k zajitn vysok kvality
a nepedvdatelnosti nhodn generovanch znak.
/ dev / nu I I je soubor, ve kterm "ve miz". Zkoprujeme-li cokoliv do souboru
/ dev / nul l, data nenvratn zmiz. Soubor / dev / nul l se pouv pedevm
k pesmrovn nechtnho vstupu. Viz kapitolu 5.2.
/ dev/ ful l je soubor chovajc se jako "pln disk". Pi pokusu na nj coko
liv zkoprovat dojde k chyb, systm zahls "No space left on device". Soubor
/ dev / ful l lze vyut pi ladn program k simulaci peplnnho disku.
Blokov zazen jsou vznamn pedevm jako nosie souborovch systm. Po
zaveden jdra operanho systmu do pamti a jeho startu je jednm z prvnch krok
pipojen koenovho souborovho systmu . Jdro mus vdt, na kterm blokovm za
zen jej m hledat. Tuto informaci jdru pedv zavad - bootloader, mal zavdc
program, kter je zpravidla zapsn na zatku disku. Najde-li jdro korektn sou
borov systm, provede jeho pipojen na koen adresov struktury /. Dalm
krokem je sputn programu / sbin/ ini t pebrajcho dal zen startu systmu.
Program / sbin/ ini t neme bt sputn bez korektn pipojenho koenovho
souborovho systmu.
Bhem startu systmu se zpravidla pipojuj dal souborov systmy. Nap
klad adres / home, obsahujc domovsk adrese uivatel, bv obvykle uloen
na samostatnm souborovm systmu. Pi pipojen souborovho systmu dochz
k efektu zakryt. Nov pipojen souborov systm zakryje pvodn data. V tuto
chvli je nutn zdraznit, e jeden souborov systm je mon pipojit na libovoln
3.4. Speciln soubory 43

msto. Nic nebrn tomu, aby byl souborov systm nejprve pipojen teba na /var,
pot odpojen a znovu pipojen teba na adres / u s r / doc .

Prce s e souborovmi systmy


Pipojen souborovch systm se provd pomoc programu mount, odpojen
pomoc umount . Tyto programy me a na vjimky pouvat pouze superuivatel
roo t : Pi pipojovn souborovho systmu je nutn uvst speciln soubor odpov
dajc blokovmu zazen. Dle je poteba specifikovat clov adres mount point.-

Dleit je rovn i uveden pslunho typu relnho souborovho systmu, jen


se na blokovm zazen nachz. V systmu Linux jsou v souasnosti nejpouva
nj Ext2, Ext3, ReiserFS a XFS. Je-li program mount sputn bez argumentu, dojde
k vypsn informac o pipojench systmech.
$ mount
proc on /proc type proc ( rw )
devp t s o n / dev/pt s type devp t s ( rw , g i d = 5 , mode = 6 2 0 )
/ dev/hda3 on / type re i s e r f s ( rw )
/ dev/vo l g O l / tmp o n / tmp type re i s e r f s ( rw )
/ dev/vo l g O l / u s r o n / u s r type re i s e r f s ( rw )
/ dev/vo l g O l /var o n /var type re i s e r f s ( rw )
/ dev/vo l g O l / home o n /home type re i s e r f s ( rw )

Pedchoz vpis uivatele informuje o pipojench systmech. Prvn dva dky


jsou vnovny specilnm souborovm systmm, jejich popis zatm vynechme. Na
tetm dku jsou informace o pipojenm koenovm souborovm systmu, systm
je pipojen pro ten i zpis, pouv se souborov systm ReiserFS umstn na blo
kovm zazen / dev / hda 3 . Zazen / dev / hda3 pedstavuje tet diskovou oblast
na primrnm master IDE kontroleru. Speciln soubory / dev/vo l g O l / slou
pro manaer logickch svazk LVM, ten umouje prun zvtovat a zmenovat
souborov systmy pln za chodu systmu.

Pipoj en a odpoj en souborovho systmu


S vybranmi blokovmi zazenmi mohou manipulovat i adov uivatel.
Jedn se pedevm o disketov mechaniky a podobn. V systmu existuje sou
bor / et c / f s t ab obsahujc informace o souborovch systmech a jejich ppojnch
adresch. V souboru meme mimo jin najt napklad dky nsledujcho tvaru.
/ dev/ fdO /mnt / f l oppy vfat rw , us e r , noaut o , noexe c , no suid O O
/ dev/ hdd4 /mnt / z ip vfat rw , u s e r , noauto , noexe c , no suid O O

Z pedchozch dk plyne, e uivatel sm pipojovat disketovou mechaniku


a mechaniku ZIP umstnou na sekundrnm slave IDE kontroleru na ppojn ad
rese /mnt / f l oppy a /mnt / z ip. Na obou zazench je pedpokldn souborov
systm VFAT, co je systm FAT umoujc zapisovat dlouh nzvy soubor. Volba
u s e r ve tvrtm sloupci zna, e souborov systm me bt pipojen i bnm
44 Kapitola 3. Souborov systm

uivatelem. Na serverech, kter jsou obvykle uivatelm fyzicky nepstupn, se s ta


kovou vymoenost setkme jen st. adov uivatel mohou pipojovat souborov
systmy zpravidla pouze na pracovnch stanicch.
Pedpokldejme, e pracujeme na stanici s operanm systmem Linux, mme
k dispozici disketu se souborovm systmem FAT. Nsledujc pklad ukazuje pou
it programu mount pi prci s disketou.
$ mount /mnt / f l oPPY/
. . souborov systm se pfipojuje . . .

$ l s F /mnt / f loPPY/
-

f ibonae e i . sem
$ cp - /data/scheme / faktorial . scm /mnt / f l oPPY/
. . kopruje se soubor . . .
$ l s - 1 /mnt/ f l oPPY /
total 8
- rw - r - - r - - 1 novakj s t udent 6 2 Jul 1 9 1 7 : 5 4 faktori a l . sem
- rw- r - - r - - 1 novakj s tudent 96 Jul 19 1 7 : 5 3 f ibonaee i . sem
$ umount /mnt / f l oPPY/
. souborov systm se odpojuje
.

$ l s - 1 /mnt / f l oPPY/
total O
Ped pipojenm diskety mohl bt adres /mnt / f l oppy przdn, ale nutn
nemusel. Po pipojen diskety byl vak jeho obsah pekryt jejm obsahem. V tuto chvli
se na disket nachzel jedin soubor - f ibonae e i . s em. V dalm kroku uivatel
nakoproval na disketu dal soubor. Po odpojen diskety od adrese / mnt / f l oppy
se odkryje jeho pvodn obsah. Jednotliv fze vystihuje nsledujc obrzek.
pfed pfipojenm po pfipojen po zkoprovn souboru po odpojen
nt
f 1 0ppy
L,mnt
L.=1 0 PPY
nt
f 1 0 PPY
mnt
f 1 0p PY
f i bona e e i . s e m f a k t o r i a 1 . s em
f i bona e e i . s e m

Odpojen zazen pomoc programu umount je nutn provst ped vysunutm m


dia z mechaniky. V opanm ppad by nemuselo dojt ke korektnmu zapsn dat.
Systm Unix disponuje velmi mocnou vyrovnvac pamt, data nejsou fyzicky zapi
sovna, pokud to nen nezbytn nutn. Napklad jednotky ZIP a jednotky CD-ROM
nedovol vysunout mdium, dokud je zazen pipojeno, ale klasick disketov me
chaniky (snad vyjma pota Macintosh a Power PC) toto zabezpeen nemaj.
Jeliko je systm pipojovn velmi robustn a koncepce souboru je v operanm
systmu Unix dostaten obecn, je mon vytvet i speciln typy souborovch
systm. Obecn vzato, speciln souborov systmy jsou buto ureny pro zvltn
nasazen, nebo nereprezentuj fyzick data. Mezi nejznmj pat souborov systm
ProcFS, obvykle je vdy pipojen na adres /proe. Souborov systm ProcFS je
"oknkem do jdra systmu". Struktura systmu ProcFS se na rznch implementa
cch Unixu li. V operanm systmu Linux sestvaj jednotliv soubory z informac
poskytovanch jdrem. Napklad soubor /proe /pe i obsahuje informace o sbrnici
PCI a pipojench periferich.
3.5. Odkazy 45

3.5. Odkazy
Dalm typem souboru v Unixu je odkaz - linko Bez nadszky lze ct, e vedle
obyejnch soubor a adres jsou odkazy nejastji pouvan typy soubor. Od
kaz je soubor zavdjc nov jmno pro ji existujc soubor. Rozdl mezi pozenm
kopie a zavedenm odkazu je zcela zsadn. Pi zaveden odkazu na existujc soubor
nedojde k fyzick kopii jeho dat, pouze se vytvo nov jmno ukazujc na pvodn
soubor. Vytvoen odkazu m podstatn men reii ne kopie souboru, navc dochz
ke sdlen obsahu souboru a nkdy i jeho administrativnch dat.
Odkazy je vhodn pout v ppad, kdy uivatel poaduje pmou dostupnost
jednoho souboru z vce adres. Vytven odkaz me vrazn zjednoduit pro
chzen hierarchick struktury adres a soubor. Sloit pechody mezi adresi
lze peklenout pomoc odkazu. Odkaz s sebou pin i jeden vedlej efekt, struktura
soubor a adres obecn pestv bt hierarchick. Absolutn cesta k souboru, pi
rozen rozen o odkazy, ji nemus bt jednoznan. V systmu Unix rozliujeme
dva typy odkaz.
Pevn odkaz - hard link lze vytvoit pouze na existujc soubor. Poet referenc
na soubor se s kadm odkazem zvt o jeden. Je-li pvodn soubor smazn
a existuj-li na nj njak reference, obsah souboru je zachovn, pouze se poet
referenc zmen o jednu. Pevn odkaz je mon vytvoit jen v rmci jednoho
relnho souborovho systmu. Ve vtin systm nelze vytvoit pevn odkaz
na adres .
Symbolick odkaz - symbolic link je v podstat obyejn soubor obsahujc jako
data cestu k clovmu souboru . Cesta je v symbolickm odkazu uchovna jako
etzec znak a me bt absolutn nebo relativn. Symbolick odkaz lze zavst
i na neexistujc soubory nebo soubory lec na jinm relnm souborovm
systmu. V neposledn ad lze symbolick odkaz vytvoit i na adres. Pokud je
zdrojov soubor smazn nebo pesunut, pak bude symbolick odkaz ukazovat
na neexistujc soubor. Takov odkaz se nazv naruen - "broken link".
Na nsledujcm obrzku je znzornna struktura pevnho odkazu. Soust administra
tivnch informac kadho souboru je i ta referenc a jeho hodnota je rovna potu
jmen, kter na dan soubor ukazuj. Z tohoto technickho dvodu nelze vytvet
pevn odkazy v rmci rznch relnch souborovch systm.

I jmno 1 I .+
i-uzel ativn
... ,----;--__
- -,
..

jmno 2 administ
informacer
I==:::: ::; I.::::-t- -"-" -" -,:!:
. . /
.
LJ
..

I jmno n 1 -(
V praxi se doporuuje pouvat sp symbolick odkaz kvli jeho prunosti. Oba
druhy odkaz se vytvej pomoc programu l n. Program ln m dva uiten pe
pnae, - s a - f . Je-li uveden pepna - s, je vytvoen symbolick odkaz, v opanm
46 Kapitola 3. Souborov systm

ppad je vytvoen pevn odkaz. Pepna f umouje vytvoit odkaz i v ppad,


-

e jeho jmno koliduje s ji existujcm souborem v systmu. V takovm ppad


je soubor odkazem nahrazen. Odkaz lze smazat tradin cestou, tedy pomoc pro
gramu rm.
Program ln m syntaxi ln <Jpfepnae r> <J zdroh r> . . . <Jzdrojn r> <J cl r>. Pitom
<J cl r> me bt vynechn za pedpokladu, e zdroj je prv jeden. V takovm p
pad je odkaz vytvoen v pracovnm adresi a m stejn jmno jako jeho zdroj . Je-li
uvedeno vc zdroj, mus bt argument <Jcl r> adres. Schma pkazu je podobn
jako u programu cp. Nsledujc pklad ukazuje prci s odkazy.

$ ed - /data/
$ ls - F
s cheme / tex/
$ ln -s seheme/ deve 1
$ ln - s deve 1 / f ibonae e i . sem f ib . sem
$ ln tex/ z ivotopi s . ps
$ ls -F
deve l@ f ib . s cm@ s cheme / t ex/ z i votop i s . ps

Nejprve byl vytvoen symbolick odkaz na adres s eheme, potom byl vytvoen
symbolick odkaz na soubor f ibonae e i . s em. Vimnte si, e v definici cesty k to
muto souboru byl vyuit prv vytvoen odkaz. Jako posledn byl vytvoen pevn
odkaz z ivot op i s . ps . Ve vpisu soubor v adresi jsou dky pepnai - F symbo
lick odkazy znaeny ,,@". Pokud by uivatel nyn smazal odkaz deve l, pestal by
fungovat i odkaz f ib . s em.

$ rm deve 1
$ ls -F
f ib . s cm@ s cheme / t ex/ z ivotop i s . ps
$ eat f ib . sem
cat : f ib . s cm : No such f i l e or direc t ory

Odkaz f ib . s em sice existuje, ale ukazuje na neexistujc soubor. V takov situaci je


dobr pout ji znm program f i l e. Program provede identifikaci odkazu a vype,
kam odkaz ukazuje.

$ f i 1 e f ib . sem
f ib . scm : broken symbo l i c l ink to deve l / f ibonac c i . s cm

Sprva symbolickch odkaz


as od asu je dobr udlat si mezi symbolickmi odkazy podek. K tomuto elu
se vborn hod program syml i nks. Jedn se o nstroj vytvoen pro zjednoduen
drby symbolickch odkaz. Argumenty programu jsou prohledvan adrese.
Pokud je program sputn v upovdanm reimu, vype informace o vech symbo
lickch odkazech. V opanm ppad informuje pouze o problematickch odkazech.
Viz pklad pouit.
3.6. Tradin pfstupov prva 47

$ ln - s tex/ z ivo topi s . ps - / data


$ ln -s tvar - /data/muj var
$ syml inks -v - /data
dang l i ng : - / da t a / f ib . s cm - > deve l / f ibonacc i . scm
other f s : - / data/muj var - > tvar
relat ive : - / dat a / z ivotop i s . p s - > t ex/ z ivotop i s . ps

V ukzce program syml inks uivatele informuje o tech odkazech. Prvnm


i. nich je naruen odkaz f ib . s em. Na druhm dku je uvedena informace o od
kazu vedoucm pes rzn souborov systmy. Tet dek informuje o funknm
symbolickm odkazu z ivot op i s . p s, jen byl definovn relativn cestou. Program
syml inks doke krom detekce problmovch odkaz provdt jednoduchou
drbu. Napklad pomoc argumentu d mohou bt odstranny vechny naruen
-

odkazy. Dle pi pouit argumentu e program pevede vechny absolutn odkazy


-

v rmci jednoho souborovho systmu na relativn. Po tomto zsahu je mon vchoz


adres kompletn penst na jin systm. Odkazy v rmci adrese ji toti nebudou
zvisl na jeho absolutnm umstn v adresov struktue. Pro dal podrobnosti
viz manulovou strnku programu syml i nk s .

Sprva pevnch odkaz


Identifikace pevnho odkazu je sloitj. Soubor, na kter ukazuje pevn odkaz,
lze identifikovat podle potu jeho referenc. Naraz-li uivatel na obyejn soubor
s vce jak jednm odkazem, jedn se o soubor, k nmu v systmu existuje pevn
odkaz nebo je sm pevnm odkazem. Pro osven pamti, poet referenc lze zobrazit
dlouhm vpisem programu l s, to jest napklad pomoc l s - 1 <l souborr>. Pevn
odkaz lze identifikovat napklad pomoc programu 1 s s pepnaem i, jen zpsob
-

vypsn informace o slu i-uzlu.


$ ln -s tex/ z ivo topi s . ps dal s i . ps
$ l s - l i F dal s i . ps z ivotopi s . ps
4 7 4 6 4 da l s i . ps@
7 0 9 3 3 z ivot op i s . p s
$ l s - l i F tex/ z ivo top i s . ps
7 0 9 3 3 t ex/ z ivotop i s . p s

V pedchoz ukzce byl nejprve vytvoen symbolick odkaz pro porovnn i-uzl,
pot byla do jednoho sloupce vypsna jmna soubor vetn informac o slech
i-uzl. sla se pro pevn odkazy shoduj, pro symbolick odkazy nikoliv. To je ale
pm dsledek plynouc z rozdlnosti obou typ odkaz.

3.6. Tradin pstupov prva


Tradin systm prv je v Unixu velmi jednoduch. Jeho jednoduchost umo
uje manipulovat s pstupovmi prvy k souborm a adresm velmi efektivn,
veker nastaven pstupovch prv k souboru lze provst v konstantnm ase. P
vodn systm prv se vborn hod napklad pro servery poskytujc stov sluby.
48 Kapitola 3. Souborov systm

V nkterch situacch se vak zanaj projevovat jeho slabiny. Jedn se pedevm


o absenci monosti pidlit individuln pstupov prva vce uivatelm na je
den soubor, a to bez nutnosti zavdt nov skupiny uivatel. Podobn problmy
e rozen systmy pstupovch prv, kter se na jednu stranu sna bt zptn
kompatibiln s tradinm systmem, na stranu druhou umouj pidlovat prva na
jemnj rovni.
V dalm textu bude rozebrn tradin systm prv. V nsledujc kapitole nalez
nete strun popis POSIX ACL, co je jeden z rozench systm prv v Unixu
zachovvajcch zptnou kompatibilitu. Nejprve je vak poteba vnovat se proble:
matice vlastnictv soubor, jeliko se bezprostedn dotk interpretace pstupovch
prv.

Vlastnictv souboru
V systmu Unix m kad soubor svho vlastnka. Vlastnkem je v drtiv vtin
ppad uivatel, jen dan soubor vytvoil. Obecn tomu tak bt nemus. Superui
vatel root me vlastnictv souboru explicitn pfidlit libovolnmu uivateli. dn
jin uivatel neme vlastnictv souboru svvoln mnit.
Kad uivatel je v systmu Unix jednoznan identifikovn svm slem UID -
- User ldentification. Superuivatel root m UID vdy rovno O. Pro snaz orientaci
se uivatelm zavdj uivatelsk jmna. Je vak nutn si uvdomit, e z hlediska
identifikace uivatele v systmu je podstatn jeho UID. Jeliko jsou jmna uivatel
chpna v podstat jen jako "zkratky za sla", mohou se v systmu nalzat soubory,
jejich vlastnk nem pfidlen jmno. Tato situace typicky nastv, pokud je z data
bze t odstrann zznam o uivateli, ale nejsou napklad smazna data z jeho
domovskho adrese. Z tohoto pohledu vlastn sprvce systmu "nevytv/neru
uivatele", nbr pouze pidluje/odjm slm uivatelsk jmna. V administrativ
nch informacch souboru je vlastnk souboru samozejm zaznamenn pomoc UID.
Vyazen uivatele z databze t tedy nem vliv na vlastnictv souboru - soubor je
pod vlastnn "uivatelem" se stejnm UID, ale beze jmna.
Krom uivatele je vem souborm piazena jet skupina. Skupiny jsou podobn
jako uivatel identifikovny slem CID - Group ldentification. Opt plat, e slo je
stejn a nzev je pouze jeho zastoupen pro zjednoduen prce v systmu. Kad
uivatel m jednoznan urenu svou primrn skupinu, me patit i do dalch sku
pin. Primrn skupina m vznam pi vytven soubor. Zjednoduen eeno, je-li
UID slo uivatele s primrn skupinou CID, potom kad nov vytvoen soubor
bude vlastnn uivatelem VID a bude mt pidlenu skupinu CID. Ve skutenosti je
situace o nco sloitj. Nov vytvoenmu souboru me bt skupina implicitn na
stavena na skupinu vlastnc adres, ve kterm byl soubor vytvoen. Vechny takov
zmny skupiny vak mus bt podmnny nastavenm specilnho pstupovho
prva. Problematika bude rozebrna dle.
Shrneme-li pedchoz poznatky, ke kadmu souboru existuj dv sla, kter
charakterizuj jeho vlastnka a skupinu. Tyto informace jsou bhem existence sys
tmu uloeny v kadm i-uzlu souboru. V systmu Unix existuje zkladn uivatel
3.6. Tradin pstupov prva 49

a zkladn skupina. Uivatel a skupina maj slo nula a oznauj se shodn roo t .
Superuivatel root m v systmu privilegovan postaven, me mnit vlastnky,
skupiny a pstupov prva ke vem souborm v systmu.

Struktura uivatelskho tu
Doposud jsme hovoili o pojmu uivatelsk et sp na intuitivn rovni. Nyn m
eme tento pojem pesnji vymezit - uivatelsk et sestv z informac, kter jsou
pilenny k slu UID. Informace o uivatelskch tech a skupinch jsou v systmu
uloeny v souborech / e t c /pas swd a / e t c / group. Kad uivatel oprvnn za
pisovat do tchto soubor me mnit informace o tech. V praxi je to ale vhradn
superuivatel roo t . Soubory / e t c /pas swd a / e t c / group maj zhruba stejnou
strukturu. Soubor / e t c /pas swd obsahuje dky tvaru
<J nzev tu r:> : <Jheslo r:> : <J U/D r:> : <J G/D r:> : <Jjmno r:> : <J adresr:> : <J shell r:>
Pedchoz tvar souboru se v argonu nazv "colon separated list", to jest "seznam
oddlen dvojtekami". Soubory obsahujc zznamy oddlen dvojtekami se v Unixu
vyskytuj pomrn asto, zejmna jako konfiguran a systmov soubory. Prvn
zznam v souboru je <J nzev tu r:> neboli uivatelsk jmno. Uivatelsk jmno je
obvykle sloeno z psmen a zpravidla je odvozeno od pjmen a jmna uivatele.
Dal poloku tvo zakdovan <J heslo r:>. Pokud je msto hesla uveden jeden znak,
napklad " * /1, uivatel bude mt neplatn heslo. Obecn lze zablokovat uivatelsk
et zapsnm vhodnho etzce na msto hesla - tm je uivateli prakticky zne
monno pihlsit se do systmu na zklad hesla. Dlka hesla me bt rzn a je
zvisl na pouitm kdovacm algoritmu. Na nkterch systmech jsou uivatelsk
hesla skryta pln. Napklad systm Linux me pouvat systm stnovch hesel.
Zakdovan hesla jsou zapsna v souboru / e t c / shadow nepstupnm pro oby
ejn uivatele. Skryt celho souboru / e t c /pas swd nen vhodn, znemoovalo
by to bnm uivatelm zachzet s uivatelskmi jmny.
Za heslem nsleduj dv seln hodnoty, jde o <J UID r:> a <J GID r:> primrn sku
piny. Dal daj je sp informativn, obsahuje civiln jmno uivatele, ppadn dal
informace oddlen rkami. Posledn dva daje slou pro stanoven domovskho ad
rese a implicitnho shellu oba daje jsou uvedeny formou absolutn cesty, napklad
/ home / s tudent / inf 9 7 / novakj a / b i n / ba sh.

Nastaven vlastnka a skupiny


Pokud uivatel potebuje zskat informace o svm tu, me je vyst pmo ze
souboru / e t c /pas swd. Program group s slou k vypsn skupin, do kterch pat
uivatel. Nen-li jmno uivatele uvedeno jako argument programu, jsou vypsny
informace o prv pihlenm uivateli.
$ whoami
novakj
$ groups
s tudent whe e l
50 Kapitola 3. Souborov systm

Pklad ukazuje skupiny, do nich pat uivatel novakj - s tudent a whe e l . Pro
gramy chown a chgrp slou ke zmn vlastnka a/nebo skupiny. Program chown
je zcela univerzln, lze jm zmnit vlastnka souboru, skupinu nebo oboj zrove.
Zmna vlastnka souboru je vyhrazena pouze superuivateli root . Skupinu me
mnit i obyejn uivatel. U souboru vak me nastavit pouze skupiny, do kterch sm
pam. Uivatel novakj z pkladu me u vlastnnch soubor mnit skupinu na
student a whe e l . Programy chown a chgrp maj nsledujc syntaxi

chown <J vlastnkr> . <J skupina r> <J soubory r>


chgrp <Jskupina r> <J soubory r>

Obecn eeno, pi zmn daj pomoc programu chown lze uvst daje o vlast
nkovi a skupin oddlen tekou, libovoln ze dvou st me bt vynechna. Pi
zmn skupiny mus argument zanat tekou. Toto odlien je nutn, protoe v systmu
mohou existovat uivatel i skupiny stejnho jmna a mohlo by dojt k nejednozna
nosti. Pouit program demonstruje pklad.

$ ls - 1 todo
- rwxr - x r - x 1 novakj s t udent 6 9 Jun 1 8 1 6 : 4 5 t odo *
$ chgrp whee l todo
$ l s - 1 todo
- rwxr - xr - x 1 novakj whee l 6 9 Jun 1 8 1 6 : 4 5 todo*

Kategorie uivatel a pstupov prva


Zkladn mylenkou pstupovch prv systmu Unix je pidlen prv k souboru
vdy tem zkladnm kategorim uivatel. Kad z kategori lze pidlit ti zkladn
oprvnn. Pistupuje-li uivatel k souboru, je nejprve rozhodnuto, do kter kategorie
pat. Pot je mono ovit, zdali m pro poadovanou operaci oprvnn.
Z hlediska systmu Unix se uivatel ve vztahu k souboru dl do t kategori:

vlastnk souboru - owner,


len skupiny piazen souboru - group,
ostatn - others.

Soubor je vlastnn vdy prv jednm uivatelem, ten spad do prvn skupiny.
Vichni uivatel, kte jsou leny skupiny piazen souboru, pat do druh sku
piny. Nespluje-li uivatel ani jednu z pedchozch podmnek, spad do tet skupiny.
Pro dan soubor lze kad z pedchozch t skupin pidlit libovolnou kombinaci
t zkladnch prv:

prvo na ten - read,


prvo na zpis - write,
prvo spoutt soubor - execute.
3.6. Tradin pfstupov prva 51

Pro zakdovn pstupovch prv pro jednu skupinu potebujeme 3 bity, kad
zkladn prvo buto nastaven je, nebo nen. Celkem je pro zaznamenn informace
poteba 3 x 3 9 bit. Kad soubor me mt pidlena jet ti speciln prva,
=

ta se nevztahuj na ti zkladn skupiny uivatel. Nzvy specilnch prv nemaj


ustlen esk peklad,
S UID - Set User ID,
SGID - Set Group ID,
Sticky Bit.
Pro pln popis pstupovch prv k souboru postauje 3 x 3 + 3 12 bit, co jsou
=

necel dva bajty. Vznam jednotlivch prv se pro soubory a adrese li. V nsle
dujcm textu jsou rozebrna jednotliv zkladn prva a jejich vznam vzhledem
k souborm a adresm.

Vznam pstupovch prv


Prvo read umouje uivateli st obsah souboru. Prvo write umouje uiva
teli mnit obsah souboru. Prvo execute umouje uivateli spoutt soubor. Spustiteln
soubor je buto binrn soubor obsahujc instrukce pro procesor, nebo skript interpre
tovan shellem. Je nutn uvdomit si rozdl v koncepci spustitelnch soubor oproti
ostatnm systmm. Spustitelnost souboru nen dna jeho pponou, jako napklad
v MS-DOSu, nbr pfstupovm prvem.
M-li soubor nastaven SUID Bit a je-li sputn, potom se nastav efektivn ui
vatel na vlastnka souboru a program je vykonvn, jako by jej spustil jeho vlastnk.
Nen-li SUID Bit nastaven, program je vykonvn s efektivnm uivatelem nastavenm
na aktulnho uivatele. SGID Bit je analogi pro skupinu pidlenou souboru. Vyu
it SUID Bitu je zejm. V systmu napklad existuje pirozen poadavek, aby si
uivatel mohli mnit svoje pstupov hesla. Uivatel k tomu pouvaj program
pas swd. Soubor / e t c /pas swd ale neme bt v systmu veejn mniteln, protoe
by uivatel mohli jeho obsah pokodit nebo by jej mohli jinak zneuvat. Program
pas swd je vlastnn uivatelem root, skupinou root a m nastaven SUID Bit. Tm
pdem se pi sputn chov, jako by jej spustil uivatel root a zpis do souboru
/ e t c /pas swd je mon. Zpis je vak pod kontrolou programem p a s s wd. Sticky Bit
je posledn ze specilnch prv, pi jeho nastaven se obsah spustitelnho souboru po
nechv ve vyrovnvac pamti, m se urychl pt start programu. V souasnosti
je Sticky Bit pouvn zdka.

Vznam pstupovch prv pro adrese


Prvo read umouje uivateli st obsah adresfe. V dsledku to znamen, e
je napklad uivateli umonno vypisovat obsah adrese pomoc programu l s .
Prvo write umouje v adresi vytvet nov soubory a mazat soubory. Pokud
se v adresi s prvem write nachz soubor bez prva zpisu, vtina program
dovol soubor smazat a pi pouit reimu bez ptan force mdu. Tm vechny
-
52 Kapitola 3. Souborov systm

programy manipulujc se soubory disponuj pepnaem f zapnajcm tento reim.


-

Prvo execute umouje uivateli vstoupit do adresfe a odkazovat se na soubory i


adrese v nm obsaen. M-li adres nastaven SGID Bit, budou vechny nov
vytvoen soubory nleet skupin piazen tomuto adresi. V opanm ppad
nov vytvoen soubor nle primrn skupin uivatele, kter jej vytvoil. M-li
adres nastaven Sticky Bit, pak je v nm uivateli povoleno mazat jen sv vlastn
soubory. V opanm ppad uivatel me mazat soubory i jinm uivatelm, m-li
na adres prvo zpisu.

Zmna mdu pstupu


Informace o pstupovch prvech k souboru jsou uloeny v i-uzlu pslunho
souboru. Pstupov prva jsou zde uloena vdy - nem tedy pli velk smysl bavit
se o "nastaven pstupovch prv", nbr o "zmn pstupovch prv". V systmu
neme existovat soubor bez nastavench pstupovch prv. Pstupov prva lze
zmnit programem chmod. Program chmod bv pouvn dvojm zpsobem. Prvn
zpsob je tradin, prva jsou jednoznan urena pomoc mdu pfstupu - sla za
psanho v oktalov soustav. Druh zpsob je symbolick, prva jsou modifikovna
podle vzorovho etzce symbol. Program chmod m tud dvoj syntaxi:
chmod <J slo r> <J souboryr>
chmod <J kdo r><Joperace r><Jprvo r> <J souboryr>

Nejdve bude rozebrn jednodu zpsob - pidlovn prv pomoc mdu pfstupu .
Jak se nabz intuitivn zdvodnn pro pouit osmikov soustavy v zpisu sla?
V seln soustav o zklad 8 lze jednocifernm slem vyjdit prv 23 8 rz =

nch hodnot. To je prv tolik hodnot, kolik je libovolnch kombinac t zkladnch


pstupovch prv. Jednotlivm prvm jsou piazeny pevn hodnoty. Nsledujc
tabulka ukazuje zpis tchto hodnot ve dvojkov a osmikov soustav.

prvo binrn oktalov prvo binrn oktalov


execute 001 1 Sticky Bit 001 1
write 010 2 SGID Bit 010 2
read 100 4 SUID Bit 100 4

Nyn je zeteln vidt, e pro plnou charakterizaci pstupovch prv sta tyi cifry
v osmikov soustav. Zbv pouze vyeit jednoznanost poad cifer. Pstupov
md se zapisuje ve tvaru "abcd " , kde a odpovd specilnm prvm, b oznauje
prva pro vlastnka, c prva pro skupinu a d prva pro ostatn. Pi kombinaci jednot
livch prv sta pouze stat hodnoty. Chceme-li napklad vyjdit prvo pro "ten
a spoutn ", bude mu odpovdat hodnota 4 + 1 5. Prvu pro "ten a zpis" bude
=

odpovdat 4 + 2 6 a podobn. Pi uveden mdu pstupu lze vynechat prvn cifru,


=

ta je pak chpna jako nula. Napklad slo 751 m stejn vznam jako slo 075l.
Mezi asto pouvan kombinace prv pat 644 - vlastnk m prvo ten a zpisu,
skupina a ostatn maj pouze prvo na ten. Ekvivalent pedchozho pro adrese
3.6. Tradin pstupov prva 53

nebo spustiteln soubory je 755, vechny ti skupiny maj navc prvo pro spoutn.
Nastavme-li adres na hodnotu 710, vlastnk bude mt pln prva, lenov skupiny
mohou do adrese vstoupit, ale nemohou vypisovat jeho obsah a ostatn nemaj
k adresi dn prva. Hodnota 71 1 je obvykl napklad pro domovsk adres
nebo koen WWW strnek. Hodnotou 4775 se nastav uivateli a skupin pln prva,
ostatnm prva pro ten a spoutn, zrove je nastaven i SUID Bit. Viz nsledujc
ukzku pouit programu chmod.
$ chmod 6 6 0 todo
$ chmod 7 0 0 mai l
$ chmod 7 1 0 data
$ chmod 6 0 0 . pro f i l e . bash_hi s tory
$ chmod 4 4 4 forward
$ ls - la
total 6 6
- rw - - - - - - - 1 novaj k s t udent 5630 Jan 18 18 : 25 . bash_h i s t ory
-r- -r- -r- - 1 novaj k student 28 Jan 18 18 : 20 . forward
- rw - - - - - - - 1 novaj k student 504 Jun 18 16 : 15 . prof i l e
drwx - - x - - - 4 novaj k s tudent 8 1 92 Feb 13 15 : 04 dat a /
drwxr - xr - x 2 novaj k s t udent 8 1 92 Feb 11 8 : 23 etc/
drwx - - - - - - 2 novaj k s tudent 8192 Feb 20 9 : 55 mai l l
- rw - rw - - - - 1 novaj k student 69 Jun 18 12 : 05 t odo

V pedchoz ukzce uivatel nejprve nastavil soubor t odo pro ten a zpis pro
vlastnka i skupinu, ostatn uivatel nemaj k souboru dn prva. Dle si nastavil
vlun prva na adrese ma i l, kdokoliv krom uivatele novakj nem na tento
adres dn prva, co je v ppad soukrom poty pochopiteln. Prva pro ad
res data se li v jednom pidlenm prvu - lenov skupiny smj do adrese
vstoupit, nemohou ale vypisovat jeho obsah. Soubory prof i l e a bash_hi s tory
. .

nejsou veejn dostupn, jejich vlastnk m pidlena prva ten a zpisu. Soubor
. f o rward, obsahujc informace o pesmrovn poty, je nastaven vem skupinm
pouze pro ten.

Symbolick zpis pstupovch prv


Symbolick zpis pstupovch prv je o nco sloitj ne zpis selnho mdu
pstupu. Prva k souborm nejsou definovna absolutn, nbr relativn k ji exis
tujcm prvm. V dosud uvedench pkladech byla prva nastavena vdy abso
lutn - nezvisle na pedchozch prvech. Pomoc symbolickho zpisu prv a hro
maq.nho pidlovn prv nkolika souborm lze jednodue vyjdit zmny p
stupovch prv typu "vem skupinm pidej prvo spoutt", "vem vlastnkm
odeber prvo st" a podobn.
Symbolick tvar pstupovch prv sestv ze t po sob jdoucch prvk a lze jej
chpa t jako etzec <J kategorie r><J operace r><J prvo r>. etzec <J kategorie r> uruje, jak ze t
skupin se zmna prv tk. Vsledn prva jsou vypotena pomoc <J operacer> ze st
vajcch prv a z nastavovanch prv. etzec <J kategorie r> se me skldat z hodnot
" "
"u - vlastnk, " g - skupina, "o " - ostatn, "a " - vechny pedchoz kategorie. Sym

bol <J operace r> uruje, jakm zpsobem se bude s prvy zachzet. Me nabvat jedn
54 Kapitola 3. Souborov systm

z hodnot, ,, + " - prvo bude pidno, ,, - " - prvo bude odebrno, nebo ,, = " - prvo
bude nastaveno absolutn.
Poslednm etzcem je samotn <Jprvo r>. Znak " r " oznauje prvo pro ten, "w "
oznauje prvo pro zpis a konen "x " oznauje prvo spoutt. Pomoc symbo
lickho zpisu lze pidlit i speciln prva, symbol " s " oznauje SUID nebo SGID
v zvislosti na hodnot symbolu <Jkategorie r>. Symbolem " t " lze pidlit Sticky Bit.
"
Argument <Jprvo r> lze vynechat pouze tehdy, je-li <Joperace r> rovna V tomto p
,, = .

pad budou dan kategorii odebrna veker pstupov prva. Vechny uveden
symboly shrnuj nsledujc tabulky.

prvo symbol
kategorie symbol
vznam operace read r
owner u
pidej + write w
group 9
odeber execute x
others o
nastav SUID/SGID s
aH a
sticky t

Symbolick oznaen prv je pouvno i pi detailnm vpisu obsahu adrese po


moc programu 1 s sputnho s argumentem - 1, viz pedchoz pklad. Ve vpisu je
navc prvn znak vyhrazen pro oznaen typu souboru, napklad "d " je adres, ,, 1 "
je odkaz a podobn. Pi symbolickm zpisu prv lze na pkazovm dku uvst
vc pravidel, kter jsou navzjem oddlena rkami. Nsledujc ukzka demonstruje
pouit symbolickho zpisu, celkov efekt pidlen prv je stejn jako v pkladu
pouit pm zmny mdu pstupu.

$ chmod a=rw , o= todo


$ chmod a - rwx , u=rwx mai l
$ chmod a= , u=rwx , g+x data
$ chmod o= , u+rw . pro f i l e . bash_hi story
$ chmod a=r . forward

Poznmky k prci s pstupovmi prvy


Pokud se uivatel pokus manipulovat se souborem, na nj nem potebn prva,
pkazov interpret tuto skutenost ohls chybovou zprvou. Takov situace me
nastat napklad pi pokusu o vstup do adrese, na kter uivatel nem prva, nebo
teba pi pokusu spustit program bez pslunho spoutcho prva. Viz pklad.

$ chmod u-x data


$ chmod u - r mai l
$ c d data
bash : cd : dat a/ : Permi s s i on den i ed
$ cd mai l
$ ls - la
l s : . : Permi s s i on denied
3.6. Tradinf pfstupov prva 55

V prvnm ppad si uivatel odebral prvo execute na adres data. V druhm


ppad odebral prvo read na adres ma i l . Pi pokusu zmnit pracovn adres na
adres data dolo k chybovmu hlen - do adrese nelze vstoupit. V ppad
adrese ma i l je do nj sice mon vstoupit, ale nelze vypisovat jeho obsah, jeliko
bylo odebrno prvo pro ten obsahu adrese. Pi pouit programu 1 8 tedy shell
opt nahlsil chybu.
Na zvr udlejme nkolik poznmek k efektivnmu pouvn pstupovch
prv. Programy chown, chgrp a chmod maj pepna R, kter zpsobuje zmnu
-

vlastnka, skupiny i prv ve vech podadresch. Je-li pepna R pouit, dan


-

operace je aplikovna na kad soubor nalezen v libovolnm podadresi. V tomto


mdu je opt nutn pouvat programy velmi obezetn.
Program 1 8 m mnoho volitelnch pepna. Pepna - n me bt uiten
pi zobrazovn informac o vlastnkovi a skupin. daje jsou vypisovny jako UID
a GID, tedy seln. Pepna - n by ml bt pouit v souinnosti s pepnaem - l .
Pouit SUID program by mlo bt velmi stdm. SUID je mocn nstroj, ale
nese s sebou bezpenostn rizika. Pedpokldejme, e uivatel A zsk shell vlastnn
uivatelem B, kter m navc nastaven s um Bit. Spust-li uivatel A tento shell,
zsk tm interpret pkaz, ale bude pracovat pod identitou uivatele B. To je velmi
nebezpen, jeliko me bt pkazov interpret bez vdom uivatele B pouit
naprosto k emukoli.

Uivatelsk maska
Pokud je nov soubor vytvoen napklad kopi, vyvstv pirozen otzka: "Jak
budou jeho pstupov prva?" Zcela jist by mla bt odvozena od pstupovch
prv pvodnho souboru. Stejnou otzku si lze poloit i pi vytven novch sou
bor: "Jak pstupov prva by ml mt implicitn nastavena nov vytvoen sou
bor?" Pirozenm eenm je mt k dispozici jist omezujc apart. Prva nov vytv
ench soubor by mla sten nebo i pln odpovdat vchozm prvm, mlo
by ale bt mon tato prva omezit - napklad kvli bezpenosti.
Pstupov prva k nov vytvenm souborm jsou pidlovna pomoc uiva
telsk masky. Uivatelsk maska m vznam doplku do spodnch devti bit v ui
vatelskch prvech. Pi vytven novch soubor me dojt ke dvma situacm.
Pokud je soubor vytvoen ze zdroje se znmmi pstupovmi prvy, napklad ko
pi souboru, pstupov prva vslednho souboru jsou nastavena jako logick rozdfl
prv vchozfho souboru a uivatelsk masky. Napklad pokud m uivatel nastavenu
masku 022 a zkopruje soubor s pstupovmi prvy 664, nov vytvoen soubor
bude mt pidlena prva 644.
Pokud pi vytven novch soubor nejsou pouity dn zdrojov soubory,
vsledn pstupov prva jsou vypotena jako logick rozdl pstupovch prv 666
a uivatelsk masky. Je-li vytvoen adres, jeho prva jsou stanovena rozdlem
prv 777 a uivatelsk masky. To jest pi vytvoen adrese je navc nastaveno prvo
spoutn, pokud samozejm nen odstranno uivatelskou maskou.
56 Kapitola 3. Souborov systm

Aktuln nastaven masky lze zobrazit pkazem urna sk. Masku lze nastavit p
kazem urna sk s argumentem urujcm hodnotu uivatelsk masky. Argument me
bt buto seln, nebo symbolick. Je dobr uvdomit si, e maskou uivatel na
stavuje doplnk, to jest odebran pfstupov prva . Napklad hodnota 022 zaruuje
vmaz prva pro zpis skupin i ostatnm uivatelm, prva pro vlastnka jsou
zachovna. V ppad masky 022 bude mt kad nov vytvoen datov soubor
pstupov prva 644 a kad nov vytvoen adres 755 . Pouit pkazu urna sk
ukazuje nsledujc pklad.

$ l s -1 soubor . txt
- rw - rw - r - - 1 novakj s t udent 1 5 3 Mar 18 1 3 : 1 7 soubor . txt
$ umask 0 2 7
$ c p soubor . txt novy . txt
$ ls - 1 novy . txt
- rw - r - - - - - 1 novakj student 1 5 3 Mar 24 1 6 : 5 2 novy . txt

V nkterch ppadech je poteba pstupov prva zachovat v pvodnm stavu.


Napklad pi zlohovn dat by nebylo vhodn upravovat koprovanm datm je
jich pstupov prva. V tomto ppad se nabz dvoj een. Buto uivatel nastav
masku na hodnotu 000, nebo pouije program cp s pepnai -p nebo - a. Pepna
- p zapne program cp do reimu zachovvn pstupovch prv, pepna - a navc
zapne reim zachovvn symbolickch odkaz a reim koprovn vetn podadre
s.

3.7. zen pstupu pomoc ACL


Tradin pstupov prva maj sv omezen. Pedevm vlastnkem souboru je
prv jeden uivatel a nen tedy mon pidlovat k souboru pstupov prva
pro dal jednotlivce. Jistm eenm je zaveden samostatnch skupin uivatel.
Pomineme-li, e takov een je krajn nesystmov, i se skupinami uivatel lze
opt dospt do bezvchodn situace. Bezpenostn dodatek POSIX.le normy POSIX. l
pedstavuje zen pstupu k souborm jemnjm mechanismem. POSIX ACL ne
boli Access Control List je speciln systm pstupovch prv zaloen na libovoln
dlouhch seznamech definujcch oprvnn pstupu k souborm. Na vod po
dotknme, e zdaleka ne vechny operan systmy tento standard podporuj.

Struktura seznamu pro zen pstupu


Pstupov prva kadho souboru jsou urena jednm seznamem fzen pfstupu,
zkrcen ACL. Seznam zen pstupu obsahuje libovoln mnostv zznam. Kad
zznam nese specifickou informaci o pstupovch prvech - kolem zznam je de
finovat pstupov prva pro konkrtn kategorii uivatel. Nkter kategorii jsou z
kladn a v platnm ACL mus bt vdy ptomny zznamy tchto kategori. Vechny
kategorie zznam jsou shrnuty v nsledujc tabulce.
3.7. zen pstupu pomoc ACL 57

kategorie vznam kategorie vznam


USER OBJ vlastnk souboru USER jednotliv uivatel
GROUP OBJ vlastnick skupina GROUP skupina uivatel
OTHER ostatn uivatel MAS K pstupov maska

Kategorie USER_OBJ, GROUP_ OBJ a OTHER reprezentuj vlastnka souboru, vlastnickou


skupinu a ostatn uivatele. Jejich vznam je naprosto stejn jako v ppad tradinch
pstupovch prv. Tyto ti kategorie jsou povinn a v platnm ACL souboru mus
ke kad z tchto t kategori existovat prv jeden platn zznam. V platnch ACL
je zaruena zptn kompatibilita s tradinm systmem pstupovch prv. Krom
zkladnch t zznam nemus ji ACL obsahovat dn dal zznamy.
Kategorie US ER a GROUP slou k definici pstupovch prv dalm uivatelm
a skupinm uivatel. Napklad pokud se uivatel novakj rozhodne pidlit pstu
pov prva k njakmu souboru pouze dvma jinm uivatelm, do ACL souboru
pid dva zznamy kategorie USER obsahujc jmna obou uivatel a pslun p
stupov prva. Pokud se v ACL nachz alespo jeden zznam USER nebo GROUP,
mus bt v ACL ptomen i prv jeden zznam MASK. Zznam MASK definuje masku
omezujc pstupov prva uivatelm a skupinm specifikovanm zznamy USER,
GROUP a GROUP_OBJ. Prva uivatel a skupin jsou stanovena logickm souinem pi
dlench prv a prv definovanch maskou. Hodnota zznamu MAS K nem vliv na
interpretaci prv definovanch zznamy USER_ OBJ a OTHER. Zznam MAS K samo
zejm nem nic spolenho s uivatelskou maskou definovanou pkazem uma sk.

Zobrazen pstupovch prv


Kompletn ACL souboru nelze zobrazit programem l s . Pi pouit programu
l s s pepnaem - 1 jsou zobrazeny pouze zkladn ti kategorie uivatel, ostatn
nastaven prv zstv skryto. Informace o aktulnm ACL souboru lze zobrazit
programem ge t f ac l . Jako argumenty jsou programu ge t f a c l pedny nzvy cesty
k souborm. Pokud je jako argument uveden i soubor lec mimo souborov systm
podporujc ACL, get f ac 1 se chov identicky jako v ppad souboru se zkladnmi
ACL zznamy. Viz pklad vstupu programu.
$ ls - 1 tradicni . txt
- rw - r - - - - - 1 novakj s t udent 4 2 3 7 Jun 1 4 1 1 : 0 7 t radicni . txt
$ get facl tradicni . txt
# f i l e : t radicni . txt
# owne r : novakj
# group : student
u s e r : : rw -
group : : r - -
other : - - -

Prvn ti dky poskytuj informace o jmnu souboru, vlastnkovi a vlastnick


skupin. dky jsou chpny jako komente, jeliko zanaj symbolem hash ,,# " .
Vpis zkladnch ACL zznam lze potlait pepnaem - - skip - ba s e . Hlaviky
58 Kapitola 3. Souborov systm

ve vpisu obsahuj nzev souboru a informace o vlastnkovi a vlastnick skupin.


Vpis informac v hlavice lze potlait pepnaem - - om i t - he ader. Dal dky
pedchozho vpisu informuj o nastavench prvech. U poloek u s e r a group je
poloka za dvojtekou przdn - tm jsou odlieny zznamy USER_OBJ, GROUP_OBJ
od zznam USER a GROUP, kter zde maj uvedeno jmno uivatele nebo skupiny.
Nsledujc pklad ukazuje vpis ACL souboru obsahujcho zznamy o pstupu pro
jednotliv uivatele a skupiny, ve vstupu je potlaena hlavika a zkladn zznamy.

$ ge t fac l - - omi t - header - - skip -base novy . txt


u s e r : mrbean : rw -
user : up l ny : rwx
group : whee l : r - -
mask : r - x

Z vpisu j e zejm, e k souboru novy . t x t jsou nastavena speciln pstupov


prva pro uivatele mrbean a up l ny. Prvn ze jmenovanch m nastaveno prvo
st a zapisovat, druh uivatel m vechna prva. Soubor novy . txt m z pocho
pitelnch dvod nastavenu i masku. Maska omezuje pidlovn prv pouze pro
ten a spoutn. Ve svm dsledku tedy uivatel mrbean me soubor pouze st
a uivatel up l ny me soubor st a spoutt.

Zmna pstupovch prv


K manipulaci s ACL zznamy slou program s e t f a c l . Jednotliv zznamy lze
buto pidvat, mnit, nebo odebrat. Prvnm argumentem pi sputn programu
je pepna reprezentujc plnovanou operaci se zznamy a me nabvat hodnot
,, s " - nastaven zznam, ,, m" - zmna zznam a x " - odejmut zznam. Druhm
- -
,,
-

argumentem je samotn specifikace ACL zznam. Jako posledn jsou na pkazovm


dku uvedena jmna soubor. Tvar zpisu zznam je podobn tvaru symbolickch
prv. Zznam me bt uvedeno vce, v tom ppad jsou oddleny rkou.
Jeden zznam je obecn tvaru <Jkategorie r> : <Jjmno r> : <Jprva r>. Kategorie je urena
jednm ze znak "u " - vlastnk nebo uivatel, "g " - vlastnick skupina nebo skupina,
"m " - maska a "o " - ostatn uivatel. Pokud je <Jjmno r> vynechno, zznam se tk
vlastnka nebo vlastnick skupiny. V zznamu masky a v zznamu pro ostatn ui
vatele poloka <Jjmno r> nefiguruje vbec. Poloka <Jprva r> vyjaduje pidlen nebo
odebran prva a zapisuje se tradinm zpsobem - buto symbolicky, nebo seln.
Pokud je provdno odejmut zznam, poloka <Jprva r> mus bt przdn.
Program s e t f a c l zjednoduuje uivateli prci automatickm vytvenm nkte
rch zznam. V pedchzejcm textu bylo napklad konstatovno, e v platnm
ACL obsahujcm poloky USER nebo GROUP se mus nachzet i zznam MASK. Po
kud uivatel pid k zkladnm tem zznamm dal zznam vyadujc zaveden
masky, maska je implicitn vytvoena. Hodnota masky je volena s ohledem na p
stupov prva ovlivnitelnch zznam - hodnota je rovna sjednocen pstupovch
prv ovlivnitelnch zznam a nen tedy nikterak omezujc. Pi pidvn dalch
zznam je maska opt automaticky upravovna. Automatickou pravu hodnoty
3.7. zen pstupu pomoci ACL 59

masky lze potlait pepnaem - no Je-li poteba hodnotu masky zmnit, je nutn
specifikovat zznam pro masku na pkazovm dku.
V nsledujcm pkladu je demonstrovna modifikace pstupovch prv a odeb
rn ACL zznam. V prvnm ppad je uivateli mrbean pidleno prvo pro ten
a kategorii ostatnch uivatel jsou pidlena prva pro ten a spoutn. V druhm
ppad je odebrn zznam uivatele up l ny. Za povimnut rovn stoj, e pi spe
cifikaci odebranho zznamu nejsou uvdna dn prva. V posledn ukzce jsou
nastaveny hodnoty vech t zkladnch zznam vetn zznamu pro masku. Jak
je patrn z tetho dku pkladu, pi specifikaci pstupovch prv lze libovoln
zamovat seln a symbolick zpis pstupovch prv.
$ s e t fac l -m u : mrbean : r , o : rx novy . txt
$ s e t facl - x u : uplny novy . txt
$ s e t fac l -m u : : 6 , g : : 6 , o : O , u : b lahat : 4 , m : rx dal s i - soubor . txt

Interpretace pstupovch prv


Interpretace tradinch pstupovch prv je naprosto pmoar. Uivatel je nej
prve vymezen vi jedn ze t zkladnch kategori. Prva pidlen kategorii jsou
pak pouita pi stanoven oprvnn k pstupu. Pi pouit ACL je situace o nco
sloitj. V prvn fzi je opt vymezena skupina uivatel, v druh fzi me bt
jet vyuita informace v masce. Systm se pi interpretaci pstupovch prv dr
nsledujcho postupu.
J. Nejprve je nalezen odpovdajc ACL zznam. V prvnm kroku tedy jde o vyme
zen pistupujcho uivatele vi jedn z kategori uvedench v ACL souboru.
Pokud je uivatel vlastnkem souboru, pstup k souboru je povolen prv
kdy je poadovan prvo uvedeno v zznamu vlastnka USER_OBJ.
V ppad, e ACL obsahuje zznam pro jednotlivho uivatele, kter je
shodn s pistupujcm uivatelem, je nejprve zkontrolovno poadovan
prvo. Pokud se poadovan prvo v zznamu USER nalz, systm po
krauje bodem 2. V opanm ppad je pstup zamtnut.
Pokud je uivatel lenem vlastnick skupiny nebo pokud je uivatel lenem
nkter ze skupin uvedench v zznamu kategorie GROUP, potom je opt
nejprve zkontrolovno poadovan prvo. Je-li poadovan prvo v z
znamu GROUP_OBJ nebo GROUP, systm pokrauje bodem 2. V opanm
ppad je pstup zamtnut.
Pokud nen mon aplikovat dn z ve uvedench pravidel, poado
van prvo je hledno v zznamu OTHER. Nachz-li se poadovan prvo
v zznamu OTHER, pstup je povolen. V opanm ppad je zamtnut.
2. Provede se logick souin pstupovch prv v masce a pstupovch prv uve
dench v nalezenm zznamu. Pokud se ve vsledku nachz i poadovan
pstupov prvo, pstup k souboru je povolen. V opanm ppad je pstup
zamtnut.
60 Kapitola 3. Souborov systm

Implicitn zen pstupu


Implicitn zen pstupu m analogickou lohu jako uivatelsk maska v prosted
tradinch pstupovch prv. Kad adres me mt definovny implicitn ACL z
znamy dc pstup k nov vytvenm souborm. Pokud adres nem implicitn
ACL zznam uveden, pstupov prva nov vytvench soubor jsou kalkulovna
naprosto stejnm zpsobem jako v ppad tradinho systmu pstupovch prv.
Pokud m adres uveden implicitn ACL zznam, pstupov prva nov vytve
nch soubor jsou pln pod jeho kontrolou a hodnota uivatelsk masky ji nehraje.
dnou roli.
Pedpokldejme, e adres m nastaven implicitn ACL zznam. Pstupov
prva vytvench soubor jsou stanovena z pstupovch prv vchozho souboru.
Pokud vchoz soubor neexistuje, jsou pedpokldna pln prva - pro obyejn sou
bory jsou to prva pro ten a zpis, pro adrese navc i prvo spoutn. Vsledn
prva jsou vypotena logickm souinem s prvy v implicitnm ACL zznamu. Na
staven implicitnho ACL zznamu je prakticky stejn jako nastaven jinch ACL
zznam. Pro rozlien je vak zznam uvdn s prefixem "d : ". Viz pklad.
$ s e t fac l -m d : u : mrbean : rwx , d : g : foo l s : rx . j adre sar
$ ge t facl - - omi t - header - - de faul t . jadresar
de faul t : us e r : : rwx
de faul t : us e r : mrbean : rwx
de f aul t : group : : rwx
de f aul t : group : foo l s : r - x
de f aul t : mask : rwx
de f aul t : other : - - -

V pkladu byl pouit pepna - - de f aul t potlaujc vpis vech daj krom
implicitnch ACL zznam. Akoliv byly nastaveny pouze dva ACL zznamy, pro
gram s e t f a c l vechny potebn ACL zznamy automaticky doplnil. Jeliko byl
uveden implicitn zznam GROUP_OBJ, program s e t f a c l automaticky doplnil
i zznam s maskou. Implicitn hodnoty zkladnch ACL zznam byly automa
ticky nastaveny podle hodnot zkladnch ACL zznam souboru. Pokud nyn ui
vatel v adresi / adre sar vytvo nov soubor, jeho pstupov prva budou
.

stanovena z implicitnch zznam. Uvaujme napklad nov vytvoen soubor


. / adre s a r / s oubor . txt .
$ ge t facl - - omi t - header . j adre sarjsoubor . txt
u s e r : : rw -
u s e r : mrbean : rw
group : : rw
group : f oo l s : r -
ma sk : rw
other : - - -

Jeliko byl . / adre sar / s oubor . txt nov vytvoen obyejn soubor, vsledn
prva byla kalkulovna logickm souinem prv pro ten a zpis s jednotlivmi
implicitnmi zznamy. V ppad zznam USER_OBJ, USER a GROUP_OBJ byla
shodn nastavena prva pro ten a zpis. V ppad zznamu GROUP pro skupinu
3.8. Sdlen diskovho prostoru 61

f oo l s bylo rovn vynechno prvo spoutn. Maska byla automaticky nastavena


jako sjednocen oprvnn pro skupinu vlastnka a pojmenovanou skupinu.
Akoliv jsou ACL z mnoha pohled perspektivn, v souasnosti nejsou nikterak
masivn nasazovny. Jednm z dvod je zatm nedostaten podpora souborovch
systm. Druhm dvodem jsou nkter vyvstvajc problmy. ACL jsou uchov
vny jako rozen atributy soubor a napklad tradin archivan program tar
s nimi nedoke manipulovat, sten upraveny mus bt i ostatn obslun pro
gramy pracujc s pstupovmi prvy. Z uivatelskho hlediska je podstatn ovldat
pedevm tradin systm pstupovch prv.

3.8. Sdlen diskovho prostoru


Pi prci v systmu je vhodn kontrolovat zaplnn disku. Pokud uivatel pracuje
v dobe spravovanm systmu, kontrolu dostupnho prostoru by za nj ml provdt
administrtor. Informace o dostupnch pipojench souborovch systmech vetn
jejich velikosti a volnho msta lze zobrazit pomoc programu d f .
$ df
F i l e system 1 k - b l ocks Used Ava i l ab l e Us e % Mounted on
/ dev/hda3 156212 76324 79888 49% /
/ dev/vo l g 0 1 / tmp 1048540 5 1 3 72 997168 5 % / tmp
/ dev/vo lg 0 1 / u s r 6291260 2 3 73 5 72 3 9 1 7 6 8 8 3 8 % /usr
/ dev/vo l g 0 1 /var 1 0 4 8 54 3 6 75876 10409560 1 % /var
/ dev/vol g 0 1 / home 2 6 54 1 2 6 4 1 1 3 9 7 7 5 2 1 5 1 4 3 5 1 2 4 3 % / home

Diskov kvta
V systmech s vtm potem uivatel jsou uivatel zpravidla limitovni svm
diskovm prostorem. Administrtor direktivn stanov, jak velk diskov prostor
m uivatel k dispozici. Toto omezen se zpravidla nazv kvta. Diskov kvta
nen zaznamenvna v uivatelskm tu, informace o kvt si udruj jednotliv
souborov systmy. Z tohoto dvodu nem smysl hovoit o "uivatelsk kvt",
nbr o "diskov kvt". Uivatelm slou k zobrazovn stavu kvty obslun
program quota. Viz nsledujc pklad.
$ quota
D i s k quo t a s for u s e r novakj ( ui d 1 0 4 5 ) :
F i l e sys t em b l ocks quota l im i t grace f i l e s quot a l im i t grace
/ home / s tudent 4838 20000 40000 619 1000 2000

Prvn dek informuje o uivateli a jeho sle UID. Dle nsleduje informan
dek a na kadm dalm dku jsou daje o kvt pro jednotliv souborov systmy.
Systm Unix obecn neumouje definovat kvty pro men jednotky, ne jsou sou
borov systmy, teba pro adrese. V pedchozm pkladu je uveden pouze jeden
souborov systm pipojen na adres j home j s tudent . Zbyl informace lze roz
dlit do dvou skupin informace o blocch a informace o souborech. V Unixu lze definovat
-

omezen na velikost zabranho prostoru i na poet soubor.


62 Kapitola 3. Souborov systm

K obma druhm omezen jsou v tabulce uvedeny tyi hodnoty. Prvn z nich
je poet vyuitch jednotek - blok nebo soubor. Druh hodnota je kvta - oznauje
ppustn mnostv jednotek. Tet hodnota se nazv limit - oznauje maximln
mnostv jednotek. Uivatel pi sv prci me pekroit kvtu, ale neme pekroit
svj limit . Je-li pekroena kvta, nastav se tvrt daj - lhta na pedem danou dobu,
klasicky 7 dn. Nen-li kvta uvolnna do vypren lhty, uivateli se zablokuje zpis
na disk a je tm nucen smazat nkter soubory. Systm mu po uvolnn kvty opt
zpis povol a lhta je vynulovna. Z pedchozho popisu plyne, e uivatel me
z pracovnch dvod pekroit svoji kvtu, ale ml by si dsledn hldat, -aby toto
pekroen netrvalo dle, ne je povoleno administrtorem systmu.

3.9. Zkladn adresov struktura systmu


Po startu systmu a jeho pechodu do vceuivatelskho reimu je uivatelm
k dispozici jedna struktura adres. Zkladn struktura adres je na vtin Unix
a systm odvozench z Unixu podobn. Podobnost si vyaduj pedevm uiva
telsk programy, jeliko v systmech hledaj soubory na smluvench mstech.
Operan systm Linux m strukturu adres odvozenu od standardn struktury
adres pouvan v Unixu. Jednotliv distribuce se ale mohou v detailech liit.
Nkter z distribuc se dr standard FHS - Filesystem Hierarchy Standard a LSB -
- Linux Standard Base. Standardy definuj zkladn strukturu adres v systmu,
jmna zkladnch konfiguranch soubor a jejich vznam. V nsledujcm pehledu
jsou uvedeny standardn podpdrese koenovho adrese systmu.

l b in Programy potebn pro spn zaveden systmu a zkladn programy pro


prci uivatel v systmu.
Iboot Systmov adres obsahujc obraz jdra operanho systmu a obrazy zava
d jdra - bootloader. V nkterch systmech je na adres Iboot pipojen
samostatn souborov systm velikosti 4-8 MB. Souborov systm rovn
nemus bt na adres Iboot pipojen permanentn. V podstat je nutn
pipojit jej pouze pi zmn jdra systmu.
I dev Adres obsahuje speciln soubory pro blokov a znakov zazen. Speci
ln soubory jsou vytvoeny bhem instalace systmu a bhem ivota sys
tmu zpravidla nejsou mnny. Novj jdra systmu Linux umouj pi
pojit na adres I dev speciln souborov systm DevFS. Souborov systm
DevFS je v souasnch distribucch hojn vyuvn.
Ietc Systmov a aplikan konfiguran soubory. Adres j e dle strukturovn
podle poteby systmovch program a ostatnch aplikac. V adresi se vak
nachz nkolik konfiguranch soubor standardnch jmen a vznam.
I home Domovsk adrese uivatel. Pro domovsk adrese je zpravidla vyhra
zen samostatn souborov systm a je pipojen na adres I home . Velikost
souborovho systmu vyhrazenho pro domovsk adrese je zvisl na
kapacit systmu a jeho clovm nasazen.
3.9. Zkladn adresfov struktura systmu 63

/ 1 ib Sdlen knihovny nutn pro start systmu. Podadres /1 ib/modu l e s obsa


huje moduly jdra. Moduly jdra jsou v podstat jeho speciln sti, kter lze
za bhu nahrvat do pamti. Mezi moduly se typicky ad napklad ovladae
mn pouvanch souborovch systm nebo pdavnch hardwarovch
zazen. Sdlen knihovny jsou speciln knihovny funkc. Kd sdlench
knihoven je v systmu uloen zpravidla pouze jednou - knihovn funkce
jsou sdleny ostatnmi programy. Nzvy sdlench knihoven jsou zpravidla
zakoneny " . s o " .
/mnt Adres pro doasn pipojen souborovch systm. Me obsahovat dal
podadrese, napklad f l oppy, z ip a podobn. Tento adres slou pro
doasn pipojen, nepedpokld se, e by do nj byly souborov systmy
pipojovny nepetrit.
/ op t V adresi / opt bv obvykle instalovn komern software nebo nestan
dardn balky. Kadmu balku je vyhrazen vlastn podadres. Pokud je
adres / opt v systmu ptomen a vyuvn, bv na nj obvykle pipo
jena samostatn diskov oblast o velikosti nkolika gigabajt.
/proc Adres se specilnm souborovm systmem ProcFS, obsahuje soubory s in
formacemi o systmu. Mimo jin napklad soubor /proc / kcore reprezen
tujc obraz pamti potae.
/ root Domovsk adres superuivatele roo t .
/ sb i n Programy potebn pro zaveden a administraci systmu. Tyto programy
jsou pouvny vesms jen superuivatelem roo t .
/ tmp Adres pro doasn soubory, ml by bt vyuvn programy pi startu sys
tmu. V systmu existuje jet adres /var / tmp, jen m obdobn vznam.
V nkterch ppadech je /var / tmp symbolickm odkazem na / tmp, nebo
obrcen.
/ u s r Programy instalovan z distribuce systmu a dal software. Pro instalovan
programy je zpravidla vyhrazen samostatn souborov systm v rozsahu
stovek MB a nkolika GB. Obsah adrese je mnn pouze pi instalaci
softwaru, kterou provd zpravidla pouze superuivatel roo t .
/var Adres s daty, kter se bhem ivota systmu dynamicky mn. Sem pat
napklad soubory s uivatelskou potou, WWW strnky, archivy Network
News, fronta pro tiskrnu a podobn. Data jsou v drtiv vtin uloena na
samostatnm souborovm systmu na vkonnm a bezpenm mdiu.

Dle bude podrobnji rozebrna zkladn struktura adres / e t c, / u s r a /var.


Popis ale nen v dnm ppad vyerpvajc. Zjemce o detailn popis soubor
v systmu a jejich strukturu odkazuji na manulov strnky, sekci 5 .
/ e t c / f s t ab Soubor se zznamy o souborovch systmech pipojitelnch b
hem ivota systmu. V souboru lze definovat zpsob pipojen,
oprvnn pro pipojovn souborovch systm a podobn. Ob
sah souboru / e t c / f s t ab hraje klovou roli pi startu systmu,
konkrtn pi pipojovn souborovch systm.
64 Kapitola 3. Souborov systm

l e t c / group Lokln databze skupin uivatel.


I e t c /hos tname Soubor obsahuje jmno hostitelskho potae.
l e t c / ho s t s Zpravidla obsahuje informace o I P adresch a jmnech okolnch
pota.
l e t c i ini t . d Adres obsahujc systmov inicializan skripty. Skripty jsou
spoutny pi aktivaci a deaktivaci systmovch slueb. Iniciali
zan skripty nejsou z adrese l e t c i ini t . d spoutny pmo,
jejich spoutn je podmnno pechody mezi rovnmi bhu sys
tmu. Viz koment k souborm l e t c / rcn . d.
l e t c / i n i t t ab Konfiguran soubor programu I sb i n / ini t . Zde jsou popsny
zkladn daje pro pechod mezi jednotlivmi rovnmi bhu
systmu.
l e t c / i s sue Data ze souboru jsou zobrazena ped vypsnm pihlaovacho
dialogu. Soubor typicky obsahuje uvtac hlen a zkladn infor
mace o systmu, napklad jmno stanice.
l e t c /motd Zprva dne Message OJ The Day. Obsah souboru je vypsn
-

kadmu uivateli bezprostedn po jeho pihlen do systmu.


Zpravidla obsahuje njak vzkaz tkajc se bhu systmu.
l e t c I mt ab Soubor obsahuje seznam aktuln pipojench souborovch sys
tm. Informace ze souboru vyuv napklad program d f .
l e t c /pas swd Lokln databze uivatelskch t.
l e t c /prof i l e Zkladn skript spoutn pi startu pihlaovacho pkazovho
interpretu. Jeho kolem je nastavit zkladn cesty, promnn a po
dobn.
l e t c / rc n . d Inicializan adrese pro jednotliv rovn bhu systmu neboli
runlevely. Adrese obsahuj symbolick odkazy. Odkazy se odka
zuj zpravidla do adrese l e t c i ini t . d. Runlevel reprezentuje
rove startu systmu. Runlevel je seln hodnota pohybujc se
od O do 6. Runlevel O je oznaovn "halt", runlevel 6 je oznao
vn "reboot" . Tyto dva speciln runlevely slou pro ukonen
bhu systmu. V normlnm stavu se systm nachz ve vceu
ivatelskm reimu v runlevelu 2, ppadn 3. slo implicitnho
runlevelu se me v jednotlivch distribucch liit, jeho hodnotu
lze najt v souboru l e t c / ini t t ab. Soubor l e t c / rc S . d slou
k inicializaci jednouivatelskho reimu a skripty v nm uveden
jsou vykonvny ped pechodem do vceuivatelskho reimu.
l e t c i s e rvi c e s Obsahuje jmna stovch slueb asociovan s jejich TCP a UDP
porty. Informac v souboru l e t c i s e rvi c e s vyuvaj stov ser
very a stov klienti ke stanoven implicitnch port slueb.
l e t c i shadow Soubor se stnovmi hesly. V tomto souboru jsou uloena zakdo
van hesla uivatel v systmu. Soubor nen veejn iteln.
3.9. Zkladni adresov struktura systmu 65

/ e t c / she l l s Soubor s informacemi o "dvryhodnch shellech". Nkter


programy podle tohoto souboru kontroluj validitu uivatelova
shellu.
/ e t c / t e rminfo Adres obsahujc databze vlastnost rznch terminl. Ter
minly reaguj na speciln dc sekvence a podle nich upravuj
svoji innost. elem tto databze je vytvoit abstraktn vrstvu
tak, aby bylo mon komunikovat se vemi terminly jednotnm
zpsobem.
/etc/Xl l Konfiguran soubory pro X Window System, viz kapitolu 8.
/usr/bin Adres s uivatelskmi programy - adres obsahuje vesms
spustiteln soubory nebo odkazy na spustiteln soubory.
/us r / inc lude Hlavikov soubory pro programovac jazyk C.
/ u s r / info Strnky pro hypertextovou npovdu Info.
/ u s r / l ib Sdlen a statick knihovny.
/usr/ local Adres pro lokln instalovan software a programy, kter nejsou
soust distribuce. Adres / u s r / l o c a l obsahuje podobn pod
adrese jako adres / u s r.
/ u s r / man Manulov strnky. Adres / u s r /man je dl dlen na podadre
se / u s r /man/mann podle sekc manulovch strnek. Kad
z podadres / u s r /man/mann obsahuje zpravidla komprimo
van manulov strnky.
/us r / sbin Programy pro sprvu systmu. Pokud nejsou programy nutn
pi startu systmu, mohou bt uloeny fyzicky mimo koenov
souborov systm. Programy jsou pouvny vesms jen superu
ivatelem roo t .
/ u s r / share Datov soubory pro uivatelsk programy. Adres me obsaho
vat obrzky, mapy font a tak dle. V adresi / u s r / sha r e / doc
bv zpravidla umstna programov dokumentace, ukzkov
zdrojov kdy, podmnky licennho ujednn k jednotlivm
programm a podobn.
/us r / X l l R 6 Soubory pro X Window System. Adresov struktura je dle
podobn struktue adrese / u s r, lze zde nalzt podadrese
l ib, share, man a dal.
/var / l ib Soubory mnc se bhem innosti systmu. Na rozdl od adres
/ u s r / 1 ib a / u s r / share se pedpokld, e data ve /var / 1 ib
budou bhem bhu systmu mnna - to jest i mimo instalaci
program. Oddl /var by ml bt vdy pipojen pro ten i zpis.
/var / lock Adres se zmky. Zmek je soubor uren k vyznaen vlunho
vyuvn jistho zazen nebo dalho souboru. Pomoc zmk
se procesy vzjemn informuj o pouvanch zdrojch systmu.
Pouvnm zmk se napklad pedchz soubn modifikaci
soubor, jejich integrita nesm bt poruena.
66 Kapitola 3. Souborov systm

/var / l og loit log. Logy jsou soubory, do kterch aplikace zapisuj


daje o svm bhu. daje z log jsou dle vyuvny k analzm.
Logy lze v zsad rozdlit na systmov a aplikan. Mezi systmov
logy pat napklad informace o poslednm pihlen uivatele,
mezi aplikan logy napklad informace o klientech pipojench
k WWW serveru.
/var/ run Do tohoto adrese se zapisuj informace platn do dalho spu
tn systmu. Sem pat napklad informace o pihlench . ui-
vatelch nebo identifiktory bcch proces.
/var/ spool Adres /var / spoo l obsahuje zpravidla rychle se mnc data,
sem pat potovn pihrdky, fronta pro tiskrny a dal subsys
tmy. Dleit je napklad i potovn fronta, do n se ukldaj
dopisy pro zpracovn potovnm serverem, viz kapitolu 7.4.
Proces je jednotkou vykonvn program a skld se z posloupnosti
znak, kter procesor interpretuje jako strojov instrukce, data a z
sobnk. Jdro dmysln plnuje bh proces, vznik tak dojem, e
procesy jsou zpracovny simultnn. Nkolik proces me bt in
stanc jednoho programu . Kad proces je vykonvn provdnm
posloupnosti svch vlastnch instrukc a neske do kdu jinch pro
ces; proces te a zapisuje pouze sv data a svj zsobnk a neme
st nebo zapisovat data i zsobnk ostatnch proces .
Maurice J. Bach: The Design of The Unix Operating System.

S ystm proces

Souborov systm slou v operanm systmu k organizaci dat. Data sama o sob,
by organizovan, postrdaj smysl, pokud nemohou bt interpretovna nebo modi
fikovna. V operanm systmu Unix slou k modifikaci dat systm proces . I samotn
vytvoen dat musme chpat jako vsledek innosti jistho procesu.
Doposud jsme vechny vahy o procesech vedli neformln, procesy jsme na
zvali lohami. Proces, jak ji z pedchozch kapitol plyne, je aktivn entita systmu.
Vznam procesu si lze nejlpe uvdomit pi srovnn pojm program a proces. Pro
gram je obraz binrnho kdu, kter je uloen na disku. Jedn se tedy o pasivn
entitu. Z tohoto pohledu nen program nic jinho ne jen data uloen na disku -
- obyejn soubor sestvajc z instrukc pro procesor. Je-li program sputn, jdro
zavede jeho obraz do pamti a zane vykonvat v nm obsaen instrukce. Proces
je z tohoto pohledu vykonvan instance programu. Je dobr si uvdomit, e jeden
program me bt vykonvn rzn. To zle na vstupnch datech, s nimi program
pracuje a kter dle zpracovv. Napklad program 1 8 bude fungovat jinak, jsou-li
mu jako argumenty pedny cesty k odlinm adresm. Nehled na odlinosti
pojm program a proces je pod pojmem bc program obvykle mylen bc pro
ces vykonvajc instrukce danho programu. Toto oznaen se pipout z hlediska
zjednoduen nzvoslov a v drtiv vtin ppad nen nikterak zavdjc.
Kad proces je bhem svho ivota charakterizovn svm celkovm stavem -
- kontextem. Uchovvn kontextu procesu je nezbytn pi pepnn bhu jednotli
vch loh. Soubn bh proces v systmu je umonn dmyslnm plnovnm
jejich bhu a periodickm pidlovnm procesorovho asu vem procesm. O pl
novn bhu proces a o pidlovn vpoetnho asu se star speciln st jdra
systmu zvan plnova - scheduler. Naplnovanmu procesu je pidleno asov
kvantum, bhem nho je proces vykonvn. Po vypren asovho kvanta je vyko
nvn procesu poz a staveno a jdro si ulo aktuln kontext procesu. Potom je napl
novn dal proces. Jdro obnov jeho uschovan kontext a po stanovenou dobu je
proces vykonvn. Dle se cel procedura opakuje.
68 Kapitola 4. Systm proces

V souvislosti s procesy bv asto uvdn i pojem vlkno - thread. Obecn lze ci,
e vlkno je jist jednotka vykonvn s men systmovou rei ne proces. Operanmu
systmu trv krat dobu pfepnut kontextu dvou vlken ne dvou proces. V systmu
Linux jsou vlkna i procesy prakticky identick entity, ob vznikaj nzkorovovm
volnm jdra _ c l one ( ) . Z pohledu operanho systmu Linux je vlkno pouze
proces sdlejc zdroje s jinm ji existujcm procesem.

4.1. Vznik proces a j ej ich org anizace


Kad proces bhem svho ivotnho cyklu prochz temi stdii. Nejprve
vznikne, potom je njakou dobu v innosti a poslze zanik. ivotn cyklus pro
cesu je spjat s jdrem systmu. Jdro zasahuje do ivota procesu pi jeho vytvoen
a ukonen. Jdro se rovn star o cyklick pepnn kontextu proces. Tm je
dosaeno efektu soubnho zpracovn. Jdro hraje v ivot proces jet jednu
vznamnou roli - star se o vzjemnou bezpenost proces. Kad proces vlastn
privtn st pamti, do kter ostatn procesy nemohou pmo zasahovat. Jdro na
pklad pi pokusu o ten ze "zakzan oblasti" okamit ukon innost procesu,
jen zpsobil poruchu ochrany pamti. V programtorskm argonu se tato situace
oznauje pojmem porucha segmentace.
Jeliko je Unix vcelohov systm, je nutn od sebe jednotliv procesy jedno
znan rozliit. Jdro si o bcch procesech udruje pehled, kad proces je jed
noznan identifikovn pomoc sla PID - Process ldentification. Procesy v systmu
Unix tvo hierarchickou strukturu. Kad proces vyjma prvnho m svho rodie -
- rodiovsk proces. Vechny procesy v rmci stromu proces maj navzjem rzn
sla PID. Strom proces me teoreticky rst dle libosti, v systmu ale zpravidla
existuj omezen na maximln poet soubn zpracovvanch proces.

Vznik procesu
Zpsob vytven proces je v systmu Unix odlin od ostatnch operanch
systm. Proces je vdy vytven jinm procesem, ten se stv jeho rodiem. Systm
Unix poskytuje voln jdra f ork ( ) , vytvejc nov duplicitn proces. Duplicitn
proces se od svho rodie li pouze ve svm PID. Voln f ork ( ) ped obma
programm rzn nvratov hodnoty. Rodii je vrcen PID jeho syna, to jest PID
nov vytvoenho procesu. Synovskmu procesu je pedna nula. Volnm f ork ( )
pvodn program "vstoup do jdra", je vytvoena jeho duplikace, nsleduje nvrat
z reimu jdra a oba procesy pokrauj bezprostedn za volnm fork ( ) , ovem
kad s jinou nvratovou hodnotou. Jin nvratov hodnoty umouj dal vtven
proces. Synovsk proces me napklad pout voln jdra exe cve ( ) k nahrazen
svho obrazu obrazem jinho programu, zatmco rodi bude teba ekat na jeho
dokonen a pot opt pevezme zen.
Problematiku demonstrujme pkladem. Interpret pkaz bash b jako jeden
proces. Pedpokldejme, e uivatel v shellu zad pkaz pro sputn programu l s .
Nyn mus bash provst samotn "sputn programu". Proces bash nejprve zavol
4.2. Ze ivota procesu 69

f ork ( ) . Dojde k duplikaci procesu. V tto fzi existuje pvodn proces bash i jeho
syn. Synovsk proces je v tuto chvli identick se svm rodiem, pouze s jin slem
PID. Pomoc voln exe cve ( ) synovsk proces nahrad svj obraz obrazem pro
gramu l s, kter se zane vykonvat. Program bash ek na ukonen synovskho
procesu, po jeho ukonen opt pebr zen. Tuto skutenost dv uivateli najevo
zobrazenm promptu. Zkladn ti fze vytvoen synovskho procesu 1 s pibliuje
nsledujc schma.

duplikace procesu nhrada obrazu vsledn stav


bash eS fork ( ) bash Cf bash 9
bash 6 execve ( ) ls 6
Pozorn tene mon napadlo, e duplikace procesu me bt asov nron.
Systm Unix ale asto vyuv mechanismu "write-on-copy". Pi duplikaci procesu
nedojde ke zkoprovn celho segmentu pamti, k fyzick kopii pamti dojde teprve
a v nezbytn nutnm okamiku. V praxi to znamen, e synovsk proces operuje
s pamt rodie, a pokud do n rodi ani syn nezapisuj, nedojde k jejmu fyzic
kmu zkoprovn. Pomoc write-on-copy se vrazn sniuje reie spojen se vznikem
procesu. Napklad v Linuxu jsou informace o procesech ukldny ve snadno modi
fikovateln struktue - AVL stromu. Vytvoen novho procesu s sebou nese pouze
piazen novho PID a vytvoen uzlu v AVL stromu.

4.2. Ze ivota procesu


Bhem prce v systmu se lze setkat se temi druhy proces.
Uivatelsk procesy - userspace processes jsou spoutny jednotlivmi uivateli,
zpravidla pomoc interpretu pkaz. Obrazem procesu je obvykle program
uloen na nkterm souborovm systmu. Pokud m program nastaven SUID
Bit, vlastnkem procesu se stv vlastnk tohoto programu. V opanm ppad
je vlastnkem procesu uivatel, kter jej spustil. Vlastnkovi procesu se jinmi
slovy k efektivn uivatel.
Systmov procesy - daemons jsou spoutny bhem startu systmu a zajituj
rzn sluby. Systmov proces b zpravidla v nekonen smyce a pln vy
mezen koly. Typickou innost systmovho procesu je napklad periodick
obsluha klient. Systmov procesy jsou zpravidla odpojen od terminl.
Vlastnkem systmovho procesu je buto superuivatel root, nebo nkter
ze systmovch uivatelu, viz kapitolu 2 . 1 . Systmov proces se nkdy nazv
daemon .

Vlkna jdra - kernel threads jsou v podstat speciln sti jdra operanho sys
tmu bc jako speciln procesy. Napklad vlkno kmod se star o zavdn
vyadovanch modul jdra do pamti.
70 Kapitola 4. Systm proces

Dlka ivota uivatelskch proces je ve srovnn s dlkou ivota systmu nepo


mrn krat. Nkter uivatelsk procesy komunikuj s uivatelem. Naproti tomu
komunikace systmovch proces je omezena vesms jen na zapisovn zznam
do systmovch log. Po startu jdra operanho systmu a po pipojen koenov
oblasti je sputn prvn proces, program / sbin/ ini t . Program / sb in/ ini t inici
alizuje dal komponenty operanho systmu. Komponenty jsou sputny jako jeho
synovsk procesy. Program / sbin/ ini t se rovn star napklad o pechod mezi
rovnmi sputn systmu vetn jednouivatelskho a vceuivatelskho reimu.
Pi pechodu do vceuivatelskho reimu / sbin/ ini t vykonv startovac skripty
spoutjc nezbytn systmov procesy. Mezi n obvykle pat daemony obstarvajc
lokln a vzdlen pihlaovn do systmu.

Stavy procesu
Bhem svho ivota me proces prochzet rznmi stavy. Stavy procesu sten
souvisej s plnovaem urujcm poad pepnn kontextu jednotlivch proces.
Jednotliv procesy se mohou nachzet aktivn v pamti nebo ekat v odkldacm
prostoru. Proces me bet buto v uivatelskm reimu, nebo v reimu jdra. Do
reimu jdra se proces me dostat pomoc volnjdra. Voln jdra si lze z program
torskho hlediska pedstavit stejn jako voln funkce. Vstoupen procesu do reimu
jdra je zcela dobrovoln. Zpt do uivatelskho reimu jej vak me pepnout jen
jdro. Proces me bt v reimu jdra ukonen, pokud napklad dojde k pstupu do
nepovolen pamtov oblasti. Bh procesu me bt rovn pozastaven. Tato situace
nastv napklad v ppad, kdy proces ek na dokonen uivatelskho vstupu.
Nsledujc obrzek schematicky zachycuje zkladn stavy procesu.
'"

vstupn/vstupn oo oo o pozastaven
,

oo o 0 0 0 0 0 0 0 0 p rocesu
,

operace o o o o o
,,
,, "
, ..
.. ..
..
..
00 ..
00
0
,

dokonen rozbhnuti000000000 0'"0 " ,


.. .. .. ..
.. .. ... ... ... ..
.. .. ..
.. ..
" .. ..
/"
.. ..
/
0
.. ..
..

G5'ooo:oo:.pozastaven
toooo o ooo opooooo
rocesu oooo ooooo' ' __

Procesy v systmu Unix mohou ve skutenosti prochzet vce stavy, obvykle jich
bv kolem devti. Uivatel systmu by vak mli bt dvrn seznmeni alespo
s ve uvedenm zjednoduenm schmatem stavu proces. Z uivatelskho po
hledu je vznamn pozastaven bhu procesu a v nsledujcm textu je mu vnovna
patin pozornost.

Informace o procesech v systmu


Seznam proces v systmu lze zskat programem p s . Program ps m mnoho
argument. Pouijeme-li jej bez argumentu, ps vype seznam aktivnch proces
spojench s aktuln pouvanm terminlem. Ve vpisu nebudou zobrazeny pro
cesy sputn z jinch terminl. Viz pklad.
4.2. Ze ivota procesu 71

$ ps
P I D TTY TIME CMD
1 4 6 1 1 pt s / O 0 0 : 0 0 : 0 0 bash
1 5 6 9 4 pt s / O 0 0 : 0 0 : 0 0 ps

Pedchoz vpis nen nijak pekvapujc. Prvnm z proces je aktivn interpret


pkaz, druh proces je samotn program p s . Prvn sloupec oznauje PID proces.
Druh sloupec reprezentuje aktuln terminl. Tet sloupec reprezentuje celkov as
bhu procesu. V pedchozm ppadu jsou asy proces nulov, protoe ps probhne
okamit a bash trv vtinu ivota eknm na uivatelsk vstup. Podrobnj
informace o dob ivota procesu lze zjistit napklad pomoc pkazu t ime. Posledn
sloupec je shellovsk pkaz, kter zpsobil vytvoen procesu.
Vpis proces lze dle upravovat. Na jedn stran lze specifikovat mnoinu vypi
sovanch proces. Na stran druh lze specifikovat druh zobrazovanch informac.
Mnoinu zobrazovanch proces lze vymezit pomoc nsledujcch pepna. Pep
na - a zobraz informace o vech aktivnch procesech zench njakm terminlem.
Nadto pepna e zobraz informace o pln vech procesech, to jest i o procesech
-

bez napojen na terminl. Procesy bc pod efektivnm uivatelem lze zobrazit pomoc
pepnae - u <Jjmno r>, kde <Jjmno r> je uivatelsk jmno. Viz ukzku.
$ ps - a
P I D TTY TI ME CMD
1 2 9 2 5 pt S / 4 00 : 00 : 00 ssh
1 6 6 2 4 pt s / 1 00 : 00 : 00 bash
1 6 6 2 9 pt s / 1 00 : 00 : 00 mut t
16760 pts/2 00 : 00 : 00 talk
1 6 7 6 4 pt s / 6 00 : 00 : 00 talk
1 7 6 1 6 pt s / O 00 : 00 : 00 ps
$ ps - u novakj
P I D TTY TI ME CMD
14 6 1 1 pt s / O 00 : 00 : 00 bash
14 7 3 1 pt s / 6 00 : 00 : 00 bash
16764 pt s / 6 00 : 00 : 00 talk
17617 pt s / O 00 : 00 : 00 ps

Z druhho vpisu je vidt, e uivatel novakj pracuje se dvma terminly, p t s / O


a pt s / 6 . Na kadm z nich m sputn interpret pkaz. V ppad prvnho vpisu
nejsou interprety uvedeny v seznamu. Je to tm, e mezi procesy existuj speciln -
- vedouc skupin, kte se do vpisu s parametrem - a nevypisuj. Vznam vedoucch
skupin bude vysvtlen dle. Seznam vech proces na terminlech lze zskat pomoc
argumentu a (bez pomlky).
Programu p s lze zadat i formt vypisovn informac o procesech. Uivatel m
na vbr mezi zkladnmi formty licmi se v ce informace. Krom toho si me
uivatel definovat vlastn formt dle libosti. Mezi zkladn formty pat dlouh vpis
- zapn se pomoc - 1 . Podmnoinu dlouhho vpisu je mon zobrazit pomoc
pepnae - f .
$ ps - a -f
UID PID PPID C STIME TTY T IME CMD
72 Kapitola 4. Systm proces

drima l kp 1 2 9 2 5 12311 o 13 : 18 ptS/4 00 : 00 : 00 s s h pocal


hropkop 1 6 7 6 0 16747 o 15 : 56 pts/2 00 : 00 : 00 t a l k novakj
novakj 16764 14731 o 15 : 56 pt s / 6 00 : 00 : 00 t a l k hropkop
novakj 19081 17762 o 17 : 10 pt s / 3 00 : 00 : 00 ps -a - f
$ ps - a - 1
F S VID PIO PPID C PRI SZ WCHAN TTY T I ME CMO
000 S 903 12925 12311 O 69 608 13e25e pt S / 4 00 : 00 : 00 s sh
000 S 1382 16760 16747 O 69 400 13e25e pt s / 2 00 : 00 : 00 talk
000 S 1045 16764 14731 O 69 400 13e25e pt s / 6 00 : 00 : 00 talk
000 R 1045 19080 17762 O 79 616 - pt s / 3 00 : 00 : 00 ps
V prvnm vpisu uivatel nalezne krom ji uvedench daj sloupec STlME -
- systmov as vzniku procesu. Za dajem PID je uveden PPID - Parent Process
ldentification, to jest PID rodiovskho procesu. daj C reprezentuje procentuln
vyten procesoru. Dlouh vpis navc zobrazuje ve sloupci F masku procesu a ve
sloupci S stav procesu. Zobrazovan stavy mohou nabvat hodnot S - spc proces,
R - bc proces a T - pozastaven proces. Dle jsou zobrazeny informace o potu
blok zabranch obrazem programu - SZo Sloupec WCHAN obsahuje informace
o akci, na kterou proces ek. U bcho procesu je tato poloka przdn. Je-li
proces ve stavu spnku, pole je vyplnno hodnotou akce. Formt zpisu akce je
pro laika bohuel ponkud neiteln. Nsledujc pklad ukazuje monost volby
zobrazovanch sloupc.
$ ps -u novakj -o pid , ppid , s , cmd
PID PPID S CMO
14501 14500 S - bash
14702 14 7 0 1S - bash
14710 14702 S t a l k j e z ekm
14812 14 5 0 1R ps - u novakj - o p i d , pp i d , s , cmd
Za argument - o lze pst seznam sloupc oddlench rkami. Seznam nesm ob
sahovat mezery. Nzvy jednotlivch sloupc lze najt v manulov strnce programu
p s . Dalm programem zobrazujcm procesy je t op, viz obrzek.
7 : 57.,.. up 38 c:Iays . 2 : Q6 . 8 user5 . load average : 3 . 1Q. 1 . 73 . Q . 68
75 processes : 74 s l eep i ng . 1 .,...., i ng . Q zOIOb i e. Q mopped
O'IJQ mates : 6Q . f.J% user . 4 . 41( systeft. Q . f.J% n i ce . 34 . 41( idle
CP\J 1mates : 7Q . f.J% user . 3 . f.J% syst eft . Q . f.J% n i ce . 27 . f.J% idle
CP\J2 mates : 67 . f.J% user . 1 . 41( systeft. Q . f.J% n i ce . 31 . 11( idle
CP\J3 mates : 64 . 21( user . 5 . 41( systeft. Q . f.J% n i ce . 29 . 21( idle
11eft : 2Q6412 IN . 1 475Q68K ..sed . 589Q56K .free . QK sh-d . 1 2336QK buH
Swap : 409652 IN . QK ..sed. 40965241( .free 1 2 1 1 5441( cached

La." !}",,,.
7Q6 root
@MI'.'fi-3'i-WI,t4#!4iMWIOOI!M;t!!;-.UtC!,lWMt
15 Q 1 46 4 1 46 4 1 332 S 1 .3 Q.Q Q : Q3 sshd
1 2357 vychod i v 15 Q 6Q8 6Q8 472 S Q.9 Q.Q Q : QQ i nd
9 1 87 vychod i v 15 Q 1 1 Q4 1 1 Q4 844 R Q.3 Q.Q Q : QQ top
9 1 9Q pes 15 Q 2232 2232 1 1 64 S Q.3 Q.1 Q : QQ screen
1 2355 pes 15 Q 1 Q9 6 1 Q9 6 848 S Q.3 Q.Q Q : QQ t op
171 root 15 Q Q Q Q Slol Q.1 Q.Q Q : Q4 kj ourna l d
1 73 root 15 Q Q Q Q Slol Q.1 Q.Q Q : Q2 kj ourna l
1 74 root 15 Q Q Q Q Slol Q.1 Q.Q Q : Q7 kj ourna l
1 Q338 nobody 15 Q 7Q4 7Q4 6QQ S Q.1 Q.Q Q : 46 upsd
1 root 15 Q 476 476 424 S Q.Q Q.Q Q : 16 init
2 root QK Q Q Q Q Slol Q.Q Q.Q Q : QQ r1 i grat on_CPUQ
3 root QK Q Q Q Q Slol Q.Q Q.Q Q : QQ ro i grat on_CPU1
4 root QK Q Q Q Q Slol Q.Q Q.Q Q : QQ ro i grat on_CPU2
5 root QK Q Q Q Q Slol Q.Q Q.Q Q : QQ r1 i grat on_CPU3
4.2. Ze ivota procesu 73

Program t op je interaktivn. Po svm sputn t op b, dokud nen zastaven


uivatelem. Program t op pracuje v celoobrazovkovm reimu a periodicky zobra
zuje informace o bcch procesech. Bh programu lze ukonit klvesou q, po stisku
h je zobrazena npovda programu t op. Vpis bcch proces lze tdit podle spo
tfeby pamti, vyten procesoru, stP procesu a podobn. Na nsledujcm obrzku je
zobrazen program t op bhem sv innosti.

Bh proces na pozad
V pedchzejcch kapitolch byly pouvny programy pro manipulaci se sou
bory. Sputnm kadho programu vdy vznikl proces, kter probhl a skonil.
Vechny pedchoz pklady mly jeden spolen rys, vechny procesy bely na
popfed -foreground. To znamen, e v dob bhu procesu uivatel nemohl pouvat
shell. Pkazov interpret coby rodiovsk proces ekal na dokonen synovskho
procesu - sputnho programu. Jeliko je systm Unix vcelohov, vznik pi
rozen uivatelsk poadavek spoutt nkter procesy na pozad - background. Od
procesu bcho na pozad se oekv, e nebude omezovat uivatele v prci v shellu.
Dalm plynoucm poadavkem je samostatnost procesu bcho na pozad. Proces b
c na pozad by v dnm ppad neml bt interaktivn. Komunikace procesu s jeho
okolm by mla bt orientovna napklad na prci se soubory, v dnm ppad by
proces na pozad neml vypisovat hlen na terminl. To by bylo siln ruiv. Proces
na pozad rovn neme ekat na uivatelsk vstup, protoe by okamit peel ze
stavu bc do stavu pozastaven.
Operan systm Unix disponuje mechanismy pro pesmrovn vstupu a v
stupu proces do souboru. Tyto mechanismy budou rozebrny v dal kapitole, nyn
budeme pro jednoduchost pedpokldat, e vechny procesy bc na pozad budou
"pln tich". Pkladem pln tichho procesu je komprese. Standardn kompresn
program gz ip pracuje naprosto tie, bhem komprese a dekomprese neukazuje zhola
nic, proto se vborn hod jako proces sputn na pozad. Pokud by uivatel chtl
spustit na pozad proces vypisujc vstup na terminl, mus vstup programu pat
in pfesmrovat. Pro detaily viz kapitolu 5.2.
Pedpokldejme, e uivatel novakj chce spustit program - / da t a / archivuj
archivujc velk mnostv dat. Z dvodu pedpokldanho dlouhho bhu by bylo
rozumn spustit proces na pozad. Proces lze spustit na pozad uvedenm metaznaku7
ampersand ,, & " na konci pkazu sputn. Viz pklad.

$ - / data/ archivuj &


[1] 15635

Bezprostedn pro sputn procesu na pozad shell uivateli zobraz informan


dek. Jsou na nm napsna dv sla. Prvn slo, uveden v hranatch zvorkch,
7 Metaznak je symbol, kter m v shellu speciln vznam. Metaznaky interpretuje shell a nepedv

je spoutnmu programu jako argument. Ani to bylo explicitn zdrazovno, doposud jedinm uva
ovanm metaznakem byl metaznak mezery slouc v pkazu sputn k oddlen nzvu programu od
pedvanch argument.
74 Kapitola 4. Systm proces

je identifiktor procesu v rmci aktulnho shellu. Druh slo je PID procesu. V rmci
kadho shellu jsou procesy slovny od jedn. Na proces sputn v shellu se lze pi
dal prci odkazovat obma sly. Na proces sputn z jinho shellu se lze z pocho
pitelnch dvod odkazovat pouze pomoc PID. Jinmi slovy, informace o slech
PID si uchovv samotn jdro systmu, sla v rmci shellu jsou uchovvna ka
dm shellem zvlt spn dokonen innosti programu archivuj je oznmeno
uivateli nsledujcm hlenm.
[1] + Done - / da t a / archivuj

V ppad, e je proces ukonen volnm jdra exi t ( ) , hlen bude mt tvar


[1] + Exi t 1 0 - / da t a / archivuj

kde slo za slovem "Exit", v tomto ppad 10, vyjaduje nvratovou hodnotu
programu. Kad program v Unixu po svm ukonen navrac hodnotu. Standardn
hodnota je O a znamen spn konec bhu. Ostatn hodnoty oznauj chyby nebo
vjimen situace. Jednotliv hodnoty chybovch stav lze nalzt v manulovch
strnkch pslunch program.

Pesun na pozad a na poped


Pi prci v systmu se asto stv, e uivatel spust proces, kter b nad oe
kvn dlouhou dobu. V takovm ppad je vhodn pesunout proces na pozad.
Uivatel mus vyeit problm, jak pfesunout na pozad proces, jen byl pvodn spu
tn na poped. To je trochu jin problm ne pm sputn procesu na pozad
"
pomoc pkazu ukonenho metaznakem & ,, .

Pedpokldejme, e uivatel novakj spustil program archivuj na poped


a dlka jeho innosti zaala bt nenosn. Uivatel se rozhodne pesunout proces na
pozad. Shell umouje pomoc C - z pozastavit chod programu. Viz pklad.
$ - /data/archivuj
I CTRL-Z I
[1] + S t opped - / da t a / archivuj
$ ps - u novakj -o pid , s , cmd
PID S CMD
14501 S - bash
17182 T - / da t a / a rchivuj
1 7 1 9 4 R ps -u novakj -o p i d , s , cmd

Hlen "Stopped" oznamuje pozastaven procesu. To potvrzuje i stav procesu ve


vpisu. Pokud se proces nalz ve stavu T, jedn se o pozastaven proces. Pozastaven
proces nen zaazovn plnovaem mezi vykonvan procesy. Uivatel mus dt
procesu pokyn, aby peel do stavu R. Je nutn uvdomit si, e pozastaven proces
nen ekvivalentn procesu bcmu na pozad. Proces ve stavu T skuten "stoj",
plnova jej nezaazuje do fronty proces ekajcch na pidlen procesorovho asu,
tm pdem procesor nevykonv jeho instrukce. K pesunu pozastavenho procesu
na pozad slou pkaz bg. Jedn se o pkaz vestavn pmo v shellu. Argumentem
pro pkaz bg je identifiktor procesu v rmci shellu.
4.2. Ze ivota procesu 75

$ - /data/archivuj
I CTRL-Z I
[1] + S t opped - / da t a / archivuj
$ bg 1
[ 1 ] + . / da t a / archivuj &

Pi pozastaven procesu uivatel obdrel identifiktor, v tomto ppad je to slo 1 .


Nsledn byl pouit pkaz b g 1 a hlen dv najevo, e proces byl pesunut na
pozad. To lze ovit i vpisem proces.

$ ps -u novakj -o pid , s , cmd


P I D S CMD
1 4 5 0 1 S - bash
1 7 1 8 2 R - / da t a / archivuj
1 8 0 7 4 R ps - u novakj -o p i d , s , cmd

Nyn je proces oznaen symbolem R - running. To je ji v podku. Pkazem bg lze


manipulovat pouze s procesy v rmci jednoho shellu, to je dno i jeho argumentem.
Pkazu bg nelze pedat jako argument PID. Nen-li pro bg uveden argument, bere se
posledn pouit identifiktor procesu v rmci aktivnho shellu. K pkazu bg existuje
i protjek - pkaz fg. Pkaz fg slou k pesunu procesu na poped. Pesunout na
poped lze jednak proces bc na pozad, ale i proces pozastaven.
Mezi typick pouit pkazu fg pat obnoven chodu procesu, kter byl uivate
lem pozastaven z dvodu dal prce. Uvaujme situaci, kdy si uivatel novakj te
potu pomoc interaktivnho programu mut t 8 . Uprosted psan dopisu si potebuje
prohldnout informace uloen v njakm souboru. Nabz se troj een. V prvn
ad me uloit rozepsan dopis, ukonit potovnho klienta, podvat se na hle
dan soubor, znovu spustit klienta a nast rozepsan dopis. Druh een je pout
jin terminl, v nkterch situacch to ale nen mon. Tetm eenm je pozastavit
aktuln proces, najt hledan soubor a optovn se vrtit k pozastavenmu procesu.
Viz pklad.

$ mut t
. . . uivatel pracuje s programem
I CTRL-Z I
[2] + S t opped mut t
$ c a t - / todo
mus i m napsat S t anikovi , z e gumi cky uz dos l y
a t aky mu r i c t o zvys eni o s obniho ohodnoceni ( de centne )
$ fg
. . . uivatel pokrauje v psan dopisu . . .

Krom klvesov zkratky c z bv asto pouvna i zkratka C c . Tato klvesov


- -

zkratka u vtiny program zpsob okamit peruen jejich bhu. Princip pozasta
ven nebo ukonen bhu procesu je jednoduch. Shell danm procesm zale signl,
na kter proces reaguje. Meziprocesov komunikace pomoc signl je rozebrna
v kapitole 4.3.
B Mutt pat mezi nejoblbenj potovn klienty, v i z kapitolu 7.4.
76 Kapitola 4. Systm proces

Zmna priority proces


K dalm problmm sprvy proces pat zmny priority procesu. Priorita proces
uruje, jak asto jim bude plnova pidlovat procesorov as. Priorita se v systmu
Unix zna seln. m vy slo, tm men m proces prioritu. Zmnu priority
me provdt superuivatel root, ale i bn uivatel. Superuivatel root me
manipulovat s prioritou procesu zcela libovoln. Bn uivatel me pouze sniovat
prioritu vlastnch proces.
Pro manipulaci s prioritou procesu jsou v Unixu k dispozici programy ni c e
a ren i c e . Programem n i c e j e mon spustit proces s pozmnnou prioritou. Po
moc programu ren i c e lze zmnit prioritu ji bcmu procesu. Syntaxe voln
program je

ni ce - n <lpriorita r> <lpkaz r>


ren i c e <lpriorita r> - p <l PID r>

Argument <lpriorita r> me nabvat celoselnch hodnot z intervalu -20, , 19 . . .

a pedstavuje znevhodnn procesu. Jinmi slovy eeno, pokud je hodnota <lpriorita r>
kladn, priorita procesu bude adekvtn snena. V ppad zporn hodnoty bude
zvena. Zpornou hodnotu me pouvat jen superuivatel roo t . Pouit pro
gram demonstruje pklad.

$ nice - n - 1 0 - /data/ archivuj &


[1] 24565
$ n i c e : cannot s e t p r i o r i t y : Permi s s ion denied
[1] + Exi t 1 n i c e - n - 1 0 - / da t a / archivuj
$ nice -n 10 - /data/archivuj &
[1] 24566
$ renic e 2 0 - p 2 4 5 6 6
2 4 5 6 6 : o l d p r i o r i t y 1 0 , new p r i o r i ty 2 0

V prvnm ppad se uivatel pokusil spustit proces s neppustn zvenou


prioritou, na to systm zareagoval chybovm hlenm a proces byl ukonen s hod
notou 1. Uivatel dle spustil proces se zmnou priority 10 a programem reni c e
poslze nastavil zmnu priority n a 20.

4.3. Ukonen ivota procesu


Vazba synovskho procesu na jeho rodie je v operanm systmu Unix velmi
tsn. S ukonenm rodiovskho procesu jsou ukoneny i vechny jeho dti. Tato
vazba je ve vtin ppad vhodn - pi ukonen rodiovskho procesu jsou auto
maticky ukoneny i vechny procesy nachzejc se v hierarchii ne. Pi manipulaci
s procesy je nutn dbt velk opatrnosti. Pokud se sprvci systmu nedopatenm po
da ukonit proces / sbin/ ini t bhem vceuivatelskho reimu, uivatel z toho
nebudou plesat nadenm. Samotn znik procesu je doprovzen nkolika jevy.
4.3. Ukonen ivota procesu 77

Signly
Ped popisem ukonen bhu procesu je poteba zastavit se u pojmu signl. Signl
je mechanismus jdra, s jeho pomoc se mohou procesy vzjemn informovat o rz
nch udlostech. Signl je jednoznan uren svm slem. V souasnosti specifikace
systmu SVR4 definuje zkladnch 28 signl. Na pchod signlu mohou procesy
reagovat rznmi zpsoby. Prvn monost je pfenechat signl k vyfzen jdru systmu.
Ze strany jdra to ve vtin ppad znamen okamit ukonen bhu procesu.
Dal monost je signl ignorovat. Tet monost je zachytit signl a reagovat na nj
njakou akc. Napklad systmov procesy reaguj na smluven signl, po kterm
provedou optovn naten svch konfiguranch soubor - tm lze mnit chovn
daemon bez nutnosti jejich restartu. Vechny signly ale zachytit nelze.
Jednotliv signly maj krom sel i sv mnemonick zkratky. Nsledujc tabulka
obsahuje nejastji se vyskytujc signly. Pro pln popis viz manulovou strnku
k heslu " s i gna l " . V sedm sekci manulovch strnek je uveden soupis vech
signl.

signl slo vznam


SIGHUP 1 odpojen terminlu
SIGINT 2 peruen z klvesnice
SIGQUlT 3 konec s uloenm obrazu pamti
SIGILL 4 pouita instrukce neznm pro procesor
SIGTRAP 5 ladic peruen
SIGABRT 6 ukonen z dvodu vstupn/vstupn operace
SIGFPE 8 chyba aritmetiky s pohyblivou desetinnou rkou
SIGKILL 9 okamit ukonen procesu
SIGSEGV 11 selhn segmentace
SIGPIPE 13 pokus o zpis do roury, kterou nikdo nete
SIGALRM 14 vypren asovho intervalu
SIGTERM 15 ukonen
SIGUSR1 16 uivatelsk signl 1
SIGUSR2 17 uivatelsk signl 2
SIGCHLD 18 zmna stavu synovskho procesu
SIGSTOP 23 pozastaven procesu
SIGCONT 24 pokraovn v innosti

V ppad, e je signl penechn na vyzen jdru, dochz zpravidla k ukonen


bhu procesu. U nkterch signl navc jdro ulo obsah pamti pouvan proce
sem na disk, v pracovnm adresi procesu je vytvoen soubor c a r e . Obsah souboru
c a r e lze st specilnmi programy debuggery. Zkuen programtor je schopen po
-

moc znalosti obsahu pamti provst backtrace zptn prohledn volanch funkc
-

a najt chybu v programu, je zpsobila ukonen programu. Vpis pamti na disk je


provdn pouze u signl vyvolanch po nekorektnm chovn programu, teba z
pisu do nepstupn sti pamti. Napklad pi ukonen bhu programu v dsledku
poruchy segmentace se uivatel me setkat s podobnm hlenm.
78 Kapitola 4 . Systm proces

$ - / data/ archivuj &


[1] 25734
$
[1] + S egment at ion f au l t ( core dumpedl - / da t a / a rchivuj

V takovm ppad je dobr soubor care smazat, pokud se ovem uivatel nechce
sm zabvat ladnm programu. Soubory care bvaj dost velk, jejich vytven lze
potlait pomoc uivatelskch limit, viz kapitolu 5.7. Krom zasln signl disponuje
systm Unix jet dalmi mechanismy meziprocesov komunikace, jedn se zejmna
o roury, sockety, sdlenou pam a zasln zprv. Nkter z nich jsou hojn vyuvny
i na uivatelsk rovni a jsou popsny v dalch kapitolch.
Pi ukonen svho bhu proces navrac celoselnou hodnotu. Rodiovsk proces
me ekat na dokonen synovskho procesu a pot pebere jeho nvratovou hod
notu. K tomu v systmu slou voln jdra wa i t ( ) . Pi pouit voln jdra wa i t ( )
je proces pozastaven a jdro jej znovu rozebhne a po dokonen nkterho ze sy
novskch proces. Je-li synovsk proces ukonen, avak rodiovsk proces dosud
nepevzal informace o jeho skonen pomoc wa i t ( ) , jdro si informace o synov
skm procesu neustle udruje. Ji nebc synovsk proces, o kterm si jdro stle
udruje informaci, se nazv mtoha - zambie. Jeliko je pevzet informac o ukon
enm procesu dleit, jdro informuje rodie o dokonen synovskho procesu
signlem SIGCHLD. Princip ukonen ivota procesu je zobrazen na nsledujcm
obrzku.
ukonen innosti upozornn od jdra pfevzetf informaci vsledn stav
bash Cf bash SIGCH LD bash 9 wa i t ( l bash ci
ls e) e x i t ( ) ps e \ Ps e)

Zasln signl
Uivatel mohou procesm zaslat signly pomoc program k i l l a ki l l a l l .
Jejich nzev koresponduje s faktem, e reakc procesu na signl j e vtinou jeho ukon
en. I kdy tomu tak bt nemus. Bn uivatel me zaslat signly pouze vlastnm
procesm, superuivatel raat me zaslat signly libovolnm procesm. Procesy
mohou signly ignorovat, a na dv vjimky. Signly SIGKILL a SIGSTOP jsou ne
maskovateln a nezachytiteln. Zale-li uivatel svmu procesu signl SIGKILL, pro
ces bude okamit ukonen. Pomoc signlu SIGSTOP me bt proces pozastaven.
Sputn programu ki I I m syntaxi
ki I I - <Jsignl r> <Jprocesy r>
kde <Jsignl r> je slo nebo mnemonick zkratka signlu. Je-li argument <Jsignl r> uve
den, mus bt ped nm uvedena pomlka. Argument <Jprocesy r> pedstavuje seznam
oddlen mezerami. Prvky seznamu mohou bt buto PID jednotlivch proces
nebo sla tvaru % <J idr>, kde <J id r> je identifiktor v rmci aktulnho shellu. Pouit
programu demonstruje pklad.
4.3. Ukonen ivota procesu 79

$ - / data/ archivuj &


[ 1 ] 2 92 2 9
$ ki 1 1 - S I GKILL 29229
[1] + Ki l l ed - / da t a / a rchivuj

Pkazy ki l l - 9 2 9 2 2 9, ki l l - 9 % 1 nebo k i l l S I GKILL % 1 . lze dosh


-

nout naprosto stejnho efektu. V ppad, e nen signl uveden, bude procesm
zasln implicitn signl SIGTERM. Ten je na rozdl od signlu SIGKILL zachytiteln
a program na nj me zareagovat napklad tm, e ulo rozpracovan data na disk
a a pot se sm ukon. Na tomto principu je rovn zaloeno ukonovn bhu sys
tmu shutdown . Pi ukonovn bhu systmu proces / sbin/ ini t nejprve zale
-

uivatelskm procesm signl SIGTERM. Pot vyk nkolik sekund a procesm,


kter se doposud samy neukonily, zale signl SIGKILL.
Program k i l l a l l rovn zasl signly, ale procesy nejsou identifikovny
svm PID, nbr svm jmnem. To m sv vhody i nevhody. Neopatrn pou
it me vst k nechtnmu ukonen vce proces se stejnm jmnem. Na druhou
stranu tento program poskytuje vy uivatelsk komfort. Nsledujc pklad uka
zuje pouit programu ki l l a l l .

$ - / data/ archivuj &


[ 1 ] 2 9 8 14
$ ki 1 1 a 1 1 archivuj
[1] + Terminat ed - / da t a / archivuj

Pomoc signl SIGSTOP a SIGCONT je mon pozastavovat procesy a pesou


vat je na pozad podobn jako pomoc klvesov zkratky c z a pkazu bg. Pedpo
-

kldejme, e uivatel novakj spustil proces, jeho PID m hodnotu 30265. Potom
pomoc pkaz

$ ki 1 1 - S IGSTOP 3 0 2 6 5
$ p s - u novakj - o pid , s , cmd
P I D S CMD
3 0 1 0 5 S - bash
3 0 2 6 5 T - / da t a / archivuj
3 0 2 6 7 R ps - u novakj -o p i d , s , cmd
$ ki 1 1 - S IGCONT 3 0 2 6 5
$ p s - u novakj - o pid , s , cmd
P I D S CMD
3 0 1 0 5 S - bash
3 0 2 6 5 R - / da t a / archivuj
3 0 2 6 8 R p s - u novakj -o p i d , s , cmd

jej nejprve pozastav a poslze provede jeho pfesunuti na pozad. Hlavn vhodou
pouit signl SIGSTOP a SIGCONT je jejich nezvislost na konkrtnm shellu.
Pkaz shellu bg bere jako argument slo procesu v rmci shellu, jeho pouit je tedy
omezeno pouze na procesy sputn v konkrtnm shellu. Zasln signl je mnohem
univerzlnj.
80 Kapitola 4. Systm proces

Skupiny proces
Absolutn zvislost synovskho procesu na jeho rodii me bt v nkterch
ppadech omezujc. Uivatel mohou spoutt procesy, napklad nron vpoty,
jejich ukonen bude trvat dov nkolik dn. V takovch ppadech je vhodn,
aby se uivatel mohl odhlsit ze systmu, zrove by ale nkter jeho procesy mly
i nadle bet. Uivatel by ml bt schopen ukonit prci s pkazovm interpretem
bez nutnosti ukonit bh vech proces sputnch z shellu. Kdyby byly vechny
procesy tsn vzan na svho rodie, v tomto ppad shell, po jeho ukonen by
rovn zanikly.
Pirozen poadavek samostatnosti nkterch proces e systm Unix zavede
nm skupin proces . Kad skupina proces m svho vedoucho lena. Pokud se chce
proces vymanit z existenn zvislosti na svm rodii a vedoucm skupiny, provede
voln jdra s e tpgrp ( ) . Po tomto voln se sm stv vedoucm skupiny a je ji na
svm rodii existenn nezvisl. Pomoc programu p s lze u proces vypisovat i PID
jejich vedoucho skupiny.

$ ps - u novakj - - fore s t - o pid , ppid , pgrp , comm


P I D P P I D PGRP COMMAND
30105 3 0104 30105 bash
31120 30105 31120 man
3 1123 31120 31120 \ sh
3 1 124 31123 3 1120 \ _ g z ip
31125 31123 3 1120 \ _ pager
25153 25152 25153 bash
3 1127 25153 3 1127 ps

Tet sloupec pedstavuje PID vedoucho skupiny. Pro pehlednost byl pi vpisu
pouit argument - - fore s t, kter graficky vyznauje hierarchii proces. Z ped
chozho vpisu plyne, e uivatel novakj pracuje se dvma pkazovmi interprety.
V jednom si prohl manulovou strnku a v druhm spustil program p s . Po sputn
si program man vytvo nkolik pomocnch synovskch proces - je to samostatn
shell, program g z ip na dekompresi zformtovan manulov strnky a program
page r zobrazujc vslednou strnku. Vechny tyto procesy jsou existenn zvisl
na jejich vedoucm skupiny - procesu man. Vechny ostatn procesy ve vpisu jsou
existenn nezvisl. Ukon-li uivatel proces slo 31 120, budou ukoneny i vechny
jeho synovsk procesy.
Pkazov interpret bash standardn spout vechny programy zpsobem za
ruujcm jejich nezvislost. Princip je velmi jednoduch. Shell nejprve vytvo nov
proces pomoc voln jdra f ork ( ) a v nm zavol s e tpgrp ( ) , bezprostedn pot
pekryje svj obraz volanm programem pomoc execve ( ) . Jeliko nebyl po vo
ln s e t pgrp ( ) vytvoen nov proces, ale dolo pouze ke zmn obrazu, volan
program tmto zpsobem "podd samostatnost".
Nanetst vechny interprety pkaz se nechovaj tmto zpsobem, pro pklad
jmenujme TclSh. Na druhou stranu, pedchoz vysvtlen podv nvod, jak vytvoit
program, jen provede osamostatnn nov sputnho procesu. V systmu je ji
takov program zahrnut, jmenuje se nohup. Program nohup bere jako argument
4.4. Plnovan spoutn proces 81

pkaz sputn programu. Program je sputn popsanm zpsobem, nohup navc


provede pesmrovn jeho vstupu do souboru nohup . out . Viz pklad.
$ nohup - /data/ archivuj &
[1] 31806
nohup : appending output t o ' nohup . out '

Po dokonen procesu si uivatel me ze souboru nohup . out pest ppadn


vstupn informace vytvoen procesem bhem jeho ivota.

4.4. Plnovan spoutn proces


V systmu Unix je mon plnovat spoutn proces. Jinak eeno, uivatel me
definovat as a proces, kter m bt sputn. Plnovan spoutn procesy lze vyut
napklad k pesunut bhu procesu do asov vhodn doby nebo napklad k peri
odickmu spoutn proces. Na potku je dobr upozornit na fakt, e o plnovan
spoutn proces se nestar jdro operanho systmu, je pln v reii systmovch
daemon.

Jednorzov spoutn proces


Systmov proces atd se star o plnovan spoutn uivatelskch proces
a de facto zprostedkovv samotnou slubu plnovanho spoutn proces. Ui
vatel mohou plnovat sputn proces pomoc programu a t . Uivatelsk program
a t umouje spoutt pkazy v pedem zadan as. Program a t lze pout ve tvaru
at <J as l> <J datum l> +<Jprstekl>
kde <J as l> uruje as bhem dne urenho argumentem <J datuml>. Prstek uruje
asov posun vi tomuto dni. Kad z parametr je voliteln, ptomen by ale ml bt
alespo jeden daj . Kad neuveden daj bude nahrazen svou implicitn hodnotou.
as me bt specifikovn jednocifernm, dvoucifernm nebo tycifernm s
lem. Je-li as jednocifern nebo dvoucifern, jedn se o hodiny, pokud je tycifern,
jedn se o hodiny a minuty zapsan ve 24hodinov notaci. Pi specifikaci asu lze
pout i dvojteku oddlujc hodiny a minuty. Mon je pout i speciln klov
slova midnight, no on, nebo teat ime . Posledn z nich oznauje 16:00. Nen-li as
uveden, bude loha sputna o plnoci.
Datum lze specifikovat bu jako den v tdnu, nebo jako datum v rmci roku. Den
lze specifikovat pomoc standardnch anglickch zkratek. Datum v rmci roku roku
se zapisuje opt pomoc zkratky msce nsledovan slem dne. Napklad Mon
reprezentuje pondl, Jul 4 reprezentuje 4. ervenec. Msto data lze pout i oznaen
t oday nebo t omorrow. Mon je i notace DD . MM . YY, kde DD je dvojcifern zpis
dne, MM je dvojcifern zpis msce a YY je dvojcifern zpis roku. Nen-li datum
uvedeno, program kalkuluje s aktulnm datem.
asov prstek se zapisuje ve tvaru sla nsledovanho jednm ze slov,
minut e s , hours, days, we eks, months, yea r s . Vznam je evidentn, k zada
nmu datu se pipote dan poet minut, hodin, dn, tdn, msc nebo let. Nen-li
82 Kapitola 4. Systm proces

prstek uveden, bude uveden asov okamik absolutn. Nkter implementace


programu a t vyluuj jist kombinace argument, napklad datum a asov posun.
Nsledujc tabulka obsahuje pklady specifikace asu pro program a t .

specifikace vznam
9 : 45 26 . 3 . 2009 dne 26. 3. 2009 v 9:45 hodin
t omorrow + 1 hour ztra o hodinu pozdji
+2 weeks za dva tdny
8 : 3 0 +3 days za ti dny v 8:30

Po sputn programu s korektnm asovm intervalem je uivatel vyzvn k zadn


pkaz. Po zadn poslednho pkazu mus uivatel ukonit vstup klvesou C - d.
Viz pklad.
$ at 1 1 : 3 0 2 6 . 4 . 2 0 0 2
warning : commands wi l l b e exe cuted u s i ng , j b i n j sh
at > l s - 1 a -
a t > I CTRL-D I
j ob 2 1 at 2 0 0 2 - 0 4 - 2 6 1 1 : 3 0

V ukzce je vidt, e program at pouv vlastn prompt "at > " . Dvodem je
odlien programu at od shellu. Na poslednm dku program at oznamuje, e
pkaz 1 s - 1 a bude proveden 26. 4. 2002 v 1 1 :30 hodin. Pokud m program njak
-

vstup, jako v tomto ppad, bude vsledn vstup zasln uivateli potou. Krom
informace o ase obsahuje posledn dek i identifiktor lohy. Identifiktor lohy je
slo. V dnm ppad jej ale nelze chpat jako PID. Proces v dob naplnovn
jet neb, je pouze vytvoen zznam o jeho sputn. Zznam je trvale uloen na
disku. O sputn procesu se star daemon atd.
Seznam naplnovanch proces lze zobrazit programem atq. Bn uivatel
me vidt pouze procesy, kter sm naplnoval. Superuivatel root je dky svm
neomezenm privilegim oprvnn vidt vechny naplnovan procesy v systmu.
$ atq
21 2 0 02 - 04 - 2 6 1 1 : 3 0 novakj

Vpis poskytuje informace o slu lohy, asu sputn a o uivateli, jen ji napl
noval. Naplnovan proces je rovn mon vyjmout sputnm programu a t rm ve
tvaru a t rm <J identifiktorc., kde <J identifiktor c. je slo naplnovan lohy.
$ atrm 2 1

Na zvr poznamenejme, e atd slou k jednorzovmu sputn procesu. Pokud


jej chce uivatel pout k periodickmu sputn, mus vhodnm zpsobem zajistit
jeho periodick plnovn. Napklad je mon pedat pkazy programu at formou
skriptu, jeho posledn pkaz zpsob optovn naplnovn sebe sama. V takovm
ppad je ale nutn pi specifikaci asu pouvat asov posun. Vytven skript je
popsno v kapitole 5.6.
4.4. Plnovan spoutn procesu 83

Periodick spoutn proces


K periodickmu plnovn spoutn proces slou daemon c ron. Tento daemon
b na vtin systm a obstarv zkladn innosti, kter je nutn periodicky vy
konvat. Sem pat napklad rotace logu, itn doasnch adres, synchronizace
asu a podobn. Obvykle je pouvn programu c ron vyhrazeno jen superuiva
teli root . Informace pro deamona c ron lze zadvat a prohlet pomoc programu
c rontab. Program c ront ab bv pouvn dvma zpsoby:
c rontab - u <J uivatel r> <J souborr>
c rontab - 1 <J uivatel r>
Prvn pkaz nastav tabulku spoutnch procesu pro uivatele <J uivatel r>, pitom vzo
rem tabulky je soubor <J soubor r>. Druhm pkazem je mon zobrazit aktuln nasta
venou tabulku. Formt tabulky spoutnch proces je detailn popsn v manulov
strnce c ront ab, sekce 5.
Kad dek v tabulce pro c ront ab reprezentuje jednu periodicky spoutnou
lohu. Zan-li dek znakem hash ,,# " , jedn se o komentf a cel dek je ignorovn.
Rovn przdn dky jsou ignorovny. Ostatn dky mus mt tvar
<J minuta r> <J hodina r> <J den r> <J msc r> <J den v tdnu r> <Jpfkaz r>
Prvnch pt daj reprezentuje as, kdy bude spoutn <Jpfkaz r>. asov daje jsou
seln nebo msto nich me bt uveden znak hvzdika ,, * /1. seln daj me
bt uveden pouze jeden nebo sestv z vce hodnot oddlench rkami. Hvzdika
m vznam "kdykoliv". Rozsah jednotlivch daj ukazuje nsledujc tabulka.

jednotka rozsah
minuta O-59
hodina 0-23
den 1-31
msc 1-12
den v tdnu 0-7

U dn v tdnu oznauj O a 7 shodn nedli. Msce a dny v tdnu je mon specifiko


vat i pomoc jejich anglickch zkratek. Daemon c ron se pi sputn loh d tmito
pti asovmi daji. Program prochz jednotliv asov daje a kontroluje, zdali
jsou splnny, symbol hvzdika je splnn vdy. Je-li uvedeno vce hodnot oddlench
rkami, mus bt splnna alespo jedna z nich. V praxi to napklad znamen, e
jsou-li vyplnny vechny daje hvzdikou, loha bude sputna kadou minutu.
Pedpokldejme, e uivatel novakj nastavil plnova na nsledujc hodnoty:
$ cat - / c ron -my . tab
# mo j e akce
5 O * * * - /prvni
0 , 1 0 , 2 0 , 3 0 , 4 0 , 5 0 14 1 * * - / druhy
1 5 4 * * sun -/treti
84 Kapitola 4. Systm proces

Prvn dek v ukzce zan znakem hash ,,# /1 a jde tedy o koment. Druh
dek definuje sputn - /p rvni kad den, pt minut po plnoci. Na tetm dku
je definovno sputn - / druhy kad prvn den v msci, ve 2 hodiny odpoledne
kadch 10 minut. Konen na poslednm dku je definovno sputn - / t re t i
kadou nedli, patnct minut po tvrt hodin rann.

Systmov kalend
Dal z uitench slueb tkajcch se plnovn loh je program c a l endar. Ne
jedn se o klasick plnova loh, sp o pomocn program upozorujc uivatele na
nadchzejc udlosti. Program c a l endar nen spoutn uivatelem, ale zpravidla
jej jednou denn spust program c ron. Po svm sputn c a l endar prohled do
movsk adrese uivatel, a pokud naraz na soubor - / . c a l endar, prohled jeho
obsah a pole uivateli potou oznmen o vech zznamech tkajcch se aktulnho
nebo nadchzejcho dne.
Obsah souboru - / . c a l endar je velmi jednoduch. Kad dek specifikuje
jednu udlost. Udlost obsahuje datum a popis. Popis formtu data nalezne uiva
tel v manulov strnce. Nsledujc pklad ukazuje obsah souboru - / c a l endar.
.

$ cat - / . cal endar


# include < c a l endar . hi s t ory>
7 November mus im j i t na l amp i onovy pruvod
15 * no a patnact eho j e ( skoro ) vzdycky vyp l a t a

K informacm ze souboru - / . c a l endar lze pipojovat i informace z globlnch


databz svtk a udlost. K tomuto elu slou direktiva # inc lude. V ukzce
byla direktiva pouita k zahrnut informac o zkladnch historickch faktech. Pro
gram c a l endar bv nkdy omylem zamovn s programem c a l . Program c a l
slou k vypisovn kalende, umouje napklad pehledn zobrazit kalend na
dan msc i rok. Program c a l ale nem nic spolenho s plnovanm spoutnm
proces.
Co je she/l ? She/l je pfkazov interpret, to ovem samo o soM ne
vysvtluje, jak je kol she/lu. She/l slou k natn uivatelskho
vstupu a komunikuje s potaem msto toho, aby s nm komuniko
val pfmo uivatel. Kdyby uivatel museli komunikovat s potaem
pfmo, nastaly by jim krun asy, protoe potae rozumj pouze
sekvencm jedniek a nul. I kdy se te zmrn dopoutme zjedno
duen (pln jsme pominuli lohu operanho systmu), je myslm
patrn, e kad uivatel by ml bt rd, e na svt existuje tak
bjen vc, jako je she/l.
N. J. Buchanan, D. M. Gingrich: The Unix She/l Guide.

Zklad y pkazovho interpretu

Ji ran verze operanho systmu Unix byly vybaveny pkazovm interpretem


- shellem. NejiQ.ak je tomu u voln iitelnch operanch systm vzelch z filosofie
Unixu. Pkazov interpret vak nen soust jdra systmu, jedn se o samostatn
uivatelsk program. Oddlen pkazovho interpretu od jdra operanho systmu
je vhodn. vvoj jdra systmu me bet nezvisle na vvoji pkazovho in
terpretu a obrcen. Uivatel se s pkazovm interpretem setkvaj bezprostedn
po svm pihlen do systmu. et kadho uivatele obsahuje informaci o pfi
hlaovacm shellu . Pihlaovac shell je sputn po uivatelov vstupu do systmu,
oputnm shellu uivatel rovn ukonuje i aktuln sezen.
Hlavnm kolem shellu je zprostedkovat interakci mezi uivatelem a potaem.
Shell ale neslou pouze k jednoduchmu sputn program, je to kompletn progra
movac jazyk. Pomoc shellu meme snadno eit problmy propojovnm obslu
nch program. Soubory obsahujc pkazy pro shell se nazvaj skripty. Ve skriptech
mohou uivatel definovat " vlastn pkazy" odvozen z existujcch a trvale je uloit
na disku. Uloen skripty mohou bt podle poteby vykonvny. Shell se vborn
hod k automatizaci nkterch rutinnch pracovnch postup.
Zanajc uivatel nkdy pesn nechpou, kter typy problm by mli eit po
moc shellu. Pi een jakchkoliv problm pomoc potae je vdy eitel postaven
ped zsadn rozhodnut: "Jak apart zvolit pro een problmu?" Pouit apart
by ml bt vdy adekvtn. To jest mal problmy by mly bt eeny zpsobem,
kter zaru jejich snadn a rychl een. Naopak pokud se jedn o velk problm vy
adujc si vt asovou investici, uivatel by ml vdy pedvdat a zvolit dostaten
siln a komplexn nstroj . Shell je velmi vhodn nstroj pro een problm malho
a stednho rozsahu, kter nevyaduj pli velkou interakci s uivatelem. Sem pat
napklad automatick manipulace se soubory a jejich obsahem, prce s adreso
vou strukturou, periodick zlohovn dat a podobn. Na druhou stranu napklad
databzovou aplikaci s grafickm rozhranm bychom v shellu naprogramovali jen
st.
86 Kapitola 5. Zklady pkazovho interpretu

Obsahem dalho textu je strun seznmen se zkladnmi vlastnostmi shellu


GNU Bash, co je voln iiteln a vylepen verze Bourne shellu . Shell GNU Bash,
zkrcen bash, je zejm nejastji pouvanm pkazovm interpretem ve voln
iitelnch operanch systmech. V operanm systmu me bt samozejm hned
nkolik pkazovch interpret. Mezi dal oblben shelly pat napklad C Shell,
Korn Shell, Z Shell, TclSh a jin.

5.1. Vykonvn pkaz


Pkazov interpret je program slouc k pehlednmu a clenmu spoutn dal
ch program. Nkter obslun programy bvaj samy oznaovny jako "pkazy" .
Akoliv je toto oznaen velmi rozen, je nutn si uvdomit, e pkazem nen
samotn program. Pkaz shellu je sdlen, kterm je poadovna njak innost, asi
nejastji sputn programu. Program je fyzick entita. Jedn se o spustiteln soubor
fyzicky umstn na souborovm systmu. V pedchozm textu ji byly nkter p
kazy shellu pedstaveny. Jednalo se o pkazy cd, bg, fg, exi t, l ogout a umask.
Jeliko jsou pkazy zabudovny pmo v shellu, budou fungovat v jakkoliv situ
aci - nejsou nijak vzny ke konkrtnmu souborovmu systmu a jeho obsahu. Na
druhou stranu napklad program l s je fyzicky umstn v adresi fbin. Pokud
nebude v systmu ptomen nebo pokud na nj nebude mt uivatel prvo spoutn,
nebude jej moci pouvat.
Sputn externho programu je zvltnm pkazem pro shell, kde prvn vstupn
slovo oznauje jmno programu. Dal slova jsou chpna jako argumenty a shell je
pedv volanmu programu. Principiln nen rozdl mezi sputnm obslunho pro
gramu nebo libovolnho jinho programu. Sputn ji bylo sten rozebrno v mi
nul kapitole. Ponkud odlin situace je u spoutn skript, viz kapitolu 5.6. Kad
pkaz shellu mus bt ukonen klvesou I ENTER a pot je pkaz pijat a zpracovn
interpretem. Zkladnm pkazem shellu je pkaz sputn externho programu. Jeho
syntaxe je
<Jjmno r> <Jargumentl r> . . . <J argumentn r>

kde <Jjmno r> je povinn a oznauje jmno externho programu. Argumenty jsou
nepovinn. Jmno a argumenty mus bt oddleny vdy alespo jednou mezerou,
jinak by je shell nebyl schopen rozliit. Podle jmna programu se hled konkrtn
program, kter bude sputn. Argumenty slou jako dodaten informace. Dodatenou
informac lze ovlivnit chovn programu.
Hledn programu je podmnno prohledvac cestou. Prohledvac cesta je tvoena
uspodanm seznamem absolutnch i relativnch cest k adresm. Obdr-li shell pkaz
sputn programu, postupn prohledv vechny cesty uveden v tomto seznamu.
Pro kadou z nich zkou, zdali se v danm adresi nenachz soubor zadanho
jmna. Je-li poadovan soubor nalezen, shell jej spust a ped volanmu programu
argumenty. Toto chovn shellu m nkolik dsledk. Adrese, kter jsou uvedeny
v prohledvac cest dve, maj vy prioritu. Nenajde-li shell ani v jednom ppad
spustiteln soubor, ohls chybu.
5. 1 . Vykonvn pkazu 87

Nastaven prohledvac cesty je pln v reii uivatele. Prohledvac cestu lze


mnit pomoc promnnch shellu. Problematika je popsna v kapitole 5.4. V tuto
chvli je dobr zmnit se o nkolika zatenickch chybch. Pedpokldejme, e
uivatel novakj m v pracovnm adresi spustiteln program ude l e j . Pi pokusu
o jeho sputn

$ udel e j
bash : ude l e j : command n o t f ound

vak obdrel chybov hlen. Pokud uivatel rozebere situaci, je pina chyby
jasn. Pracovn adres obecn nen soust prohledvac cesty. To je velik rozdl
napklad proti MS-DOSu, kter implicitn hled spustiteln soubory i v pracovnm
adresi. V Unixu si lze tuto vlastnost vynutit pidnm symbolu teka " . " do pro
hledvac cesty. Tm uivatel pinut shell hledat spustiteln soubory danho jmna
i v aktulnm adresi. Jinm zpsobem een problmu je uveden absolutn cesty
nebo relativn cesty zanajc znakem " ." nebo " . . " msto jmna sputnho souboru,
problematikou cest jsme se zabvali v kapitole 3.2. Uvaujme jednoduch pklad.

$ /home/ s tudent/ inf 9 7 /novakj /udel ej


$ . /ude l e j

V obou ppadech uivatel provedl jednoznanou specifikaci souboru, proto se


nevyuv prohledvac cesta. Zmrn pidn symbolu " . " do prohledvac cesty
nen pli ast a nelze jej pli doporuit. Uivatel si rozenm prohledvac cesty
o aktuln adres me pichystat nemil pekvapen. Pro ukzku pedpokldejme,
e uivatel novakj nape jednoduch program v jazyku C, kter pouze vype
pozdrav na obrazovku. Uivatel ulo zdrojov kd programu do souboru t e s t . c .
Pot, c o je program spn sestaven, je vytvoen spustiteln program t e s t . Uivatel
se jej pokus spustit.

$ test

Msto oekvanho pozdravu ale neobdr zhola nic. Ani chybov hlen. To ui
vatele zmate natolik, e zane houevnat opravovat program, kter je "evidentn
patn". Pozorn teni ale jist vytuili, e chyba bude pln jinde. Uivatel novakj
napsal svj prvn program dobe, pouze zapomnl, e m prohledvac cestu na ak
tuln adres uvedenu v seznamu jako posledn. Pi pokusu otestovat svj program
proto ve skutenosti spoutl program /us r / b i n / t e s t, kter slou k testovn
typu soubor.
Opan extrm je uvst aktuln adres v prohledvac cest jako prvn. Tmto
tahem si me uivatel "pekrt" nkter dleit systmov programy a skripty
v systmu mohou zat vykazovat "zvltn chovn ". Obecn lze doporuit nena
stavovat vbec " 1/ do prohledvac cesty. Mnohem lep een je vytvoit adres
.

- / b i n a shromaovat v nm potebn spustiteln programy. V dalch kapitolch


je popsno, jak modifikovat daje o prohledvac cest. Na zvr k tto poznmce
uveme uiten programy, kter mohou pomoci pi hledn soubor.
88 Kapitola 5. Zklady pfkazovho interpretu

Hledn soubor
Program whi ch doke lokalizovat spustiteln program podle jeho jmna a aktu
lnho nastaven prohledvac cesty. Jako argumenty jsou programu whi c h pedny
jmna soubor. Program pro kad pedan argument uvede absolutn cestu k p
slunmu spustitelnmu souboru. Pokud nen cesta nalezena, vstup programu bude
przdn. Viz pklad.
$ which l s man xeye s mi tscheme
/bin/ l s
/usr/b in/man
/usr/bin/X l l /xeye s
/ us r / l ocal /bin/mi t s cheme

V pedchoz ukzce byly jednotliv spustiteln soubory umstny v typickch


systmovch adresch. Krom hledn spustitelnch soubor pstupnch pomoc
cesty lze hledat i zdrojov kdy a manulov strnky. K tomu slou program
whe re i s . Jeho syntaxe je obdobn jako u programu whi ch. Ke kadmu heslu
vype whe re i s seznam spustitelnch soubor, manulovch strnek a zdrojovch
kd, jsou-li k dispozici.
$ whereis print talk
print : /usr/b in/pr int /usr/man/manl /print . l . g z
t a l k : /usr/bin/ t a l k /usr/man/manl / t a l k . l . g z

Unix disponuje velmi mocnm programem f i nd. Program f ind lze pout ke
hledn soubor podle jejich jmna, vlastnka, typu a podobn. Z jednotlivch podm
nek prohledvn lze vzjemnou kombinac vytvet sloitj podmnky. Program
f ind je zcela obecn prohledvac nstroj pracujc hrubou silou. Podle zadanch
podmnek prohledv specifikovanou adresovou strukturu. Zkladn syntaxe pro
gramu je jednoduch. Programu f ind lze zadat seznam prohledvanch cest a prohle
dvac podmnky. Seznam cest mus vdy pedchzet definici podmnek, ale me bt
i vynechn. V tom ppad prohledvn zan v pracovnm adresi. pln popis
vech podmnek programu f ind je zbyten, uivatel me kdykoliv nahldnout
do jeho manulovch strnek. V nsledujc tabulce jsou uvedeny pouze nejastji
pouvan pepnae a argumenty vyskytujc se v dalch stech textu.

argument vznam
- l inks <l n I> na soubor existuje prv n odkaz
- mt ime <l n I> obsah byl za uplynulch n dn zmnn
- name <l vzorl> jmno souboru odpovd zadanmu vzoru
- newer <lsouborl> soubor je novj ne <l soubor l>
- type <l typ l> soubor je danho typu
- u s e r / - group <ljmno l> omezuje vlastnka a vlastnickou skupinu

Asi nejastji pouvanm argumentem je - name . Argument umouje vyhled


vat soubory podle jejich neplnho jmna. Problematika neplnch jmen soubor je
5. 1 . Vykonvni pfikaz 89

podrobn rozebrna v kapitole 5.3. Pi vytven podmnek lze pout i nkolik pep
na nepotebujcch dodaten hodnoty. Pepna - not m vznam negace nsledu
jc podmnky. Pi prohledvn stromov struktury obsahujc nkolik pipojench
souborovch systm lze pepnaem - mount zakzat zpracovn dat v adresch
vyskytujcch se na jinch relnch souborovch systmech. Pouit programu f ind
demonstruje nsledujc pklad.
$ f ind /var/ l og / tmp - not -user root - type d
/var / l og / news
/var / l og / exim
/ tmp / s sh - MhDLE 1 9 5

V pkladu byly hledny soubory v adresch /var/ I og a / tmp. Hledan sou


bory mly bt adrese a zrove jejich vlastnkem neml bt superuivatel root .
V pkladu byl pouit argument - typ e d. Typ d uruje adresov soubor. Oznaen
obyejnho souboru je f, oznaen symbolickho odkazu je I a tak dle. Pro oznaen
dalch typ soubor viz manulovou strnku. V pedchzejcm ppad je vsled
kem voln programu zobrazen seznamu t adres splujcch ob dv podmnky
souasn. Pro plnost dodejme, e program f ind umouje vytvet i disjunktivn
vazby pomoc pepnae - or, rovn je mon stanovit prioritu podmnek pomoc
zvorek.
Program f ind me s nalezenmi soubory provdt rzn akce. Implicitn akc
je vypsn cesty k nalezenmu souboru. Je-li pouit argument - exee, program f ind
me pro kad nalezen soubor vykonat zadan pkaz. V pkazu je vdy etzec
,,{ } nahrazen jmnem aktulnho souboru. Pkaz uveden za argumentem - exe e
"

mus bt ukonen sekvenc9 ,, \ i " . V nsledujcm pkladu jsou nalezen adrese


msto vypsn na obrazovku pesunuty do adrese /baekup. -

$ f ind /var/ log - no t -user root - type d - exec mv { } - /backup \ ;

Pouit programu f i nd nen pli vhodn pi prohledvn rozshl struktury


adres. Hierarchick struktura soubor na vtch systmech obsahuje stovky tisc
soubor, jej pln prohledn je asov nron, navc dost zatuje pota. Ke hle
dn soubor lze vyut i databzi vech soubor. Databze se pravideln kad den
znovu aktualizuje a indexuje. Jeliko je vnitn organizace databze volena s ohledem
na vysokou efektivitu vyhledvn, pi jejm pouit m uivatel takka okamitou
odezvu. K prohledvn databze slou program I o e a t e . Jeho syntaxe je opt stejn
jako v pedchozch ppadech. Je vak mon uvdt i nepln nzvy.
$ locate b lah
/us r / l i b /b i t ehx/ he lp/ 5_Programming / b l ah
/ u s r / share / fvwm9 5 /mini - i cons /mini . b l ah . xpm
/ u s r /X l l R6 / inc lude / X l l /pixmaps /mini . b l ah . xpm

Pi prohledvn je poteba vhodn volit frzi, kter je programu I o e a t e pe


dna. Je dost dobe mon, e napklad etzec "source" se bude na bcm serveru
9Yznam tto sekvence je prozatm ponechn bez komente. Y kapitole 5.3. se ten dozv, e jde
o speciln konstrukci potlaujc vznam metaznaku " ; ".
90 Kapitola 5. Zklady pkazovho interpretu

vyskytovat v nzvu i nkolika tisc soubor. Poet soubor obsahujcch etzec "src"
se me lehce vyplhat pes sto tisc. Uivatel by ml pi hledn souboru vdy kal
kulovat s velikost bcho systmu. V ppad pouit programu f ind by tak mlo
bt brno v vahu mon diskov vyten spojen s rekurzivnm prohledvnm
adresov struktury.

Oddlovn pkaz
V pedchozm textu byl pedstaven pkaz sputn programu. Shell disponuje i dal
mi pkazy. Zadvn pkaz shellu je podobn, kad pkaz je shellem vykonn
a po ukonen vstupnho dku klvesou 1 ENTER I. Na jeden dek je ale mon uvst
vc pkaz vedle sebe. K jejich vzjemnmu oddlen slou metaznak stednk " i " .
Pkazy oddlen stednkem jsou provedeny, jako by byly uvedeny na samostatnch
dcch za sebou. Problematiku demonstruje pklad.

$ who am i ; ls - F ; upt ime


phoenix ! novakj pt s / 2 Jul 3 0 8 : 5 9 ( t i t an . inf . upol . c z )
b i n / dat a / e t c / mai l l nohup . out t odo
9 : 5 9 am up 2 0 days , 1 : 2 1 , 3 users , l oad avg : 0 . 0 0 , 0 . 0 0 , 0 . 0 0

Za stednky nen nutn dlat mezery, je to ale vhodn kvli pehlednosti. V ukz
kovm pkladu byly sputny ti programy po sob. Program l s byl sputn a po
ukonen programu who. Stejn tak program upt ime byl sputn a po ukonen l s .
Metaznaky jsou speciln znaky interpretovan shellem. V pedchozm textu jsme se ji
se dvma metaznaky setkali - s metaznakem mezera a s metaznakem ampersand ,, & " .
Podstatn je uvdomit si, e metaznak se pi pkazu sputn programu nepedv
jako argument. Metaznaky slou v shellu ke specifikaci pkaz.
Metaznak ,, & " m v shellu vy prioritu ne metaznak " i " . To jest, jsou-li nap
klad uvedeny pkazy oddlen stednkem a pokud jsou ukoneny znakem amper
sand ,, & " , pkazy budou postupn provedeny a posledn z nich bude sputn na
pozad. Viz pklad.

$ s l eep 3 ; ls -F &
[1] 3 1691
b i n / dat a / etc/ mai l l nohup . out t odo
[ 1 ] + Done ls - F

V tomto ppad nejprve dolo k tsekundov prodlev dky sputn programu


s l eep. Potom byl sputn na pozad program l s, kter bezprostedn po vpisu
skonil. Na poslednm dku je jasn vidt, e na pozad byl sputn pouze pro
gram l s . Za pozornost stoj i samotn program s l eep. Je-li program sputn s da
nm potem sekund, pozastav svoji innost pomoc alarmu. Alarm je apart jdra
systmu, kter po zadanm asovm intervalu probud proces signlem SIGALRM.
K nastaven alarmu slou voln jdra a l arm ( ) , pomoc voln jdra pause ( ) pro
ces ek na pchoz signl SIGALRM. Na prvn pohled se program s l eep me jevit
ponkud neuiten, je ale nepostradateln pi psan skript.
5. 1 . Vykonvn pkaz 91

Oba metaznaky, & i " i " , slou jako oddlovae a pouvaj se identickm zpso
"
,,

bem - ukonuj pkaz. Kdykoliv uivatel vlo pkaz shellu a neukon jej dnm
metaznakem, lze jej chpat jako "pkaz ukonen stednkem", kter nebyl pro pe
hlednost uveden. V pedchozm pkladu byl pro oddlen pouit nejprve stednk,
a potom ampersand. Mohli bychom vak pout i jin kombinace, viz ukzku.
$ 8 1 eep 3 & 1 8 - F &
[1] 1040
[2] 1041
bin/ dat a / etc/ ma i l l nohup . out t odo
[2] + Done ls - F
[1] + Done s l eep 3

Pklad je opt jasn, oba programy byly sputny na pozad. Z ukzky je rovn
vidt, e program 1 8 ukonil svou innost jako prvn, i kdy byl sputn jako druh.
Je to tm, e program 1 8 probhl takka okamit a program 8 1 eep ekal cel ti
sekundy.

Agregace pkaz
Pedchoz tvrzen o priorit metaznak vede k nutnosti mt k dispozici apart,
kterm lze seskupovat pkazy. Shell takovm apartem disponuje, navc jsou k tomuto
elu voleny dvojice metaznak " ( ", ,, ) " a ,, { " " } " co je velmi intuitivn. Pkazy
, ,

je mon seskupovat dvojm zpsobem.


( <l seznam pkaz r> )
{ u<lseznam pkaz r> ; }
Oba tvary se krom rznch zvorek odliuj ve dvou zsadnch vcech. Seznam
pkaz mus bt v druhm ppad bezpodmnen ukonen metaznakem stednk.
Rovn mus bt za otevrac zvorkou " { " vdy alespo jedna mezera. Mezera ped
ukonovac zvorkou " } " ji nutn nen. V obou ppadech seskupen pkaz vede
k vytvoen "agregovanho pkazu", kter je dle mono chpat jako jeden atomick
pkaz.
Rozdl mezi obma pedchozmi notacemi nen jen syntaktick. V prvnm ppad
jsou jednotliv pkazy provedeny v podzenm shellu. To znamen, e jakkoliv na
staven shellu proveden mezi kulatmi zvorkami budou po dokonen poslednho
pkazu zapomenuta. V druhm ppad se pkazy vykonvaj v aktulnm shellu,
to jest zmny v chovn shellu se projev i dle. Rozdl v tchto dvou pstupech je
markantn zejmna, ale nikoli jen, pi pouit promnnch shellu. Viz kapitolu 5.4.
Na zvr kapitoly bude uvedeno nkolik praktickch pklad kombinujcch
seskupovn a oddlovn pkaz. Nsledujc pklady jsou uvedeny bez svch
vstup, o jejich tvaru si jist ten udl pedstavu sm.
$ ( date ; who ) ; 18
$ ( date ; who ) ; 18 &
$ ( date ; who ) & 18
$ ( date ; who ) & 18 &
92 Kapitola 5. Zklady pkazovho interpretu

U prvnch dvou pklad nebylo uveden zvorek nutn. Ve tetm pkladu byl
nejprve sputn prvn proces na pozad a pot byl sputn program l s . Procesem
spoutnm na pozad byl podzen shell, kter vykonal posloupnost dvou pkaz.
tvrt ppad je analogick s tm rozdlem, e i program 1 s byl sputn na pozad.
Zajmav situace me vzniknout napklad pi vloen nsledujcho pkazu.

$ ( date & who ) ; 18 - F


novakj pt s / O Jul 3 0 8 : 2 0 ( t i t an . inf . upol . c z )
Tue Jul 3 1 2 : 0 2 : 3 8 CEST 2001
pes pt S / l Jul 3 0 8 : 4 9 ( l inux . mf s e rvi s . c z )
windsort pt s / 2 Jul 3 1 1 : 3 6 ( 1 5 8 . 1 94 . 92 . 1 1 1 )
b i n / dat a/ e t c / mai l l nohup . out t odo

V pedchzejc ukzce se "slily vstupy" dvou program, dat e a who. Program


dat e byl sputn na pozad, program who na poped. Oba programy maj informa
tivn charakter, vypisuj daje lina obrazovku", a jeliko pracuj soubn, me dojt
k proloen jejich vstupu. Tto patologick situaci lze pedejt vhodnm pesmrov
nm vstupu . Problematikou se zabv nsledujc kapitola.

5.2. Pesmrovn a roury


Tm vechny obslun programy jsou v systmu Unix koncipovny jako filtry.
Programy pi prci petvej vstupn data na vstup. Vstupn data jsou obvykle za
dvna pomoc terminlu, vstup je obvykle tisknut na obrazovku. V Unixu existuj
ustlen oznaen pro standardn vstup - klvesnici terminlu, standardn vstup -
- obrazovku terminlu a standardn chybov vstup. Standardn vstup a standardn
chybov vstup jsou zobrazovny na stejnm fyzickm zazen - obrazovce termi
nlu. Jedn se vak o logicky odlin vstupy. Standardn vstup obsahuje vstupn
data vytvoen programem, chybov vstup je uren pro informaci o chybch bhem
zpracovvn vstupnch dat.
Aby si ten mohl o jednotlivch pojmech udlat pesnj pedstavu, musme se
vrtit opt k pojmu proces. Jdro systmu pro kad proces udruje tabulku deskrip
tor, jedn se o tabulku identifiktor otevench soubor . Pi voln jdra f ork ( )
dd synovsk proces tabulku deskriptor po svm rodii. To napklad umouje
meziprocesovou komunikaci mezi rodiovskm a synovskm procesem pomoc ote
vench soubor. Prvn ti zznamy v tabulce deskriptor jsou vyhrazeny pro komu
nikaci s terminlem. Prvn zznam je standardn vstup, druh standardn vstup, tet je
standardn chybov vstup. Zznamy v tabulce deskriptor jsou slovny vzestupn
od O, trojici standardnch zznam odpovdaj sla O, 1 a 2. seln oznaen vstupu
a vstup je pouvno i v dalm textu.
Deskriptory pro prci se soubory jsou dleit zejmna pro pkazov interpret.
Shell pi spoutn program umouje pesmrovat vstup a vstupy do jinch ote
vench soubor. Tmto zpsobem lze velmi jednodue eit situace podobn tm
z pedchoz lohy - slit vce vstup. V rznch ppadech je vhodn nkter z v
stup potlait. Napklad pi vyhledvn soubor nen nutn vypisovat chybov
5.2. Pesmrovn a roury 93

hlen zpsoben neadekvtnmi prvy. Potlaen chybovho vstupu lze dosh


nout jeho pesmrovnm do specilnho souboru / dev / nu l l . V takov situaci shell
nejprve vytvo nov proces, zmn deskriptor slo 2 tak, aby ukazoval na oteven
soubor / dev/nu l l , a pekryje svj obraz novm programem. Na nsledujcm ob
rzku je zachyceno vsledn pesmrovn.

destabul a
kripktonl
(!roce:: ..
. . .o stdin
1
.......
s t dout
'00 2 / dev/ nul l

Pesmrovn vstupu a vstupu


Pro pesmrovn vstupu a vstup lze pout metaznaky ,, < ", ,, " a ,, >", ,, " .
Tyto metaznaky se uvdj vesms na konci pkazu, i kdy je mon vloit je mezi
argumenty nebo na zatek pkazu. Metaznaky mus bt pouity spolu s definic
vstupnch ppadn vstupnch soubor. Vznam metaznaku ,, " bude rozebrn
a v kapitole 5.6. Metaznak ,, < " slou k pesmrovn vstupu, na sv prav stran
oekv cestu ke vstupnmu souboru . Metaznaky ,, >" a ,, " slou k pesmrovn
vstup. Oba metaznaky mus mt na prav stran definovn vstupn soubor. Na
lev stran me bt uveden dal metaznak urujc typ vstupu. Mon varianty
zpisu pesmrovn jsou uvedeny v nsledujc tabulce.

notace vznam
< <J soubort> standardn vstup je pesmrovn ze souboru
><Jsoubort> standardn vstup je pesmrovn do souboru
2 ><Jsoubort> standardn chybov vstup je pesmrovn do souboru
&><Jsoubor t> oba standardn vstupy jsou pesmrovny do souboru
> ><Jsoubor t> standardn vstup je pipojen na konec souboru
2 > ><Jsoubort> standardn chybov vstup je pipojen na konec souboru

Soubor me bt charakterizovn jednak cestou, jednak slem deskriptoru. Pokud je


poteba zadat soubor pomoc deskriptoru otevenho souboru, je mon pout ozna
en ve tvaru &<J slo t>, kde <J slo t> oznauje konkrtn deskriptor. Potlaen vstupu
programu demonstruje nsledujc pklad.

$ f ind / e t e / s s l - type f
/ e t c / s s l / opens s l . cnf
f ind : / e t c / s s l /private : Permi s s i on deni e d
$ f ind /ete/ssl - type f >/dev/nu ll
f i nd : / e t c / s s l /private : Permi s s ion denied
$ f ind / e t e / s s l - type f 2 > /dev/null
/ e t c / s s l / opens s l . cnf
94 Kapitola 5. Zklady pkazovho interpretu

V ukzce je pouit program f i nd, pomoc nj uivatel hled obyejn soubory


v adresi / e t c / 8 8 1 . V druhm ppad byl potlaen vstup programu, v tetm
ppad chybov vstup. V pedchoz tabulce chyb monost "pipojit oba vstupy
na konec souboru". Shell takov pipojen pmo neumouje, nezbv tedy nic
jinho, ne nejprve pesmrovat standardn chybov vstup na standardn vstup, ten
dle pipojit na konec souboru pomoc metaznaku ,, " . Pokud by uivatel chtl
pipojit oba vstupy na konec souboru, musel by uvst pkaz ve tvaru

$ eat soubor
I n the Beginn i ng Was the Word .
$ f ind / e t e / s s l - type f soubor 2 >&1 ; eat soubor
In the Beginning Was the Word .
/ e t c / s s l / opens s l . cnf
f ind : / e t c / s s l /privat e : Permi s s i on den i ed

Pesmrovn lze vyut i k primitivnm manipulacm se soubory. Program cat


provd zetzen soubor, kter jsou mu pedny jako argumenty. Nen-li uveden
ani jeden soubor nebo v ppad, e jednm z argument je znakl O pomlka ,, - ",
program c a t te data ze standardnho vstupu. Tak se chov drtiv vtina obslunch
program v Unixu. Pokud pesmrujeme vstup programu cat do jinho souboru,
zskme nstroj na primitivn editaci a manipulaci se soubory.

$ eat >novy
vytvarim obsah prvn iho souboru
I CTRL-D I
$ eat <novy >kopie
$ eat kopie
vytvarim obsah prvn iho souboru

Uivatel nejprve vytvoil nov soubor sputnm programu cat a pesmro


vnm jeho vstupu do souboru poadovanho jmna. Po ukonen vstupu stiskl
klvesu C d, kterou uzavel vstupn soubor. Dky pesmrovanmu vstupu se data
-

uloila na disk. Druhm pkazem uivatel provedl kopii dat. Tentokrt musel pe
smrovat vstup i vstup, innost programu cat jinak zstv stejn. Pokud se ui
vatel rozhodne pipojit na konec souboru dal informaci, me tak uinit pomoc
metaznaku " > > " .

$ eat kopie
pripoj im na kone c
I CTRL-D I
$ eat kopie
vytvarim obsah prvn iho souboru
pripoj im na kone c

Vloen dat na zatek nebo na jinou pozici v programu je rovn mon, ale
vyaduje ji spoluprci nkolika program, napklad head a t a i 1. Za prv je nutn
l O V tomto ppad se jedn skuten o znak, nikoliv o metaznak. Vznam pomlky je interpretovn a
samotnm obslunm programem c a t .
5.2. Pesmrovn a roury 95

upozornit na fakt, e nen mon zrove pesmrovat vstup i vstup zl do identic


kho souboru. Textov soubor me bt pi pesmrovn oteven buto pro ten,
nebo pro zpis. Nikdy ne souasn pro ob operace. Napklad sputn programu
$ cat kopie da l s i >kopie

povede jedin ke ztrt dat ze souboru kop i e, nikoliv k pipojen souboru da l s i


na jeho konec, jak by se na prvn pohled mohlo zdt. Obdobn situace j e napklad
u vkldn dat na zatek souboru. een demonstruje nsledujc pklad.
$ cat <kopie >nova ; cat - nova >kop i e ; rm nova
a j e s t e neco na zacatek
I CTRL-D I
$ cat kopie
a j e s t e neco na zacatek
vytvarim obSah prvniho souboru
pripoj im na kone c

Nyn jsme si k een pomohli uvedenm pomlky. Nejprve byla provedena z


lon kopie souboru. Bezprostedn pot byl zetzen vstup s kopi sebe sama a ve
bylo zapsno do pvodnho souboru. Pomoc metaznaku ,, > " lze vytvoit i przdn
soubor nebo vymazat obsah existujcho souboru. Sta jednodue pout metaznak
"
,, > v przdnm pkazu.
$ >novy- soubor . txt

Na zvr vah o pesmrovn uveme pklad z pedchoz kapitoly ec pro


blm slit vstup. Jak ji bylo naznaeno, u soubn vykonvanch proces me
dojt ke slit jejich vstup. Tomuto patologickmu jevu lze zabrnit vhodnm pe
smrovnm vstupu jednoho nebo vce proces.
$ (who & date &>soubor . txt ) ; cat soubor . txt ; l s ; rm soubor . txt

Druh uveden metaznak ampersand nem samozejm vznam "sputn pro


cesu na pozad ", jeliko je nsledovn metaznakem pro pesmrovn. Hlavn my
lenkou pedchozho pkazu je vypsat obsah souboru a pot, co nehroz jeho slit
s jinm vstupem. Pesmrovn vstupu procesu sputnho na pozad lze obecn
vele doporuit. Napklad program nohup obstarv implicitn pesmrovn do
souboru nohup . aut, pokud uivatel neuvede explicitn jin pesmrovn.

Zetzen obslunch program pomoc roury


Jednou ze zkladnch poteb vcelohovho operanho systmu je vzjemn
meziprocesov komunikace. Obslun programy v Unixu jsou velmi jednoduch. Plat
zus, e kad obslun program by ml vykonvat pouze jednu innost a ml by
ji dlat dobe a efektivn. Pkladem je teba program cat, kter pouze zetzuje
soubory. Sloitj problmy se e spojovnm tchto malch "dl stavebnice" do
vtch celk. astn-li se nkolik program een vtho problmu, obvykle si
mezi sebou vymuj data.
96 Kapitola 5. Zklady pkazovho interpretu

Obslun programy jsou navreny zpravidla jako filtry, pracuj se svm standard
nm vstupem a standardnm vstupem. Ve vzjemnm pedvn dat mezi programy
tedy nen dn problm - programy si mohou data pedvat pomoc datovch sou
bor. Souborov pstup k meziprocesov komunikaci je vak velmi neefektivn.
Jednak nemrn vytuje diskov jednotky potae, navc se nejedn o pli ist
een.
Tvrci operanho systmu Unix ji v jeho ranch verzch pili s apartem umo
ujcm komunikaci mezi dvma procesy. Hlavn mylenkou je vytvoen datovho
toku zpravidla mezi rodiem a synovskm procesem. Datov tok mezi pbuznmi
procesy je umonn dky tabulce deskriptor zddn od jejich spolenho pedka.
Jeliko me bt do datovho toku jednou stranou pouze zapisovno a druhou stranou
pouze teno, dostal tento mechanismus meziprocesov komunikace vstin nzev
roura - pipe. Pomoc roury mohou komunikovat i dva synovsk procesy. Roura e
problm komunikace mezi producentem a konzumentem. Producent je proces, jeho v
stup je pomoc roury penen na vstup konzumenta. Roura funguje jako fronta. Vznik
roury je podmnn volnm jdra pipe ( ) , na uivatelsk rovni lze jej vytvoen
podmnit metaznakem " I ". Syntaxe pkazu vyuvajcho rouru je
<Jproducent r> I <J konzument r>
kde <Jproducent r> j e pkaz pro sputn programu, jeho standardn vstup j e zapiso
vn do roury a <Jkonzument r> je pkaz pro sputn programu, kter svj standardn
vstup te z roury. Na nsledujcm obrzku je zobrazen princip komunikace dvou
proces pomoc roury.
tabulr ka tabulr kt a
--S k k : ::
- t::di n _S1If _
C!rOdllC1_-_-_-
__

1 ---
ou
----
---
-

-- .(frmzumen!)
t 1
2
2 ----
.. ..

Pi pouit roury dochz opt k pesmrovn. Na rozdl od souborov komuni


kace pi pouit roury nedochz k vytven nedoucch soubor na disku. Iden
tickho vsledku, ale s vytvoenm pomocnho souboru, lze doshnout nsledujcm
kdem:
<Jproducent r> ><J souborr> ; <J konzumen t r> < <J souborr> ; rm <J soubor r>
Pkaz pro shell, v nm se vyskytuje metaznak " I ", se nazv kolona. Metaznak " I "
m vy prioritu ne ostatn metaznaky. Prioritu demonstruje pklad.
$ date l who I wc &
Thu Jul 5 1 0 : 3 7 : 4 0 CEST 2 0 0 1
[1] 473
3 15 93
[ 1 ] + Done who I wc
5.2. Pfesmrovn a roury 97

Nejprve byl sputn program dat e . Pot byl rourou propojen vstup programu
who na vstup programu wc . Tato kolona dvou proces byla sputna na pozad. Pro
pojen obou pkaz zpsobilo vpis potu vech pihlench uivatel, respektive
celkovho potu pouvanch terminl. V tomto ppad dolo pi pouit roury
ke komunikaci dvou synovskch proces shellu.
Kolona mus bt vdy uzavfen. Roura neme bt "petrena", na prav stran
roury mus bt vdy proces, kter te vstup z roury. V ppad, e tomu tak nen,
jdro zasl procesu na lev stran roury signl SIGPIPE. Roura je v Unixu vyuvna
velmi asto. Prakticky nahrazuje pesmrovn vstupu. Nsledujc dva pkazy maj
identick vznam.
$ program < c i s l a
$ c a t c i s l a I program

Kolonu lze v pkazu pout i vcekrt. Neformln lze kolonu chpat jako apart
umoujc zetzovat obslun programy ec dl problmy. Pi pouit roury je
v nkterch situacch vhodn prbn ukldat vstup nkterho procesu, ale zro
ve jej poskytovat dalmu konzumentovi. K tomuto jednoduchmu vtven roury
slou program t e e . Program t e e te standardn vstup a pedv jej na standardn
vstup podobn jako program ca t, navc me data prbn zapisovat do souboru
na disku. Jmno souboru je programu t e e pedno jako argument. Pouit pkazu
demonstruje nsledujc pklad.
$ ( date ; who ) I tee z a znam . txt I tai l +2 I l e s s
Pedchoz kolonou uivatel nejprve spustil programy who a dat e, jejich vstup
je pedn programu t e e, ten provede jeho zpis na disk a dle jej ped programu
t a i l . Program t a i l odstran ze vstupu prvn dek - datum a zbytek poskytne
strnkovai l e s s . Strnkova umon uivateli pohodln prohlet pihlen ui
vatele. V souboru z a z nam . txt bude ale zachovno i datum, protoe program t e e
provedl uloen obsahu vstupu n a disk a program t a i l nsleduje a z a nm.
Na zvr kapitoly o pesmrovn a rourch uvedeme dva trochu komplikova
nj pklady. V pkladech se vyskytuj nstroje popsan a v dalch kapitolch.
Clem pklad je ale ukzat variabilitu, pedevm slu apartu, ji nm Unix a shell
zpstupuj. Pklady jsou uvedeny bez vstup.
$ who I grep novakj I wc - 1
$ cat c i s l a . txt I sed s / , / + /g I calc I sort -nr

Na prvnm dku byl pouit program grep filtrujc vstupn data podle jistho
vzoru. V tomto ppad program grep pevedl na vstup pouze dky obsahujc
posloupnost novakj . Prvn pkaz vype, kolikrt je uivatel novakj pihlen.
V druhm pkladu je pro zmnu pouit proudov editor sed . Program je ur
en k provdn nhrad v textu podle vzor. Pedpokldejme, e ve vstupnm sou
boru c i s l a . txt jsou na dcch zapsna sla oddlen arkou. Uivatel tmto
pkazem provede souet sel v dcch a jednotliv souty vype sestupn. Idea
je vcelku jednoduch. Nejprve byly symboly rka nahrazeny symboly plus ,, + " .
98 Kapitola 5. Zklady pkazovho interpretu

vstup v tomto tvaru byl pedn programu c a l c, kter kad dek vyhodnotil.
Souty byly dle postoupeny programu sort tdcmu vstupn dky. Jeliko byl
pouit pepna r, vsledn dky byly setdny sestupn. Argument n zajituje,
- -

e sort bude se vstupnmi daty zachzet jako s sly.

Pojmenovan roura
Spojovn obslunch program do vych celk pat ke zcela bnm prakti
km vysplho uivatele systmu Unix. Doposud uvaovanou meziprocesovou ko
munikaci pomoc roury umoovala spolen tabulka deskriptoru otevench soubor.
Vytven datovch tok ve form rour jinmi slovy vyaduje vzjemnou "pbuznost
propojovanch proces". Roury rovn nelze pout pi manipulaci s interaktivnmi
programy. Interakce si vyaduje pmou prci se standardnm vstupem a vstupem.
Pm prce se v tomto ppad vyluuje s pesmrovnm.
stenm vchodiskem ze situace je pouit specilnho mechanismu pojme-

novan roury. Pojmenovan roura funguje na principu specilnho souboru, jen me


bt jednm procesem oteven pro vstup a druhm procesem me bt souasn ote
ven pro vstup. Proti klasickm datovm souborm mohou s pojmenovanou rourou
efektivn pracovat dva procesy souasn a mohou si tak pomoc n pedvat data.
Jeliko je pojmenovan roura reprezentovna specilnm souborem, lze ji vytvoit
programem mknod vyuvajcm voln jdra mknod ( ) .
Na uivatelsk rovni je pojmenovan roura zpravidla vytvena obslunm pro
gramem mkf i fo. Jedin povinn argument programu mk f i f o je cesta k nov vytvo
enmu specilnmu souboru. Cesta reprezentuje umstn pojmenovan roury v sou
borovm systmu. Program me bt dle sputn s argumentem - - mode =<Jprva 1> .
V tomto ppad jsou pstupov prva k pojmenovan roue nastavena na hodnotu
<Jprva 1>. Uivatel me pomoc argumentu - mode omezit dostupnost pojmenovan
-

roury pro ostatn uivatele v systmu.


Pokud je pojmenovan roura vytvoena, lze s n zachzet v podstat jako s libovol
nm souborem. Napklad je mon pesmrovat vstup programu do pojmenovan
roury, samozejm je mon i pesmrovat vstup z pojmenovan roury. Proces ten
a zpisu se chov vesms jednosmrn. Proces, jen m otevenu pojmenovanou
rouru pro ten, do n neme ve stejnm okamiku zapisovat, a obrcen. Pokud
jeden i vce program do pojmenovan roury zapisuje, "na druhm konci" mus
njak proces pojmenovanou rouru st. V opanm ppad dojde k zablokovn
zapisujcch proces. Analogicky dojde k zablokovn techo procesu, pokud do
pojmenovan roury dn proces nezapisuje.
Pouit pojmenovan roury demonstruje nsledujc pklad. I kdy jde o velmi
jednoduch problm, kter nen poteba eit pomoc pojmenovan roury, je z nj
vidt jednoduchost a pedevm sla pojmenovan roury. V pkladu jsou spojeny
programy cat, f ind, grep a wc pomoc pojmenovan roury a zrove pomoc
kolony.
$ mkf i fo - -mode = 6 0 0 / tmp/moj e - roura
$ f ind /usr/ share - type d >/ tmp/moj e - roura
5.3. Expanze jmen soubor 99

. . . na jinm terminlu . . .
$ cat / tmp/moj e - roura I grep htm1 I wc - 1
12
$ rm / tmp/moj e - roura

V pkladu byla nejprve vytvoena pojmenovan roura / tmp /moj e - roura. Dle
byl do prv vytvoen roury pesmrovn vstup vytvoen programem f ind. v
stupem byl seznam podadres nachzejcch se v adresi / u s r / share. Pojme
novan roura je dle tena programem cat zetzenm kolonou s programy grep
a wc. Smyslem tetho pkazu je vypsat poet podadres, jejich jmno obsahuje
etzec html . Tet pkaz me bt bez jmy proveden napklad v pln jinm
terminlu - dky pojmenovan roue nepotebuje mt pmou pbuzenskou vazbu
na proces zapisujc do pojmenovan roury. Soubor / tmp /moj e - roura byl na konci
prce smazn.
S vyuitm pojmenovan roury se lze setkat napklad pi prci s FTP klientem.
FTP klient slou k penosu datovch soubor ze vzdlench hostitel na lokln
systm a obrcen. V drtiv vtin se jedn o interaktivn program. Pokud uivatel
nechce penesen data ukldat na disk, ale chce je rovnou zpracovvat, me data
"ukldat do pojmenovan roury". Na druhou stranu pojmenovan roury sta umstit
vhodn proces zpracovvajc pijman data. Detaily o slub FTP jsou uvedeny
v kapitole 7.5. Jet obecnjm mechanismem meziprocesov komunikace je zsuvka
- socket. Pomoc zsuvky je mon zetzovat i nelokln procesy, to jest procesy
bc na rznch hostitelskch potach. V ppad zsuvky jsou data mezi procesy
penena prostednictvm potaov st. Pro detaily viz kapitolu 7. 1 .
Na ukzkovch pkladech v tto kapitole byste s i mli uvdomit, e krom zaji
tn meziprocesov komunikace je velmi nutn zajistit "kompatibilitu dat". Obslun
programy systmu Unix jsou schopny pracovat s rzn reprezentovanmi daty. Ped
propojenm program je leckdy nutn provst pravu i transformaci dat. K tmto
elm slou napklad filtry a proudov editory. Jeliko jde o velmi dleit n
stroje, jsou jim vnovny samostatn kapitoly 6.1. a 6.2.

5.3. Expanze jmen soubor


Tm vechny obslun programy v systmu Unix tou vstupn data ze stan
dardnho vstupu nebo ze soubor pedanch programu jako argumenty. Ob dv
monosti se jen mlokdy vyluuj. Soubory jsou jednoznan ureny pomoc cesty.
V praxi se vak uivatel velmi asto setk s potebou kvantifikovat jmna soubor.
Kvantifikovan jmno souboru zastupuje obecn vc soubor. Poadavek kvan
tifikovat jmna soubor je zcela pirozen. Denn se uivatel me setkat s nutnost
manipulovat s nkolika soubory, kter maj spolen prvky ve svch jmnech, na
pklad stejn zakonen. Kvantifikovan jmna soubor se rovn nazvaj nepln
jmna. Uvedenm neplnho jmna souboru uivtel definuje "vzor jmna". Vzor je
poslze shellem expandovn na lexikograficky setdn seznam jmen existujcch
soubor odpovdajcch zadanmu vzoru.
1 00 Kapitola 5. Zklady pffkazovho interpretu

V shellu lze pout nkolik specilnch metaznak zastupujcch jeden nebo vce
znak ve jmnu souboru. Akceptuje-li program soubory jako vstupn argumenty, ui
vatel je me specifikovat pomoc jmna, ve kterm se vyskytuj zstupn symboly.
Nsledujc tabulka obsahuje zkladn zstupn metaznaky.

metaznak vznam
domovsk adres
-<Jjmno r> domovsk adres uivatele <Jjmno r>
? libovoln znak
* posloupnost libovolnch znak
[ <J mnoina r> 1 libovoln znak z mnoiny
\ <J znakr> jeden konkrtn <J znakr>

Pouit metaznaku ,, _ "jako zstupnho symbolu pro domovsk adres uivatele


jsme ji diskutovali. Je-li jmno uivatele vynechno, je vskyt nahrazen domov " _ "

skm adresem aktulnho uivatele. Podotknme, e metaznak je expandovn ,, _ "

pouze v ppad, pokud se nachz na zatku slova. Jinmi slovy, je expando ,, _ "

vn, pouze jsou-li bezprostedn ped nm oddlovae mezera, tabultor nebo nov
dek. Napklad ve vrazu - / data bude metaznak nahrazen absolutn cestou
" _ "

k domovskmu adresi, ale ve vrazu s oubor . txt - nikoliv.


Metaznak otaznk " ? " zastupuje jeden libovoln znak. Metaznak hvzdika II * "
zastupuje libovolnou posloupnost znak vetn przdn posloupnosti. Pokud je
poteba specifikovat mnoinu znak, pouvaj se metaznaky II [ " a " l " obklopujc
definici mnoiny znak.
Mnoinu znak lze definovat rznm zpsobem. Prvn monost je vet, mezi
zvorky je uveden seznam znak, napklad [ abcdl znamen IIjeden ze znak a, b,
c nebo d " . Druhou monost je specifikovat mnoinu jako posloupnost znak ve tvaru
[ <Jprvnir> - <Jposlednir> l , kde <Jprvnir> je prvn znak, <Jposlednir> je posledn znak, ob
"
hodnoty jsou oddleny metaznakem pomlka Napklad [ a - dl reprezentuje
"
_
.

stejnou mnoinu jako [ abcdl . Oba pstupy lze kombinovat, navc je mon defi
novat nkolik posloupnost, napklad [ a - ch - k z l reprezentuje sjednocen mnoin
[ a - c l , [ h - kl a [ z 1 . Symbol m vznam jako metaznak pouze uprosted hra-
" _ "

natch zvorek. Pokud uivatel chce specifikovat znak mus jej uvst v seznamu
" _ ",

jako prvn. V tom ppad nen symbol interpretovn jako metaznak, jeliko by de
finovan posloupnost II postrdala potek". Napklad [ - a - c l reprezentuje znaky
"
a, b, c, a navc znak "
_
.

Pi specifikaci mnoiny znak lze pout i mnoinov doplnk. Pokud je za zvorku


A II
II [ uveden metaznak II
" je nsledujc specifikace mnoiny brna jako doplnk
,

do mnoiny vech znak. Napklad [ A a - c l definuje II libovoln znak vyjma a, b


A II
a c " . Pokud stoj II na jinm mst ne bezprostedn za otevrac zvorkou, je
A II
interpretovn jako znak II .

Poslednm metaznakem umoujcm specifikovat znaky je zptn lomtko II \ " .


Svm zpsobem nepat do tto mnoiny metaznak, protoe je to zstupn sym
bol pouze pro jedin symbol. Za metaznakem II \ " mus nsledovat libovoln znak,
5.3. Expanze jmen souboru 1 01

kter zastupuje. Metaznak " \ " se pouv k potlaen expanze, jak bude vidt dle.
V nsledujc tabulce jsou uvedeny mon tvary specifikac mnoin znak.

mnoina vznam mnoina vznam


[ abcdl znaky a, b, c, d [ - ab l znaky a , b, -
[ a - cdl znaky a, b, c, d [ Aa-cl libovoln znak vyjma a, b, c
[ a - dl znaky a, b, c, d [ Aa-czl libovoln znak vyjma a, b, c , z
[ a - bc - dl znaky a, b, c, d [a-cAl znaky a, b, c, A
[ abc - dl znaky a, b, c, d [ -a-cAzl znaky a, b, c, z , - , A

Jet ped uvedenm pklad kvantifikace jmen soubor pomoc specilnch me


taznak je dobr objasnit, jak probh samotn expanze jmen souboru. Pi uveden p
kazu pro sputn programu shell mimo jin analyzuje argumenty pedan spout
nmu programu. Nalezne-li v nich metaznaky zastupujc mnoiny znak nebo jejich
sekvence, provede expanzi nahrazen neplnho jmna souboru seznamem existu
-

jcch soubor. eeno jinmi slovy, na msto pvodnho argumentu jsou vloeny
nov argumenty, kad z nich reprezentuje jeden skuten soubor odpovdajc vzoru.
Pokud by byl seznam przdn, shell ponech argument neexpandovan. Podstatn je
uvdomit si, e expanze probh na rovni shellu. Nkter jin systmy, disponujc po
dobnm by omezenm apartem kvantifikace jmen soubor, penechvaj expanzi
a na sputnm programu. V Unixu volan program v zsad nepozn, jestli byly
jeho argumenty zadny pmo uivatelem, nebo jestli byly expandovny shellem.

Pouvn neplnch jmen soubor


Pro demonstraci expanze je vhodn pout obslun program e cho, jen je stan
dardn soust vech systm. Program e cho vype pedan argumenty na stan
dardn vstup a ukon svou innost. Pokud se mezi vstupnmi argumenty vyskytuj
expandovateln metaznaky, shell je ped pednm programu expanduje. Uivatel
me pomoc programu e cho sledovat, jak expanze probhla. Viz nsledujc p
klady.
$ echo *
bin dat a e t c ma i l
$ echo . *
. . . bash_h i s t ory . f orward . fvwmrc . prof i l e
$ echo . * *
. . . bash_hi s t ory . f orward . fvwmrc . prof i l e b i n dat a e t c ma i l

V prvnm ppad shell metaznak ,, * " expandoval na jmna vech viditelnch


soubor. Soubory zanajc tekou jsou neviditeln, jejich expanzi lze vynutit pouitm
teky na zatku neplnho nzvu. V tetm ppad byly vypsny vechny soubory
v adresi. Pedvan argumenty byly dva, " . * " a ,, * " , shell je postupn expandoval
nejprve na neviditeln soubory, potom na viditeln. Program echo lze v ppad
nouze pout v systmu k stenmu nahrazen programu 1 s . Dal pklad ukazuje
pouit zstupnho metaznaku " ? " .
1 02 Kapitola 5. Zklady pkazovho interpretu

$ echo . * r ?
. bash_h i s t ory . f orward . fvwmrc

Vypsny byly skryt soubory, jejich pedposledn psmeno je r . Teka na zatku


byla opt nutn ze stejnho dvodu jako v pedchozm ppad. V ukzce jsou
uvedena typick pouit metaznak " [ fl a " l fl .

$ echo [ a - d] *
bin data
$ echo [ a - d] a*
data
$ echo ? [ a d] *
A _

b i n e t c t odo

Nejprve byly vypsny viditeln soubory zanajc psmeny a a d. V druhm


ppad byla podmnka dle zeslena pevnou volbou druhho znaku - a. Neplnmu
jmnu [ a - dl a * ji odpovd pouze adres data. V tetm ppade byly vypsny
soubory, jejich druh psmeno v nzvu nepat mezi a, b, c nebo d. Neplnch jmen
soubor se pouv asto pi hromadnm koprovn, pesouvn nebo zetzen. Viz
pklad pouit.

$ cat * . tex I wc - 1 >de1ka . txt


$ cp * - 2 0 0 0 [ O l ] [ 0 - 9 ] . dat - / data
$ mv dip1oma . * - /data/backup

Prvn pkaz zape do souboru de lka . txt celkov poet dk soubor za


konench . t ex. V druhm ppad dojde ke zkoprovn soubor z roku 2000 do
adrese / data. V tetm ppad se pesunou soubory zanajc diploma . do
-

adrese / da t a /backup.
-

Potlaen expanze jmen


Pozornho tene jist napadlo, e expanze zen shellem me mt krom
vhod i sv nevhody. Zkladn otzka zn: "Jak pinutit shell, aby nkter metaznaky
neexpandoval?" ada filtr a proudovch editor pracuje s regulrnmi vrazy. V nich
m symbol " * " speciln vznam - vytv uzvr regulrnho vrazu. Pokud uivatel
vol program a jako argument mu pedv regulrn vraz, v nkterch ppadech
mus explicitn shellu oznmit, aby neprovdl expanzi metaznak. To lze uinit
nkolika zpsoby. Jednm z nich je pouit metaznaku zptn lomtko " \ " . Naraz-li
shell na tento metaznak, dosad na jeho msto znak, kter se nachz bezprostedn
za nm, jeho expanzi vak ji neprovd.

$ echo *
bin data e t c ma i l t odo
$ echo \ *
*
5.3. Expanze jmen soubor 1 03

Pomoc metaznaku " \ " je mon vytvet argumenty, v nich jsou mezery. Mezera
byla doposud chpna tak jako metaznak, protoe ji shell interpretuje jako odd
lova argument na pkazovm dku. Jeliko " \ " zabrauje jakkoliv interpretaci
metaznaku, uivatel me pedvat argumenty, ve kterch jsou mezery. Rozdl mezi
jednm argumentem s mezerami a nkolika argumenty lze nejlpe demonstrovat
nsledujcm pkladem.
$ cat j eden\ argument
cat : j eden argument : No such f i l e or d i r e c t ory
$ cat vice argumentu
cat : v i c e : No such f i l e or d i r e c t ory
cat : argumentu : No such f i l e or d i r e c t ory

V prvnm ppad vzniklo jen jedno chybov hlen, protoe soubor jmnem
"j eden argument " nebyl nalezen. V druhm ppad vznikla chybov hlen dv,
ani jeden ze soubor "vi c e " a "argumentu " nebyl nalezen.
Dal monost potlaen expanze je uzaven posloupnosti znak mezi uvozovky
nebo apostrofy. Z pohledu expanze se uvozovky i apostrofy chovaj identicky, roz
dl v jejich chovn lze nalzt pi dereferenci promnnch a substituci pkaz, viz
kapitolu 5.4. Uzaven mezi uvozovky nebo apostrofy je vhodn pout, pokud se
v posloupnosti znak vyskytuje hodn specilnch symbol a jejich potlaovn po
moc " \ " by bylo nepehledn. Je-li posloupnost uzaven do uvozovek i apostrof,
nelze v n ji pout " \ " jako metaznak. Z tohoto dvodu se obtn vyjaduj nap
klad "uvozovky v uvozovkch". Viz ukzku.
$ echo ' ahoj sve t e '
aho j sve t e
$ echo ' ahoj ' \ " sve t e '
ahoj ' sve t e
$ echo " ahoj ' sve te"
ahoj ' sve t e

V druhm ppad nebylo mon vloit apostrof do posloupnosti pmo. Posloup


nost znak se musela nejprve rozdlit na zetzen dvou st a mezi n byl vloen
apostrof pomoc metaznaku " \ " . V tetm ppad lze napsat apostrof pmo, protoe
je posloupnost uzavena do uvozovek.
Pedchzejc kapitola ukzala, jakm zpsobem lze navazovat vstup jednoho
procesu na vstup jinho. Obdobnm poadavkem je monost pfedvat argumenty
mezi procesy vstup jednoho procesu je brn jako vstupn argument spoutnho
-

procesu. Proces me bt sputn a pot, co jsou vygenerovny vechny jeho ar


gumenty. To znamen, e proces vyuvajc vstup jinho procesu jako argument
me bt sputn a po jeho dokonen a pedn vstupnho argumentu. Tento zp
sob generovn argument se nazv substituce pfkaz. Substituce pkazu m dvoj
syntaxi:
, <l pfkaz t> \
$ ( <lpfkaz t
1 04 Kapitola 5. Zklady pffkazovho interpretu

Druh notace funguje pouze v shellu GNU Bash, prvn notace funguje i v jeho
pedchdci Bourne Shellu. Druh styl zpisu pkazu je vhodn, zejmna pokud
je poteba substituci pkaz vnoovat. Vnoen lze provst i v prvnm ppad, ale
asto se pi tom lze setkat se skpnm zub - uivatel se me rychle ztratit ve
zmti apostrof.
Problematiku demonstrujme jednoduchm pkladem. Pedpokldejme, e ui
vatel novakj si chce pomoc programu e cho zobrazit informace o potai, na kterm
je pihlen, a o svm pracovnm adresi.

$ echo Jsi na s troj i ' hos tname ' v adresari ' pwd ' .
J s i na s t roj i phoenix v adre sari / home / s tudent / i nf 9 7 / novakj .
$ echo Jsi na s troj i $ ( ho s tname ) v adresari $ (pwd)

J s i na s t roj i phoenix v adre sari / home / s tudent / inf 9 7 / novakj .

Oba pkazy jsou identick, li se pouze v pouit notaci. Program hos tname
vype jmno hostitelskho potae. Pi substituci pkaz lze vyut vlastnosti z
vorek. V pedchoz ukzce byl vsledn argument zskan z vstupu programu vdy
jeden - jednalo se buto o jmno potae, nebo o cestu k souboru. Obecn mohou
bt vstupn data rozloena na vc dk a oddlena mezerami. V takovm ppad
by byla kad posloupnost znak bez mezer dosazena jako jeden separovan argument.
V nkterch ppadech je to ale nedouc - vstup je poteba pedat jako jeden argu
ment s mezerami. V tom ppad je nutn uzavt substituci pkazu do uvozovek.

$ echo ' l s - lF '


b i n / dat a / e t c / ma i l l
$ echo " ' l s - lF ' "
bin/
dat a /
etc/
ma i l l
$ echo " l s - lF "
' 18 -lF'

Z pkladu je vidt, e i kdy 1 s - 1 F zajistil vpis soubor do jednoho sloupce,


v prvnm ppad jsou vypsny do dku. Kad dek vpisu je toti chpn jako
samostatn argument programu echo. Prvn pkaz echo byl voln se tyfmi ar
gumenty, kad nzev souboru byl jednm argumentem. V druhm ppad byla
substituce vnoena do uvozovek - uvozovky potlaily dal expanzi metaznak me
zera a nov fdek. Ve svm dsledku byl program e cho voln s jednm argumentem.
V poslednm ppad nedolo k expanzi vbec. Apostrofy na rozdl od uvozovek
potlauj interpretaci vech metaznak, tedy i obrcench apostrof. Na zvr jsou
uvedeny pklady typickho pouit substituce pkazu.

$ cd; mkdi r backup


$ cp $ ( f ind - type f ) - /backup
$ mv $ ( f ind - type f I grep - v sem) - / za1oha
$ cat $ ( find - name " * . txt" ) I wc - 1
18
5 . 4. Promnn 1 05

Na druhm a tetm dku dolo ke zkoprovn a pesunut soubor do adre


s baekup a z a l oha. Argument - type f programu f i nd definuje typ hleda
nho souboru na obyejn soubor. V druhm ppad byly z vstupu programu f ind
odstranny dky neobsahujc podetzec s em. Na poslednm dku byl zobrazen
celkov poet dk soubor se zakonenm . txt . Jistm skalm pi pouvn
substituce pkaz je omezen velikost pfkazu. Shell zpravidla omezuje maximln po
et argument volanho programu. Pokud by substituc pkazu dolo k peshnut
tohoto limitu, pkaz nebude sprvn proveden. Vchodiskem ze situace je pouit
programu x a rg s . Program x a r g s te data ze standardnho vstupu a po jejich na
ten spust zadan program s argumenty, kter prv naetl ze standardnho vstupu.
Pro detaily viz manulovou strnku programu x a rg s .

5.4. Promnn
Promnn slou shellu k uchovn informac mncch se bhem prce nebo
svzanch s pihlenm uivatelem. Kad promnn m svoje jmno, atributy a svj
obsah neboli hodnotu. Na rozdl od vtiny programovacch jazyk shell podporuje
pouze jeden datov typ fetzec znak . V praxi to napklad znamen, e slo 123
-

bude reprezentovno etzcem t znak, 1, 2 , 3 . Tento fakt me dle psobit jist


obte. M-li etzec vznam sla, nelze jej jednodue porovnvat lexikografickm
uspodnm, protoe napklad 1 0 < 9, jeliko 1 < 9 . Lexikografick uspodn nen
vhodn napklad pi porovnvn velikosti soubor nebo jinch selnch daj.
Tento zpor je vykoupen mnoha klady. Systm promnnch je dostaten jednoduch
a nen poteba promnn deklarovat explicitn ped urovat jejich datov typ.
-

Promnn v systmu lze rozdlit do t skupin. Prvn skupinou jsou vnitfn pro
mnn shellu, o jejich inicializaci, to jest naplnn hodnotami, se star shell sm. Dru
hou skupinou jsou uivatelsk promnn, ty mohou bt definovny uivatelem podle
poteby. Do tet skupiny pat promnn specilnho vznamu uchovvajc informace
o bcch procesech, pedvanch argumentech a podobn. Nzvy promnnch
specilnho vznamu jsou sestaven ze specilnch znak, kdeto nzvy uivatelskch
a vnitnch promnnch shellu sestvaj z alfanumerickch znak, to jest pouze z ps
men a sel.
Dalm kritriem rozdlnosti promnnch je monost zmny jejich obsahu. Ui
vatel nemohou modifikovat vechny promnn. Napklad promnn specilnho
vznamu jsou vesms pouze pro ten uivatel me jejich obsah st, ale neme jej
-

mnit. Rovn nkter vnitn promnn shellu jsou pouze pro ten. Shell poskytuje
uivateli pkazy, pomoc nich me tak svm promnnm piadit status "pouze
pro ten". Problematika bude rozebrna dle v textu.

Piazen a dereference
Pi prci s promnnou uivatel pouv dva zkladn typy pkaz, pfifazen
a dereferenci. Pkaz piazen slou k definovn obsahu promnn. Ve vtin im
perativnch jazyk, ke kterm pat i shell, m piazen tvar L R. Vraz L na lev
=
1 06 Kapitola 5. Zklady pkazovho interpretu

stran pkazu piazen reprezentuje referenci na promnnou. V shellu je to nzev


promnn. Prav strana pkazu piazen R pedstavuje vraz, jeho hodnota je ulo
ena v promnn danho jmna. Nen-li prav strana uvedena, shell tuto konstrukci
chpe jako poadavek na zruen promnn danho jmna 1 1 . Na vod je dobr upo
zornit na fakt, e prav strana obsahuje vraz zpracovvan shellem. Me napklad
obsahovat metaznaky expandovateln shellem. Do promnnch se ale data ukldaj
v neexpandovanm tvaru.
Pkaz dereference je v shellu uvozen metaznakem ,, $ " , bezprostedn za nm
nsleduje jmno promnn. Shell dereferenci expanduje na hodnotu promnn. Expanze
samozejm neprobhne, pokud je vraz uzaven do apostrof nebo je expanze po
tlaena metaznakem \ Pi dereferenci dosud nedefinovan promnn obdrme
,, ".

"przdnou hodnotu". Viz pklad.

$ PRVNI =obsah
$ echo $PRVNI
obsah
$ PRVNI =
$ echo $ PRVNI

Uivatel nejprve definoval promnnou PRVNI s obsahem ob s ah. Pot provedl


jej dereferenci, dky pkazu e c ho byla vypsna hodnota na vstup. Dle byla pro
mnn odstranna pkazem przdnho piazen. Bhem piazen me promnn
na prav stran dereferencovat i sebe samu. Dereference se vak v dnm ppad
neme vyskytovat na lev stran rovnosti. Typickm ppadem, kdy promnn de
referencuje sebe samu pi piazen, je pipojen novho daje do prohledvac cesty
reprezentovan promnnou PATH. Viz pklad.

$ echo $ PATH
- /b i n : /us r / local /bin : / u s r / b i n : /bin : /usr/bin/X 1 1 : / u s r / game s
$ PATH= $ PATH : .
$ echo $ PATH
- /b i n : /us r / l oc a l /bin : / usr/bin : /b i n : /usr/bin/X1 1 : / u s r / game s : .

Promnn PATH obsahuje prohledvac cestu, jednotliv adrese jsou oddleny


znakem " : ". Pedchoz pklad ukazuje, jak lze do prohledvac cesty pidat i pra
covn adres. V pkladu je dobr vimnout si dvou vc. Jednak bylo nutn oddlit
pracovn adres " . " dvojtekou, jednak na lev stran piazen se nevyskytuje
metaznak ,, $ ". Pi piazen hodnoty promnn je mon pouvat vech doposud
uvedench konstrukc. Nsledujc pklad demonstruje vyuit expanze a substituce
pkazu.

$ DRUHA=data/scheme / *
$ TRETI = $ ( date ' +%d %m %Y ' )
$ echo $DRUHA $TRETI
dat a / s cheme / faktor i a l . scm dat a / s cheme / f ibonac c i . s cm 06 07 2 0 0 1
I1 Stejnho efektu lze doshnout pouitm pkazu uns e t .
5.4. Promnn 1 07

Zatenci se pi pouit promnnch dopoutj astch chyb. Jedna z nich


pramen z neplnho pochopen poad dereferenc a expanz, kter provd shell.
Uvaujme promnnou DRUHA, kter byla vytvoena v pedchozm pkladu. Za po
zornost stoj vstup nsledujcch pkaz.
$ echo $DRUHA
dat a / s cheme / faktori a l . s cm dat a / s cheme / f ibonac c i . s cm
$ echo " $DRUHA"
dat a / s cheme / *
$ echo ' $DRUHA '
$ DRUHA
$ echo $DRUHA ,
dat a / s cheme / * ,

V prvnm ppad dolo po dereferenci k expanzi. V druhm ppad se promnn


dereferencovala, ale k expanzi nedolo, jeliko vraz byl uzaven mezi uvozovky. Ve
tetm ppad nedolo ani k dereferenci, protoe apostrofy potlauj vznam meta
znaku ,, $ " . V posledn ukzce je mon vsledek ponkud zarejc. Uivatel by
intuitivn oekval seznam soubor zakonen rkou. Jeliko ale prvn probhne
dereference a zetzen s rkou, pi expanzi nen nalezen dn soubor, ktermu od
povd nepln jmno I da t a l scheme l * . Jak ale doshnout oekvanho efektu?
- ,

Problm lze vyeit napklad substituc vnoenho pkazu.


$ echo $ ( echo $DRUHA) ,
dat a / s cheme / f aktor i a l . s cm dat a / s cheme / f ibonac c i . s cm ,

Doposud uvdn dereference byla pouze jednou z nkolika monch. Shell


umouje zapisovat dereferenci v rznch tvarech s odlinm vznamem. Souhrn z
kladnch zpsob zpisu dereference nalezne ten v nsledujcm pehledu. pln
popis je k dispozici v manulov strnce programu bash.
$ <J promnn D> Vraz je expandovn na hodnotu promnn <Jpromnn D>.
$ { <Jpromnn D> } Vraz je expandovn na hodnotu promnn. Sloen z
vorky slou k oddlen nzvu promnn od jejho okol.
Tento tvar zpisu se pouv v ppad obklopen n
zvu promnn alfanumerickmi znaky. Napklad msto
$ ( e cho $ PRVNI ) X lze jednodue pst $ { PRVNI } X.
$ { <Jpromnn D> - <J vraZ D> } Je-li <Jpromnn D> definovna, je vsledkem jej hodnota.
V opanm ppad je vrcen <J vraz D> a promnn zstv
nadle nedefinovan.
$ { <Jpromnn D>= <J vraz D> } Je-li <Jpromnn D> definovna, je vsledkem jej hodnota.
V opanm ppad je promnn definovna na hodnotu
<J vraz D> a potom je vrcena. Uveden <Jpromnn D> bude
mt po interpretaci vrazu vdy definovnu hodnotu, co
je vrazn rozdl proti pedchzejcmu ppadu.
$ { <Jpromnn D>+ <J vraz D> } Je-li <Jpromnn D> definovna, je vrcena hodnota <J vraz D>.
Nen-li <Jpromnn D> definovna, nen vrcena dn hod
nota.
1 08 Kapitola 5. Zklady pfkazovho interpretu

Zkladn atributy promnnch


Pi prci s nkolika postupn spoutnmi shelly je vhodn pedvat vnoe
nm shellm hodnoty promnnch. Jednm z vznamnch atribut promnn je
jej export. Exportem rozumme penesen hodnoty promnn i do vnoench shell.
Problematiku demonstrujme pkladem.
$ PRVNI =ahoj
$ sh
$ echo $ { PRVNI - nede f inovana }
nede f inovana
$ PRVNI = sve te
$ echo $PRVNI
sve t e
$ exi t ; echo $PRVNI
ahoj

Z pkladu je jasn vidt, e po sputn vnoenho shellu byla hodnota promnn


PRVNI zapomenuta. Pi ukonen shellu byla k dispozici opt pvodn hodnota pro
mnn. V nkterch ppadech je ale vhodn penet hodnotu promnn i do pod
zench shell. S tmto poadavkem se lze nejastji setkat pi vytven promnnch
v inicializanch skriptech. Pi startu pihlaovacho shellu se inicializuj zkladn pro
mnn provedenm skript uloench v inicializanch souborech l e t c /prof i l e,
- I . prof i l e, ppadn - I . bashyro f i l e . Skript l e t c /p ro f i l e je systmov
a sprvce v nm me definovat promnn potebn pro prci vech uivatel. Dal
dva uveden soubory jsou uloeny v uivatelskm adresi a uivatel si do nich me
zapsat potebn nastaven. Pesnj popis inicializace promnnch ten nalezne
v kapitole 5.7.
Zkladnm poadavkem na vechna systmov i uivatelsk nastaven promn
nch je jejich ddinost do dalch shell. Atribut exportu lze promnn nastavit
pomoc vnitnho pkazu shellu export. Pkaz lze pouvat buto se seznamem
promnnch, nebo tak na lev stran piazovacho pkazu. Viz pklad.
$ export PRVNI =ahoj
$ sh
$ echo $PRVNI
ahoj
$ exi t

V uivatelskm souboru - I . prof i l e je zpravidla definovno nkolik promn


nch, proto je vhodn uvst pkaz export a pln na konec se seznamem ex
portovanch promnnch. Posledn dek souboru me mt napklad nsledujc
tvar.
export CLAS S PATH ED I TOR PATH LD_L I BRARY_PATH

Promnn lze exportovat pouze z nadfzenho shellu do podzenho shellu, opan


exportovat promnn nelze. Seznam aktuln exportovanch promnnch lze zskat
zadnm pkazu export bez argumentu.
5.4. Promnn 1 09

Dalm vznamnm atributem promnn je jej nemnitelnost. Promnn, kter


lze pouze dereferencovat, ale jejich hodnotu nelze mnit pomoc pkazu piazen,
se nazvaj promnn pouze pro ten. V shellu je k nastaven tohoto atributu uren
vnitn pkaz readonly.
$ PRVNI =ahoj
$ readonly PRVNI
$ PRVNI = 8vete
bash : PRVNI : readonly var i ab l e

Pkaz readonly uveden bez argument vype seznam vech promnnch


pouitelnch pouze pro ten. Nastaven promnn pouze pro ten funguje pouze
na lokln rovni, nepen se do vnoench shell. Je-li jednou promnn nastavena
pouze pro ten, nen mon j tento atribut odebrat.

Promnn specilnho vznamu


Mezi promnn specilnho vznamu pat skupina t promnnch nesoucch in
formaci o hodnot PID shellu, dle o hodnot PID poslednho procesu sputnho na
pozad a o nvratov hodnot poslednho procesu. Vechny ti promnn jsou pouze
pro ten, jejich hodnoty mn bhem prce samotn shell. Jmenovan promnn jsou
shrnuty v tabulce.

promnn vznam
$$ PID shellu
$! PID poslednho procesu sputnho na pozad
$? nvratov hodnota poslednho dokonenho procesu

Ji v pedchozm textu bylo eeno, e nvratov hodnota procesu je celoseln. Nu


lov nvratov hodnota signalizuje spn dokonen programu. Nenulov hod
noty znamenaj chybu v bhu programu. Vznam jednotlivch sel je k nalezen
zpravidla v manulovch strnkch konkrtnch program.
$ 18 datata >/dev/nu l l
l s : datat a : N o such f i l e or d i r e c t ory
$ echo $ ?
1
$ 1 8 data > / dev/nu l l
$ echo $ ?
O

V prvnm ppad dolo k chyb, protoe adres dat a t a neexistoval. Nvra


tov hodnota pkazu 1 s byla 1. V druhm ppad byl pkaz spn a nvratov
hodnota je O.
Promnnou $ ! lze s vhodou pout napklad k ukonen dlouho bcho pro
cesu. Pedpokldejme, e uivatel chce spustit dlouho bc proces, ale nechce, aby
bel dle ne 2 hodiny. Uivatel chce zajistit, aby byl proces automaticky ukonen,
pokud pekro maximln stanovenou dobu svho bhu.
110 Kapitola 5 . Zklady pkazovho interpretu

$ - / data/archivuj & echo $ 1 > - / . running . pid


[1] 1239
$ ( s l eep 7 2 0 0 ; ki l l -9 ' cat - / . running . pid ' l &
[2] 1240
. . . po dvou hodinch
[ 1 ] - Ki l l ed - / da t a / archivuj
[ 2 ] + Done ( s l eep 7 2 0 0 ; k i l l - 9 ' cat - / . running . p id ' l

Pkazy na prvnm dku nejprve spustily program archivu j na pozad, bez


prostedn potom byl zapsn jeho PID do souboru / . running . p i d. Jako dal
-

byl sputn na pozad sloen pkaz, kter nejprve pozdr sv vykonvn na dv


hodiny a nsledn ukon bh procesu, jeho PID vyzvedne ze souboru pomoc
substituce pkazu c a t . Ve uveden een je pro Unix typick. Problm termi
novanho ukonen procesu byl rychle vyeen nkolika jednoduchmi programy.
Uvate, jak tk by bylo een podobnho problmu v jinch operanch systmech.

Oddlovae podmnnho vykonvn pkaz


O nvratovou hodnotu procesu se opraj dal dva oddlovae pkaz . Metaznaky
,, && " a ,, 1 1 " slou k jednoduchmu podmnnmu proveden pkazu. Oba maj
shodnou syntaxi:

<Jpkazl r> && <Jpkaz2 r>


<Jpkaz 1 r> I I <JpkaZ2 r>

V obou ppadech je nejprve proveden <Jpkaz 1 r>. Proveden pkazu <Jpkaz2 r> j e
podmnno nvratovou hodnotou prvnho pkazu. Je-li pouit oddlova ,, && " ,
druh pkaz je vykonn, pokud je nvratov hodnota prvnho pkazu rovna O. Je
-li pouit oddlova " I I ", druh pkaz je vykonn, pokud je nvratov hodnota
prvnho pkazu nenulov.
Oddlova ,, && " se chov jako logick souin, oddlova " I I " se chov jako
logick souet. tene by nemlo poplst, e spch je znaen ponkud nezvykle
slem O a nespch nenulovmi hodnotami. Toto znaen m opt opodstatnn.
V ppad, e program skon korektn, nen poteba zjitbvat "v jakm korektnm
stavu skonil". V opanm ppad je chybu dobr lokalizovat, program m monost
na kadou vjimenou situaci pout jinou nvratovou hodnotu.
V systmu existuj dva programy s pedem definovanou nvratovou hodnotou,
f a l s e a t rue. Program f a l s e kon vdy s chybou slo 1, program t rue je vdy
spn a jeho nvratov hodnota je O. Program f a l s e se tedy chov neutrln
k oddlovai " I I ", na druhou stranu program t rue se chov neutrln k oddlo
vai ,, && " . Rozdlnost obou oddlova demonstruje piloen pklad.

$ cd datata && pwd


bash : cd : dat ata : No such f i l e or directory
$ cd datata I I pwd
bash : cd : dat ata : No such f i l e or d i r e c t ory
/home /vi l em/ tmp/ novakj
5.4. Promnn 111

"
Oddlova && a ,, 1 I " lze uvst v pkazu samozejm vc, jednotliv pkazy
,,

jsou potom podmnn vyhodnocovny zleva doprava.

asto pouvan promnn


Na zvr kapitoly o promnnch je uveden soupis nejastji pouvanch pro
mnnch. Ne uveden promnn maj v shellu zvltn vznam nebo ovlivuj
chovn spoutnch program. Vpis aktuln definovanch promnnch a jejich
hodnot je mon zskat pkazem s e t sputnm bez argumentu.

CDPATH Seznam adres oddlench dvojtekami, v nich shell zkou


hledat adrese, pokud sele pkaz cd. Tmto zpsobem se lze
pesouvat mezi adresi pouze pomoc uveden jejich stench
jmen.
ED I TOR Implicitn textov editor.
H I STF I LE Nzev souboru s histori pkaz shellu. Implicitn hodnotou je
jmno souboru - / . ba sh_h i s t o ry.
H I STFI LES I Z E Poet dk historie uloen na disku.
H I S TS I ZE Poet dk historie, kterou si shell udruje v pamti.
HOME Absolutn cesta k domovskmu adresi uivatele.
HOSTNAME Jmno hostitelskho potae.
HOSTTYPE Architektura potae, teba i 3 8 6 , alpha a podobn.
LC ALL Specifikuje nrodn prosted. Promnn me mt napklad hod
notu e s_CZ . I S O - 8 8 5 9 - 2 . To znamen, e je nastaveno esk n
rodn prosted a je pouvno standardn kdovn pro centrln
Evropu - ISO Latin 2. Nastaven tto promnn pekrv ostatn
promnn s nzvy LC _<l kategorie c>. Pomoc lokalizanch promn
nch je mon nastavit jazykov mutace systmu a pizpsobit jej
loklnm zvyklostem. Sem pat napklad styl vpisu asu, data
a podobn. Pro podrobnosti viz kapitolu 6.5.
MAI L Absolutn cesta k souboru s uivatelskou potou, soubor bv ob
vykle umstn v adresi /var / spoo l /ma i l a m jmno shodn
s uivatelskm jmnem.
MAI LCHECK Shell periodicky kontroluje novou pchoz potu. Pomoc pro
mnn MAI LCHECK lze nastavit asovou periodu kontroly, asov
jednotky jsou sekundy.
MAI LPATH Promnn obsahuje seznam soubor, kter jsou shellem testovny
na pchoz potu. Promnn me obsahovat seznam soubor od
dlench dvojtekami.
OSTYPE Typ operanho systmu, napklad l i nux - gnu.
PAGER Promnn obsahuje nzev programu, jen je pouvn pro strn
kovn vpis pesahujcch poet dk na terminlu. Pokud nen
112 Kapitola 5. Zklady pfkazovho interpretu

promnn nastavena, je pouit implicitn strnkova page r, co je


obvykle symbolick odkaz napklad na program more.
PATH Prohledvac cesta. Jednotliv cesty jsou oddleny dvojtekami.
Standardn je cesta nastavena alespo do adres / u s r / b i n,
/ b i n, / u s r / b i n /X l l a / u s r / l o c a l / b in.
PWD Pracovn adres.
RUNLEVEL slo runlevelu, v nm se systm nachz.
RANDOM Promnn generujc pseudonhodn sla. Promnn sice nen
pouze pro ten, ale pouit pkazu piazen nem v jejm ppad
smysl. Pi kad dereferenci je vrceno vygenerovan pseudon
hodn slo.
SHLVL slo oznaujc rove vnoen shellu. Po pihlen do systmu je
rove 1. Kad nov shell hodnotu SHLVL inkrementuje.
TERM Nastaven emulace terminlu. S hodnotou vt 1 0 0 by mla vtina
terminl fungovat dobe.
UID Identifikan slo uivatele.
USER Uivatelsk jmno.

Promnn tvaru PS<l n l> si zaslou del koment. Jedn se o promnn definujc
tvar n-rnho promptu, n nabv hodnot I, 2, 3 a 4. Tvar primrnho promptu je uloen
v promnn P S l . Primrnm promptem shell ohlauje, e ek na vstup. Ve vech
pedchozch ukzkch byla hodnota primrnho promptu nastavena na ,, $ u". Tvar
sekundrnho promptu je uloen v promnn P S 2 , obvykle m tvar ,, > u". Sekundrnm
promptem shell oznamuje, e ek na dokonen pkazu. Viz pklad.

$ echo ' tento text I ENTIR I


> dokonc im az zde '

t ento text
dokoncim a z zde

Jeliko byl na prvnm dku uveden pouze jeden znak apostrof, shell vyaduje
dokonen pkazu. Sekundrnm promptem uivateli oznamuje, e mus dokonit
pkaz nebo peruit jeho zadvn stiskem C - c . Rozdlen pkaz na vce dk je
nkdy vhodn z dvodu pehlednho zpisu. Pokud pi psan pkazu uvedeme na
konci dku metaznak " \ " a stiskneme I ENTIR shell opt zobraz sekundrn prompt
a bude ekat na dokonen pkazu. Uveme pklad analogick pedchozmu.

$ echo tento text \I ENTER I


> dokoncim az zde

t ento t ext dokoncim a z zde

V tomto ppad nebyl stisk klvesy I ENTER I chpn jako pechod na nov dek.
Vsledn text byl proto zobrazen na jednom dku.
Prompt P S 3 zobrazuje pkaz s e l e c t , kdy po uivateli poaduje vbr z nkolikl1
monost. Pkaz s e l e c t slou v shellu ke zprostedkovn jednoduchch menu. Im
plicitn tvar promptu je ,,# ? " . Prompt PS4 je uren pro vpis ladicch informac. Pokud
je shell sputn s parametrem - x, je zapnut v ladicm reimu . Kad sputn pkaz
je ped sputnm zobrazen ve sv expandovan podob a je uvozen promptem PS4 .
Implicitn hodnota je ,, + " .
Pi definici tvaru shellu lze pout speciln sekvence expandovateln shellem.
Nsledujc tabulka obsahuje souhrn nejpouvanjch sekvenc.

sekvence vznam
\h jmno potae
\H pln jmno potae vetn domny
\t systmov as ve formtu HH : MM : S S
\u uivatelsk jmno
\w cesta k pracovnmu adresi
\W nzev pracovnho adrese
\! slo aktulnho pkazu v historii
\$ pokud je efektivn UID rovno 0, pak je symbol #, jinak $

Nsledujc pklad ukazuje nastaven pehlednch primrnch prompt.


$ P S1= ' [ \u@\h \W] \ $ ,
[ novakj @phoenix novakj l $ P S 1 = ' \h : \w\ $ ,
phoenix : - $ P S 1 = ' \u\ $ ,
novakj $

Uivatel by pi volb svho promptu ml vychzet z nkolika skutenost. Je dobr


mt vdy pehled, na kterm potai je uivatel pihlen. Soust promptu by mlo
bt minimln hostitelsk jmno potae. Pokud uivatel vlastn vc t, je rovn
vhodn pipojit informaci o pihlenm uivateli. Tet dleitou informac je infor
mace o pracovnm adresi. Dlka absolutn cesty k adresi vak me bt dlouh,
prompt by ml zabrat jen nezbytn nutnou st dku. Rozumnm kompromisem
je zobrazen pouze jmna pracovnho adrese msto jeho pln cesty.

5.5. dc struktury a zabudovan aritmetika


Shell je plnohodnotn programovac jazyk zahrnujc standardn pfkazy cyklu
a podmnn pfkazy. V obou ppadech je nutn pracovat s pravdivostnmi hodno
tami. U cyklu mus bt dna limitn podmnka, po jejm dosaen se cyklus ukon.
Podmnn pkaz potebuje pravdivostn hodnotu k rozhodnut o dalm provd
nm pkazu.
Kad sputn program vrac celoselnou hodnotu. Nvratov hodnota m
mimo jin vznam pravdivostn hodnoty. Shell m navc k dispozici jednoduch re
lan predikty a logick spojky, pomoc nich lze vytvet sloitj logick vrazy.
V pedchoz kapitole byly pedstaveny oddlovae ,, && " a ,, 1 I " vykazujc stejn
114 Kapitola 5. Zklady pfkazovho interpretu

chovn jako logick konjunkce a disjunkce. V shellu je rovn zabudovan unrn


oddlova ,, ! " reprezentujc negaci. Jeho syntaxe je ! u <l vraz c>. Je-li nvratov hod
nota vrazu nulov, jej negac je 1 . Je-li nvratov hodnota nenulov, jej negac je O.
"
Pro spojovn logickch hodnot jsou v shellu k dispozici ti logick spojky, && ,, ,

II
"I I"a I 1/

Vytven podmnek
Ke klasifikaci typu souboru a k porovnvn hodnot slou program t e s t . V sys
tmu zpravidla existuje pevn odkaz / u s r / b i n / [ ukazujc na program t e s t . Pi
psan vraz se astji pouv jmno [ . Program t e s t umouje porovnvat dv
etzcov hodnoty, dv celoseln hodnoty a porovnvat vzjemn st soubor.
Obecn tvary voln programu jsou:

t e s t <l vraz c>


[ u<l vraz C>u l

V druhm ppad je vyadovna i ukonovac hranat zvorka, ta je programu


pedvna jako posledn argument. Hranat zvorky ale nejsou metaznaky, pouitm
pkazu v druhm tvaru uivatel zadv pkaz pro sputn programu. Z tohoto
dvodu je nutn <l vraz c> oddlit mezerami z obou stran. V nsledujc tabulce jsou
shrnuty zkladn predikty slouc k porovnvn hodnot etzc.

vraz vznam
<lstrc> dlka etzce <l strc> je nenulov
- z <l strc> dlka etzce <l strc> je nulov
<l Str l C> <lstr2 C>
= etzce <l str l C> a <l str2 C> jsou shodn
<lstr l C> ! <l str2 C>
= etzce <l str l C> a <l str2 C> jsou rzn

Pomoc programu t e s t lze porovnvat i celoseln hodnoty. Shell sice pracuje


pouze z etzcovmi promnnmi, ale me jejich obsah interpretovat jako slo.

vraz vznam
<l n l C> - eq <l n2 C> etzce jsou shodn
<l n l C> - le <l n2 C> <l n c>l j e men nebo rovno <l n2 C>
<l n l C> - lt <l n2 C> <l n c>l je men ne <l n2 C>
<l n l C> - ge <l n2 C> <l n c>l je vt nebo rovno <l n2 C>
<l n l C> - gt <l n2 C> <l n c>l j e vt ne <l n2 C>
<l n l C> - ne <l n2 C> etzce jsou rzn

Pi pouit programu t e s t je mon vyut ji popsanch vlastnost shellu,


zejmna expanze a substituce programu. Rovn je mon skldat sloitj vrazy
z jednoduch pouitm logickch spojek. Viz pklad.
5.5. dc{ struktury a zabudovan aritmetika 115

$ ' pwd ' 1 ; echo $ ?


O
$ ' pwd ' = $ PWD l ; echo $ ?
O
$ ' pwd ' 1 = $HONE l ; echo $ ?
O
- 1 = $HONE l ; echo $ ?
$
1

Kad dek pedstavuje pouit programu test a vytitn jeho nvratov hod
noty. V prvnm ppad byl jako argument dosazen pracovn adres vznikl sub
stituc pkazu. etzec je neprzdn, proto je vraz pravdiv. V druhm ppad je
vsledek rovn pravdiv, protoe substituce pkazu pwd byla v ukzce porovnna
s obsahem promnn PWD, to jest ob strany rovnosti byly identick. Jeliko je v tetm
ppad vraz opt pravdiv, uivatelv pracovn adres nemohl bt nastaven na
domovsk adres. V posledn ukzce je vsledek nenulov - vlnka je expandovna
na cestu k domovskmu adres, promnn HOME se dereferencuje na t etzec.
Jeliko byl pouit predikt ,, ! = " , vraz je nepravdiv.
Pi porovnvn sel se pouv obdobn zpsob zpisu. Nsledujc pklad
ponechme bez komente.

$ 99 - l t 1 0 0 l ; echo $ ?
O
$ 9 9 9 - l t 1 0 0 l ; echo $ ?
1

Program t e s t slou rovn k testovn typ soubor a jejich st. K testovn


typu se pouvaj unrn predikty, porovnvn st soubor m stejnou syntaxi
jako porovnvn sel.

vraz vznam
<J.h r> - e f <Jh r> oba soubory sdlej stejn i-uzel
<J/I r> - nt <Jh r> soubor <Jfl r> je novj ne soubor <Jf2 r>
<Jfl r> - o t <Jf2 r> soubor <Jfl r> je star ne soubor <Jf2r>
- e <Jfr> soubor <Jfr> existuje
- d <Jfr> soubor <Jfr> je adres
- f <Jfr> soubor <Jfr> je obyejn soubor
- L <Jfr> soubor <Jfr> je symbolick odkaz
- r <Jfr> soubor <Jfr> je iteln
- S <Jfr> soubor <Jfr> je neprzdn
- w <Jfr> soubor <Jfr> je zapisovateln
- x <Jfr> soubor <Jfr> je spustiteln

Nsledujc pklad ukazuje jednoduch testovn vlastnost soubor. Prvn p


klad ukazuje, e programy t e s t a [ jsou skuten svzny pevnm odkazem, sdlej
toti stejn i-uzel.
116 Kapitola 5. Zklady pfkazovho interpretu

$ /usr/bin/ t e s t - e f /usr/bin/ \ [ l i echo $ ?


O
$ - d - /data l i echo $ ?
O
$ -L - / data l i echo $ ?
1
$ >noVY i [ - f novy 1 && [ novy -nt - / data l i echo $ ?
O

V druhm a tetm ppad byl testovn adres / da t a, v tetm. ppad byl v


-

raz nepravdiv, protoe / da ta nen symbolick odkaz. Jako posledn byl vytvoen
-

nov soubor novy, jeho st bylo porovnno s adresem / data. Na pkladu je -

vidt sloen podmnky pomoc ,, && " .


Pi pouit predikt - nt, - ot je nkdy vhodn elov zmnit as modifikace
souboru. Pokud chce uivatel aktualizovat as souboru, ani by byl mnn jeho obsah,
lze k tomu pout program t ouch <lsouborr>. Je-li program pouit bez dodatench
argument, zmn informaci o modifikaci souboru na aktuln as. Pi pouvn
programu t ouch je dobr dbt obezetnosti, aby nedochzelo k nedoucm asovm
posunm - nkter programy by mohly zat vykazovat zvltnch chovn.

Podmnn pkazy
Zkladn dc konstrukce shellu lze rozdlit do dvou skupin. Prvn skupinu
tvo podmnn pfkaz. Podmnn pkaz slou k podmnnmu vykonn dalch
pkaz. Mezi zkladn podmnn pkazy pat konstrukce
if . .
. then . . . e l se.
Jej syntaxe j e v shellu nsledujc:
i f <l vraz r> ; then <lpkazy r> ; f i
i f <l vraz r> ; then <lpkaZy r> ; e l s e <lalternativa r> ; f i
i f <l vraz r> ; then <lpkazy r> ; <lpodmnky r> <lalternativa r> ; f i
kde <lpodmnkyr> jsou libovoln posloupnost alternativnch podmnek tvaru
e l i f <l vraz r> ; then <lpkazy r> ; . . .
Pkaz i f lze pouvat ve tech variantch. V prvnm ppad je vyhodnocen <l vraz r>,
a je-li pravdiv, jsou provedeny <lpkazyr>. Po jejich dokonen pokrauje shell dalm
pkazem v ad. Druh varianta konstrukce i f pidv alternativn vtev, pkazy
v alternativn vtvi jsou provedeny, prv kdy je <l vraz r> nepravdiv. Tet ppad
pouit je nejkomplikovanj. Mezi pkazy a alternativn vtev se vsouv seznam
dodatench podmnek a pkaz. Shell vyhodnocuje postupn podmnky, a kdy naraz
na pravdiv <l vraz r>, provede adekvtn <lpkazy r>. Po dokonen vech pkaz
je vykonvn podmnnho vrazu ukoneno. V ppad, e nen pravdiv ani jeden
<l vraz r> a podmnn vraz obsahuje alternativn vtev, tato vtev bude vykonna.
Nen-li alternativn vtev ptomna, vykonvn podmnnho vrazu je ukoneno.
Vsledn hodnota pkazu i f zle na vyhodnocen poslednho pkazu v aktivn
vtvi. Nsledujc pklad ukazuje vtven programu.
5.5. dc struktury a zabudovan aritmetika 117

$ i f [ - d - / data ] ; then echo j e to adresar ; f i


j e t o adre sar
$ if [ - L - / data ] ; then
> echo j e to odka z ;
> else
> echo neni to odkaz ;
> fi
n e n i t o odkaz

V prvnm ppad byl testovn adres, v druhm ppad odkaz. Zpis podm
nnho vrazu me bt del, proto je dobr rozdlit jej na nkolik dk. V tomto
ppad shell opt indikuje sekundrnm promptem " > " nutnost dokonen pkazu.
Druhm vznamnm podmnnm pkazem je c a s e . Pkaz c a s e umouje
vykonat pkazy podmnn shodou vstupnho slova s poadovanmi vzory. Pi porov
nvn vzor se pouvaj naprosto stejn pravidla jako pi expanzi neplnho nzvu
souboru. Pkaz c a s e m syntaxi
c a s e <J slovo r> in <J vtve r> e s a c

kde <! vtve r> tvo neprzdnou posloupnost tvaru


<J vzory r <Jpfkazy r> ; ; . . .
a <J vzory r> reprezentuj seznam monch vzor oddlench metaznakem " I ".
Pi vyhodnocen pkazu case se nejprve vyhodnot argument <J slovo r>. Dle jsou
testovny vechny vtve a <Jslovo r> se porovnv s jednotlivmi vzory. Odpovd-li
v dan vtvi alespo jeden vzor, jsou vykonny <Jpfkazy r> a pot je tlo pkazu opu
tno a shell pokrauje dalm pkazem. Jeliko se porovnv slovo se vzorem, nen
problm umle vytvoit alternativn vtev pomoc vzoru * ) , jemu odpovd libovoln
slovo. Alternativn podmnka vak mus bt uvedena jako posledn, vechny vtve
uveden za vzorem * ) by byly nedosaiteln. Pouit pkazu c a s e demonstruje
pklad.
$ SLOVO= tucnak
$ case $ SLOVO in
> ahoj l svet e ) echo cast pozdravu ; ;
> t * ) echo s l ovo z ac ina na \ ' t \ , ; ;
> * ) echo coko l iv j ineho ; ;
> esac
s l ovo zac ina na ' t '

Vstupn slovo tucnak se shoduje s druhm vzorem t * . Oba podmnn pkazy


i f i c a s e jsou ukoneny obrcenm klovm slovem, to jest f i a e s a c .

Pkazy cyklu
Pkazy cyklu slou k iterativnmu zpracovn posloupnosti pkaz. Iterace je
zpravidla zastavena, je-li dosaeno limitn podmnky. Shell umouje pst i cykly bez
118 Kapitola 5 . Zklady pfkazovho interpretu

limitn podmnky, jejich vyuit ale nen tak irok - hod se pro cyklickou obsluhu
nebo neustl zpracovn dat. V shellu jsou k dispozici pkazy for, whi l e a unt i l .
Pkaz f o r slou k iteraci pfes mnoinu, dal dva pkazy slou k iteraci limitovan
podmnkou. Pkazy maj nsledujc syntaxi:
for promnn c> in seznam c> i do pfkazy c> i done
whi l e vraz c> i do pfkazy c> i done
unt i l vraz c> i do pfkazy c> i done

Nejdv rozebereme pkaz for. Jako prvn se expanduje seznamc>. Pkaz for s ex
pandovanm seznamem zachz podobnm zpsobem jako shell s argumenty p
kazu, jednotliv hodnoty jsou oddleny metaznakem mezera. Pro kad prvek ze
seznamu seznam c> je provedeno tlo cyklu, to jest pfkazyc>. Pokud je sezna m c>
przdn, tlo nikdy neprobhne. Vnitn pkazy s e mohou odkazovat n a aktul
n hodnotu, pro kterou je aktuln fze iterace provdna. K tomuto elu slou
promnn c>. Ped vykonvnm pkaz cyklu je vdy promnn c> nastavena na
hodnotu prvnho prvku ze seznamu. Pi dalm prchodu je promnn navzna na
nsledujc hodnotu.
Pi volb jmna promnn je dobr mt na pamti, e pkaz f o r probh v aktul
nm shellu. Z hlediska rozsahu platnosti jsou v shellu vechny promnn globln. Pi
zapoet prchodu cyklem bude na promnnou navzna hodnota a jej pvodn
obsah bude ztracen. Promnn bude po dokonen cyklu obsahovat hodnotu posled
nho prvku ze seznamu. Pro promnn v cyklu je vhodn volit jmno skldajc se
z malch psmen, vtina promnnch shellu se skld z velkch psmen, proto s nej
vt pravdpodobnost nedojde ke ztrt dn hodnoty. Zkladn chovn pkazu
demonstruje jednoduch pklad.
$ for i in 1 2 3 ; do echo aktualni c i s l o : S i ; done
aktua l n i c i s l o : 1
aktua l n i c i s l o : 2
aktua l n i c i s l o : 3

V tto ukzce seznam hodnot sestv ze t sel. V tle cyklu je provdn pkaz
spoutjc program e cho. Pi kadm prchodu cyklem byla promnn i dereferen
covna pomoc metaznaku ,, $ " . Cykly lze samozejm vnoovat. V takovm ppad
je nutn, aby vechny promnn pouit v cyklech byly navzjem rzn. Obzvl
vhodn je kombinovat cykly s podmnnmi pkazy.
Pro ilustraci je uveden pklad, ve kterm jsou postupn testovna sla ze sou
boru. Bhem cyklu se iteruje pes hodnoty uloen v souboru, to lze zajistit substituc
pkazu c a t . Kad slo je otestovno na prvoselnost, k tomu byl pouit program
c a l c a jeho vnitn funkce i sp rime ( ) . Funkce i sp r ime ( ) vype na vstup 1
v ppad spchu, O v ppad nespchu. Nejedn se vak o nvratovou hodnotu,
ale o vstup. Pomoc pkazu i f je vstup porovnn s slem O a program vype
informace, zdali je zkouman slo prvoslem.
$ for i in ' cat c i s l a . txt ' ; do
> RESULT= ' echo " i sprime ( $ i ) " I calc ' ;
> i f [ $RESULT - g t o ] ; then
> echo $i j e prvoc i s l o ;
> fi ;
> done
2 je prvoc i s l o
3 je prvoc i s l o
5 je prvoc i s l o
7 je prvoc i s l o

Pouit shellovskho pkazu pi een "matematick lohy" nen pli typick,


i kdy je to mon. Vsledn kd vak bude vrazn pomalej, ne kdyby jej autor
napsal napklad v jazyku C. Clem pedchzejcho pkladu vak bylo ukzat mon
zpsob vyuit cyklu v kombinaci s dalmi obslunmi programy.
V pedchozm pkladu byla uprosted bloku pouita dal promnn jmnem
RESULT. Plat pro ni stejn pouka jako pro promnnou uvedenou za klovm
slovem for. Jej hodnota bude zachovna i po oputn cyklu. Toto pravidlo plat
i pro promnn definovan uprosted pkaz v podmnnch vrazech. Hodnota
promnn RESULT me bt samozejm zmnna pkazem piazen.
Dalm zajmavm a typickm pouitm pkazu f o r je napklad hromadn
pejmenovn soubor. Uvaujme napklad soubory zakonen YYMM, kde YY re -

prezentuje dvojcifern oznaen roku a MM dvojcifern oznaen msce. Jeliko je


dvojcifern slovn roku neprozrav, meme se rozhodnou vechny soubory pe
jmenovat do tvaru zakonenho YYYYMM. To jest budeme chtt oznaovat daj o roku
-

tycifernm slem. Problm lze vyeit napklad takto:


$ for i in * - [ 0 - 9 ] [ 0 - 9 ] [ 0 1 ] [ 0 - 9 ] ; do
> NEWNAME= ' echo $ i I sed ' s / - \ ( [ A - ] * \ l $ / - 1 9 \ 1 / " ;
> mv $ i $NEWNAME ;
> done

Akoliv vypad druh dek pkazu ponkud bizarn, ve skutenosti je mno


hem mn imponujc, ne jak na prvn pohled vypad. Jedn se o substituci pomoc
regulrnho vrazu. Zjednoduen eeno, pomoc voln programu s e d bylo mezi
posledn pomlku v nzvu kadho souboru vloen dvojsl 1 9 . Bli popis regu
lrnch vraz a programu s ed je k nalezen v kapitole 6.2. Akoliv pedchoz pklad
vypad komplikovan, jeho vytvoen autorovi zabralo necelou minutu i s otestov
nm funknosti. Zvate, jak dlouho by vyeen podobnho problmu trvalo v jinch
systmech.
Pkazy cyklu whi l e a unt i l funguj analogicky. Odlin jsou pouze v chpn
limitn podmnky cyklu. Na zatku pkazu whi l e je testovna limitn podmnka,
kterou reprezentuje <JVraz r>. Je-li <J vraz r> pravdiv, jsou vykonny pkazy a iterace
se opakuje. Opt je testovna limitn podmnka a tak dle. Pokud je <J vraz r> vdy
pravdiv, pkaz me uvznout v nekonenm cyklu. K okamitmu oputn cyklu
slou pkaz break. Pomoc pkazu cont inue lze peskoit zbytek tla cyklu
a pokraovat dal iterac. Pkaz unt i l se li od pkazu whi l e pouze v interpretaci
limitn podmnky. Tlo cyklu unt i l je vykonvno, dokud je <J vraz r> nepravdiv.
120 Kapitola 5. Zklady pkazovho interpretu

Pouit pkazu whi l e demonstruje pklad.

$ - /data/archivuj & echo $ 1 > - / . running . pid


[1] 9221
$ whi l e ki l 1 - S IGCONT ' cat - / . running . pid ' &>/dev/nu1 l ; do
> echo ' proce s st a le be z i ' I mai l novakj @phoenix . inf . upol . c z ;
> s l eep 6 0 0 ;
> done &

[1] 9222

V pkladu byl nejprve sputn proces archivuj , jeho PID byl uloen do sou
boru na disk. Cyklus whi l e byl rovn sputn na pozad. Cyklus probh, dokud
proces archivuj b. Existence procesu je testovna zaslnm signlu SIGCONT.
Tento signl nezpsob peruen bhu programu. Na druhou stranu, pokud by ji
proces nebel, program k i l l skon nespchem a cel cyklus se zastav. V tle
cyklu je nejprve zasln dopis uivateli pomoc obslunho programu ma i l, kter
oznamuje, e proces pod b. Na dalm dku je proces pozdren o deset minut.
Tento pklad opt ukazuje jednoduch problm jednodue vyeen pomoc shellu.

Zabudovan aritmetika
V pedchozch programech byl pro vpoet jednoduchch aritmetickch vraz
pouit program c a l c . Jedn se o pomrn mocn program umoujc provdt v
poty se stanovenou pesnost. Nen vzan na implementaci datovch typ zabudo
vanou v procesoru. Pro jednodu vpoty lze vyut vyhodnocovn aritmetickch
vraz zabudovan v shellu. Shell podporuje pouze celoselnou aritmetiku, k dis
pozici jsou zkladn aritmetick operace, operace pro bitov posuvy, logick a bitov
operace a ternrn podmnn opertor. Syntaxe operac je pevzata z jazyka C.
Kad aritmetick vraz v shellu m syntaxi $ [ <J vraz ] , kde <J vraz me bt
sloen z konstant, dereferenc a ppustnch operac. Pokud je <J vraz syntakticky
sprvn, je vyhodnocen a vsledek je pedn na vstup. Dal pkaz umoujc vy
hodnotit aritmetick vraz je l e t . Pkaz l e t vak na vstup nevypisuje vslednou
hodnotu. Vypotenou hodnotu je mon piadit promnn pomoc piazovacho
pkazu. Viz pklad.

$ N= 1 2 3 4 5
$ N= $ [ $N* 2 ]
$ M= l 2 3 4 5
$ l e t M* = 2

Druh tvar zpisu je krat, je v nm pouit opertor piazen nsobku " * = " . Stej
nho efektu by bylo dosaeno pouitm pkazu l e t M = $ M * 2 . Prvn tvar je vhodn
pouvat v ppad, kdy je poteba vytisknout pouze vsledek vrazu, ale nen po
teba mnit obsah dn promnn. Soupis vech operac vetn jejich priorit a po
pisu lze najt v zabudovan npovd shellu, pro detaily viz npovdu zobrazenou
pkazem he lp l e t .
5. 6 . Vytven skript 121

5.6. Vytven skript


Pi vytven sloitjch pkaz v shellu uivatel dve i pozdji naraz na po
tebu uchovat je pro dal pouit. I pi psan pkaz ecch jednorzov problmy
me bt vhodn uloit je na disk a dle je pouvat jednoduchm zpsobem. Msto
opakovanho vypisovn pkaz me dt uivatel shellu pokyn k vykonn p
kaz uloench v externm souboru. Pkazy pro shell mohou bt uloeny buto ve
spustitelnm souboru, nebo souboru bez prva spoutn. Zahjen vykonvn pkaz
uloench v souboru se v tchto dvou ppadech li.
V pedchozch kapitolch byl uveden zkladn pkaz pro sputn programu.
Pod pojmem program byl doposud uvaovn soubor obsahujc instrukce pro pro
cesor. Soubor s instrukcemi pro procesor je na prvn pohled neiteln a zpravidla je
vytvoen pekladem ze zdrojovch kd ve vym programovacm jazyku, napklad
v jazyku C. Naproti tomu soubor obsahujc pkazy pro shell je dobe iteln. Je<;in
se o textov souboru obsahujc pkazy ve stejn podob, jako jsou zadvny pmo
v pkazovm dku shellu. Spustiteln soubory tedy dlme do dvou skupin pro -

gramy a skripty.
Skripty jsou obyejn soubory obsahujc pkazy pro shell. Pojem skript nen tsn
vzan jen k shellu. V prosted Unixu se obecn mluv o skriptech jako o souborech
obsahujcch pkazy interpretovan jinm programem. Nejastji vak shellem. Jeli
ko mohou bt skripty interpretovny rznmi programy, dl se jejich obsah na dv
sti hlaviku a tlo. Hlavika skriptu je nepovinn, lze pomoc n deklarovat pro
-

gram, jen bude skript interpretovat. Nen-li hlavika uvedena, skript je implicitn
interpretovn aktulnm shellem. Tlo skriptu obsahuje vlastn pkazy.
M-li skript nastaven prvo spoutn, uivatel jej me spustit stejnm zpso
bem jako program. To jest, le-li skript v adresi, na nj je nastavena prohledvac
cesta, sta uvst jmno skriptu. Nenachz-li se skript v prohledvac cest, je nutn
odkzat se na nj pomoc relativn nebo absolutn cesty. Pi poadavku na sputn
souboru shell nejprve analyzuje, zdali se jedn o program nebo skript. Pokud je sou
bor skript, shell analyzuje jeho hlaviku a najde pslun interpret skriptu. Pot je
vytvoen nov proces interpret a skript je mu pedn jako vstupn argument. Nen-li
-

hlavika uvedena, skript je interpretovn vnoenm shellem.


Hlavika skriptu m tvar

# ! <l interpret r> <largumenty r>

kde <l interpret r> je absolutn cesta k interpretu skriptu. Metaznak hash ,,# " m v shellu
speciln vznam. Jedn se o metaznak oddlujc koment. Naraz-li shell pi inter
pretaci pkazu na metaznak ,, # " , zbytek dku ignoruje a pokrauje zpracovnm
dalho dku. Je-li na prvnm dku skriptu dvojice ,,# ! " tsn nsledovan abso
lutn cestou k interpretu, jedn se o hlaviku skriptu. Za cestou k interpretu mohou
bt uvedeny i argumenty, se ktermi m bt interpret sputn.
Pro mus bt pro identifikaci interpretu uvedena absolutn cesta? Odpov na
tuto otzku me bt ponkud pekvapujc. Pojmy relativn cesta a prohledvac cesta
jsou tsn vzny k shellu. Bez existence shellu nemaj vznam. Prohledvac cesta
122 Kapitola 5. Zklady pfkazovho interpretu

i pracovn adres jsou v shellu reprezentovny pouze dvma promnnmi PATH -

a PWD. Na druhou stranu, absolutn cesta je pojem nezvisl na shellu, jej exis
tence vyplv z architektury souborovho systmu. V Unixu mohou bt programy
spoutny i jinak ne z shellu, napklad pomoc sprvce oken v grafickm rozhran
X Window System. Z tohoto dvodu by nebylo dobr skripty tsn vzat na konkrtn
prosted, z kterho mohou bt spoutny.
Uivatel me vytvoit skript napklad pomoc programu e a t .
$ cat >sklerotik
echo Jsi na s t roj i ' ho s tname '
echo Jmenuj e s s e $USER
echo Jsi v adresari ' pwd '
I CTRL-D I
$ cat >dog
# ! /usr/bin/perl
print whi l e ;
I CTRL-D I
V praxi se pro vytven skript pouvaj speciln programy pro pravu obsahu
textovch soubor textov editory. Zpracovn textu bude vnovna samostatn ka
-

pitola. V ukzce uivatel vytvoil dva skripty. Prvn skript s k l e rot i k je uren pro
shell, nem hlaviku a slou k vpisu zkladnch informac na obrazovku. Absence
hlaviky m v shellu stejn efekt, jako by ji uivatel uvedl ve tvaru # ! / b i n / sh.
Druh skript dog obsahuje hlaviku s interpretem /usr / b i n / pe r l . Jazyk PERL
vyvinul Larry Wall a pvodn byl uren pro zpracovn textovch12 soubor. PERL
je velmi siln jazyk, ve uveden jednodkov skript me slouit jako nhrada
programu e a t . V praxi je dobr jednotliv skripty zakonovat "pponou", charak
terizujc interpret skriptu. Napklad skripty shellu bvaj zakoneny sh, skripty .

jazyka PERL p l , skripty jazyka Python py, skripty jazyka Tcl/Tk t e l a po


. . .

dobn1 3 .
Dalm krokem je nastaven prv a sputn skript.
$ chmod 7 5 5 sklerotik dog
$ . / sklerotik
J s i na s t roj i phoenix
Jmenuj e s s e novakj
Jsi v adre sari / home / s tudent / inf 9 7 / novakj
$ . /dog . fvwmrc I wc - 1
291

Pedchoz metoda sputn skriptu s sebou nese vznamn rys. Shellov skript
je vdy sputn v podzenm shellu. To mimo jin znamen, e hodnoty promn
nch, kter nebyly exportovny, nebudou ve sputnm skriptu dosaiteln. Rovn
1 2 pERL znamen Practica/ Extraction and Report Language.
1 3pokud vs udivuje mnostv rznch programovacch jazyk, pak vzte, e vyjmenovan jazyky tvo
jen zlomek dostupnho softwarovho vybaven. Obecn plat zsada, e volba jazyka by mla nsledovat
a po analze problmu, nikoliv pedem. Soust softwarovho vybaven GNU je mnostv interpret
a peklada rznch jazyk, z nich nkter jsou zce specializovan.
5.6. Vytven skript 123

zmny v nastaven promnnch budou po dokonen skriptu zapomenuty. Skripty


pro shell lze spoutt i jinm zpsobem. Pouijeme-li speciln pkaz shellu ve tvaru
. u<J souborr>, shell bude st postupn vechny dky z danho souboru a kad pro
vede v aktulnm shellu.
, Rozdl obou pstup je jasn. Pi sputn skriptu pomoc tekov notace se
jakkoliv zmny ve stavu promnnch promtnou do aktulnho shellu. Nsledujc
pklad nzorn ukazuje rozdl.
$ cat >prvni && chmod 7 5 5 prvni
echo -n $A ' , ' ; l e t A* = l O ; echo $A
I CTRL-D I
$ A= 1 0 && . /prvni
, O
$ . prvni && echo $A
10 , 100
100
$ export A & & . /prvni & & echo $A
100 , 1000
100
Pi prvnm sputn skriptu nebyla pedna hodnota, jeliko promnn nebyla
exportovna. Dal sputn ji probhlo pomoc tekovho pkazu, z pkladu je
vidt, e se zmnila hodnota promnn A na 100. Pi tetm sputn byla promnn
exportovna, skript naetl jej hodnotu, ale po jeho ukonen nebyla hodnota pro
mnn zmnna. Zmna probhla pouze na lokln rovni v podzenm shellu.
K pkladu dodejme, e argument -n programu echo potlauje pechod na nov
dek, proto jsou na vstupu hodnoty tisknuty vedle sebe.

Pedvn argument
Skriptm lze stejn jako programm pedvat argumenty. Uvnit skriptu pro
shell lze pedan argumenty st pomoc promnnch specilnho vznamu. Tyto
promnn jsou samozejm pouze pro ten. K argumentm je mon pistupovat
dvojm zpsobem. Buto jsou zpracovny jednotliv, nebo jako celek. Nsledujc
tabulka obsahuje promnn specilnho vznamu, pomoc kterch lze st argumenty
skriptu.
promnn vznam
$0 jmno skriptu
$n n-t argument, n nabv hodnot 1 , . . . ,9
$ {n} libovoln n-t argument
$# slo poslednho argumentu
$* seznam vech argument
$@ seznam vech argument

Promnn $ O reprezentuje nult argument, to jest samotn nzev programu v podob,


ve kter byl sputn. Nult argument tedy obsahuje i ppadnou absolutn nebo rela
tivn cestu zadanou uivatelem na pkazovm dku. Pomoc promnn $ # lze zjistit
1 24 Kapitola 5. Zklady pfkazovho interpretu

aktuln poet argument. Promnn $n odkazuj na prvnch devt argument, pro


mnnmi ve tvaru $ { n } se lze odkazovat i na dal promnn, napklad $ { 1 3 } vrac
hodnotu tinctho argumentu. Pokud by slo nebylo uzaveno ve sloen<;h zvor
kch, shell by vraz interpretoval jako dereferenci prvnho argumentu a zetzen se
znakem ,, 3 " .
Pokud chce uivatel pracovat se vemi argumenty souasn, me pout pro
mnn $ *, $@. Tyto dv promnn se odliuj svou interpretac v uzvorkovanm
vrazu.
" $ * " j e ekviva l entn " $ 1 $ 2 $ 3 . . . "
" $ @ " j e ekviva l ent n " $ 1 " " $ 2 " " $ 3 "
V ppad promnn $ * vechny mezery reprezentuj znaky, kdeto v ppad $ @
mezery figuruj v roli metaznak. Z toto plyne, e pokud bude v e skriptu voln
program, ktermu budou dle pedvny vechny argumenty, mly by bt pedny
pomoc promnn $@. Viz pklad.
$ cat >prvni && chmod 7 5 5 prvni
echo $0 $ # ; echo $1 $ 3 ; echo $@
I CTRL-D I
$ . /prvni ab cd e f
. /prvni 3
ab e f
a b cd e f

Dereferenci ve tvaru $ { n } lze pout pouze v shellu GNU Bash. V Boume Shellu
lze pi vtm mnostv argument pout pkaz shi f t <l n t>, kde <l n t> je pirozen
slo reprezentujc poet odstrannch argument. Pkaz shi f t slou k odstrao
vn prvnch <l n t> argument. Jsou-li prvn argumenty odstranny, lze se pomoc
promnn $n odkazovat na pedtm nedostupn argumenty. Pokud je napklad po
uit pkaz shi ft 2, potom bude $ 1 ukazovat na tet argument. seln argument
me bt u pkazu shi f t vynechn pln, v tom ppad je odebrn pouze prvn
argument. Viz pklad.
$ cat >ods tran && chmod 7 5 5 ods tran
echo $ @ ; shi f t ; echo $ @ ; shi f t 3 ; echo $@
I CTRL-D I
$ . /ods tran a b c d e f 9 h
a b c d e f 9 h
b c d e f 9 h
e f 9 h

Pi pouvn pkazu shi f t je nutn dvat pozor na jednu okolnost. Argumenty


odstrann pomoc shi f t ji nelze nijak "vrtit zpt".

Interaktivn skripty
Obas je dobr poskytnout uivateli monost vkldat hodnoty pmo pi bhu
skriptu. Instalan skripty dodvan s nktermi programy se napklad uivatele
5.6. Vytven skript 125

ptaj na clov adres nebo na informace o rozsahu instalace. K interaktivnmu


nastaven obsahu promnn slou pkaz read. Argumentem pkazu read je pro
mnn, do kter se m uivatelsk vstup uloit. Pi zadvn citlivch informac
me skript vhodnm volnm programu s t ty potlait vpis znak na terminl.
Nsledujc ukzkov skript podal uivatele o zadn jmna a hesla. Viz pklad.

$ cat >prover && chmod 7 5 5 prover


echo - n ' Vl o z t e j meno : ' && read NAME
s t ty - echo
echo -n ' Vl o z t e hes l o : ' && read PAS S
s t ty echo
echo ; echo ' Vl o z ene udaj e : ' $NAME $ PASS
I CTRL-D I
$ . /prover
Vl o z t e j meno : z i z alka
Vl o z t e he s 1 0 :
. . .
tady heslo nen vidt
V l o z ene udaj e : z i z a l ka ak l a z i z

Na poslednm dku skriptu j e pouit program echo bez argument. V tomto


tvaru provede e cho pouze pechod na nov dek. Pechod na nov dek je poteba
udlat, jeliko doasn vypnut vpisu na terminl pomoc s t ty - e cho zpsob
potlaen vpisu vech znak, tedy i ukonovacho znaku "nov dek". Pomoc
s t ty e c ho je opt obnoveno pvodn nastaven terminlu.
V kapitole 5.4. byl citovn speciln pkaz shellu s e l e c t . Pkaz slou ke zjed
noduen vytven interaktivnch skript. Jeho syntaxe je sten podobn syntaxi
cyklu f or. Uivatel pi pouit pkazu specifikuje seznam nabdek. Seznam nabdek
je pi vykonvn pkazu zobrazen a uivatel je vyzvn k vbru. V tle pkazu
s e l e c t lze kontrolovat prbh vbru - napklad lze dodaten testovat zakzan
volby a vydat si novou volbu. Syntaxe pkazu s e l e c t je nsledujc.
s e l e c t <Jpromnn r> in <J nabdky r> i do <Jpkazy r> i done

Nabdky jsou definovny seznamem slov <J nabdky r>. Slova v seznamu jsou oddlena
metaznakem mezera. Pi proveden pkazu je nejprve shellem zobrazen jednoduch
uivatelsk vbr obsahujc slova z nabdky. Kad slovo je umstno na samo
statnm oslovanm dku. Za seznamem vech slov je zobrazen prompt pkazu
s e l e c t , tvar promptu je uloen v promnn PS 3 . Prompt uivatele vyzv k odpo
vdi. Uivatel me zadat buto slo uveden ve vbru, nebo me zadat zcela
jinou hodnotu. V obou ppadech je hodnota vloen uivatelem uschovna do pro
mnn REPLY a pot jsou vykonny <Jpkazy r>. Pokud je vloen hodnota slem
existujc poloky z nabdky, <Jpromnn r> je navzna na selnou hodnotu vbru.
Pokud nen mezi <Jpkazyr> proveden pkaz break nebo return, vbr se opt
opakuje. Dky opakovn vbru lze v tle pkazu s e l e c t oetovat nevhodn
volby.
Monosti zen vbru demonstruje piloen pklad. V pkladu je tlo p
kazu oputno pouze v ppad volby jedn se zobrazench alternativ. Pokud nen
alternativa sprvn zadna, pkaz opt zobraz nabdku a ek na dal vstup.
126 Kapitola 5. Zklady pfkazovho interpretu

$ s e l e c t 1 1n pivo vino ; do
> echo " odpoved : $REPLY , hodnota : $ i "
> i f [ - n " $ i" l ; then
> break ;
> fi
> done

V tle pkazu s e l e c t je promnn REPLY vdy navzna na hodnotu uiva


telskho vstupu, a to i v ppad, e vstupem nen slo dn z voleb. Naopak
promnn i bude navzna na hodnotu pouze v ppad, kdy uivatel zad slo
existujc alternativy. Na zklad hodnoty promnn i lze jednodue rozhodnout,
zdali volbu zopakovat, i ne. Obsah promnnch RE PLY a i zstane definovn sa
mozejm i po oputn pkazu vbru. Vykonnm uvedenho pkazu uivatel
obdr nsledujc nabdku a odezvu.
1 ) p ivo
2 ) vino
# blahblah
odpoved : b l ahb l ah , hodnota :
1 ) p ivo
2 ) vino
# 2
odpoved : 2 , hodnota : vino

Uivatelsk funkce
Shell umouje vytvet uivatelskfunkce. Uivatelsk funkce je znovupouiteln
sekvence pkaz, kter lze v shellu pfedvat argumenty. Funkce me explicitn urit
svou nvratovou hodnotu. Oproti vykonvn skript jsou funkce mnohem efektiv
nj. Shell si funkce udruje pedzpracovan v pamti a jejich proveden je znateln
rychlej. Syntaxe funkce v shellu je podobn funkci v jazyku C.
<l nzev l> ( ) {
. . . tlo funkce . . .

Za nzvem funkce mus bt uveden metaznak " ( ) " . Pomoc nj shell zjist, e se jedn
o funkci, a dle si uchov tlo funkce ve svch internch strukturch. Tlo funkce se
stv z pkaz pro shell. Funkce je vdy vyhodnocovna v aktulnm shellu, proto
veker zmny hodnot promnnch proveden v tle funkce se okamit promtnou.
Funkce me vracet hodnotu pomoc pkazu return <l n I>, kde <l n I> je nvratov
hodnota. Pkaz re t urn zpsob okamit nvrat z funkce a nastav obsah promnn
$ ? na <l n I>. Nen-li pkaz return uveden, je nvratov hodnota funkce rovna n
vratov hodnot poslednho pkazu. Pokud by byl pro nvrat z funkce pouit pkaz
exi t, dolo by k ukonen celho shellu.
Funkci lze pedat vstupn argumenty. V tle funkce se na n lze odkazovat pomoc
formlnch argument identickm zpsobem jako v ppad argument pedva
nch skriptu. Viz pedchoz text. Nsledujc pklad ukazuje definici jednoduch
funkce zobrazujc velikost soubor.
5.6. Vytvfen skript 127

$ ve l i ko s t ( l {
> for i in $ @ ; do
> i f [ - f $ i ] ; then
> echo Soubor $ i ma vel ikos t $ ( cat $ i I wc - c l
> else
> re turn 1 ;
> fi
> done
> return O ;
> }
Nyn zbv provst voln funkce. Voln funkce je syntakticky stejn jako pkaz
pro sputn programu nebo skriptu. Nejprve je uvedeno jmno funkce, za nm
mohou nsledovat argumenty.
$ vel ikos t - / . fvwmrc - / . bash_hi s tory
Soubor / home / s tudent / i nf 9 7 / novakj / . fvwmrc ma ve l ikost 8 5 1 5
Soubor / home / s tudent / i nf 9 7 / novakj / . bash_hi s t ory ma ve l ikost 6 3 3 0

Definice funkce je opt lokln, pro jej penesen do vnoench shell je poteba
pout pkaz export .

Standardn vstup z tla skriptu


Poslednm zastavenm u tmatu vytven skript je pfesmrovn standardnho
vstupu programu z tla skriptu. Akoliv me tento typ pesmrovn vypadat po
divn, jedn se o velmi asto pouvanou programtorskou techniku. Metaznak ,, < < "
slou pro pesmrovn vstupu z tla skriptu. Je-li metaznak ,, " pouit, vstupn
data pro volan program nejsou zadvna ani z terminlu, ani ze souboru, nbr
pmo z sti tla skriptu. Syntaxe pi tomto druhu pesmrovn je trochu jin, ne je
zvykem.
<lpfkaz l> <l omezoval>
. . . vstupn data . . .
<l omezova I>
Pkaz me mt samozejm dal argumenty nebo me bt napklad spojen rou
rou s dalmi programy. Zvltn roli pi specifikaci pesmrovn hraje <l omezoval>.
Omezova je libovoln sekvence znak stojc bezprostedn za metaznakem ,, " .
Pomoc omezovae shell pozn, kde vstupn data kon. Po sputn procesu shell
pedv na jeho standardn vstup data, kter se nachzej mezi nsledujcm dkem
a prvnm vskytem omezovae. Omezova mus bt uveden na samostatnm dku
ve stejnm tvaru jako za metaznakem " < < " .
Je-li omezova definovn v uvozovkch, to jest ve tvaru " <l omezovaI> " , shell ne
provd dereferenci promnnch ve vstupnch datech. V jinm ppad je dereference
provedena. Expanze se neprovd nikdy. Pesmrovn vstupu z tla skriptu se po
uv napklad ve skriptech generujcch konfiguran soubory. Pi psan skriptu
se konfiguran soubor pe pmo do jeho tla a mnc se hodnoty jsou zskvny
dereferenc z promnnch. Pro ilustraci je uveden pklad.
128 Kapitola 5. Zklady pfkazovho interpretu

$ cat >zobraz - info && chmod 7 5 5 zobraz - info


cat EOF
Jmenuj i se $USER , muj UID j e $UID .
Jsem v adresari $ PWD .
EOF
I CTRL-D I
$ . / zobraz - info
Jmenuj i s e novakj , muj urD j e 1 0 4 5 .
Jsem v adre sari / home / s tudent / i nf 9 7 / novakj .

Jeliko byl omezova EOF definovn bez uvozovek, dolo k dereferenci promn
nch USER, UID a PWD. Pouit pesmrovn standardnho vstupu z tla skriptu bylo
v pedchozm pkladu v podstat neeln. Tho efektu bychom mohli doshnout
kombinac dvou pkaz sputn e cho. Efekt pesmrovn z tla skriptu je zejm,
jsou-li vstupn data vc strukturovan nebo pokud jsou dle skriptem zpracovvna.
Viz pklad.
$ cat >vs tup && chmod 7 5 5 vs tup
cat EOF I tee zalohuj . txt
Jsem v $ PWD
EOF
I CTRL-D I
$ . /vs tup
Jsem v / home / s tudent / i nf 9 7 / novakj

V pedchoz ukzce byl standardn vstup pro program eat pesmrovn z tla
skriptu. Navc byla vytvoena kolona mezi producentem e a t a konzumentem t e e .
To jest krom vypsn hlen n a obrazovku bylo tot hlen uloeno i d o souboru
z a l ohuj . txt .

5.7. Poten nastaven shellu


Shell bash pi svm startu vykonv pkazy v inicializanch skriptech. kolem
inicializanch skript je nastavit promnn prosted na vhodn hodnoty a pro
vst zkladn pizpsoben shellu loklnm elm. Inicializan skripty mohou
bt buto systmov, nebo uivatelsk. Hlavnm inicializanm skriptem shellu je
l e t e /pro f i l e . Jednotliv uivatel si rovn mohou ve svch domovskch ad
resch definovat vlastn startovac skripty. Inicializan skripty jsou vykonvny
v pevn danm poad. Poad vykonvn skript je dno reimem sputn shellu .
Shell me bt sputn ve tech zkladnch reimech .
Pfihlaovac shell je sputn po pihlen uivatele do systmu. Explicitn lze
spustit shell jako pihlaovac pomoc argumentu - - l og in. Pihlaovac shell
nejprve vykon pkazy ze souboru l e t e /pro f i l e . Po dokonen posled
nho pkazu nebo v ppad nenalezen souboru shell vykonv uivatel
sk inicializan skripty. Shell postupn zkou vykonvat pkazy ze soubor
-I bash-prof i l e, I bash_login a souboru I prof i l e . Pkazy v prv
. - . - .

nm nalezenm souboru jsou provedeny, obsah ostatnch soubor je ignoro-


5. 7. Poten nastaven shellu 129

vn. Ped odhlenm uivatele ze systmu se provedou pkazy ze skriptu


-/ bash_l ogout, pokud je skript nalezen.
.

Interaktivn shell m standardn vstup a vstup spojen s terminlem. Interaktivn


shell, kter nen pihlaovac, nejprve zdd exportovan promnn po svch
rodich. Potom vykon pkazy ze souboru / bashrc. Vykonn pkaz
- .

z tohoto souboru lze potlait pomoc pepnae - - norc. Alternativn nzev


pro inicializan soubor lze definovat argumentem - - rc f i l e <J souborl>.

Neinteraktivn shell je shell bez spojen s terminlem. Neinteraktivn shell nepou


v ani systmov, ani uivatelsk inicializan skripty. Shell podd promnn
z rodiovskho shellu, pot se sna dereferencovat promnnou BASH _ ENV.
Obsah tto promnn je chpn jako inicializan soubor, je-li nalezen, zane se
vykonvat. Pi hledn inicializanho souboru ale nen pouita cesta.
Pihlaovac shell je specilnm ppadem interaktivnho shellu. Zde je pihlaovac
shell uveden jako speciln kategorie, protoe pi startu provd inicializan skripty
odlinm zpsobem.

Uivatelsk limity
Pkaz ul imi t slou v shellu k nastaven uivatelskch limit. Vhodnm nastave
nm limit lze omezovat procesy spoutn ze shellu. Napklad pi programovn
paralelnch program je mon pedchzet pehlcen systmu nastavenm limitu ma
ximlnho potu proces spustitelnch z shellu. Systmov limity lze vypsat pomoc
pkazu u l imi t - a.
Z uivatelskho hlediska je zajmav nastavit maximln velikost souboru core.
Pokud uivatel systmu neprovd ladn program, je praktick, aby systm nevy
tvel soubory core vbec. Naopak pi ladn je jejich vytven takka nepostra
dateln. Pkazem ul imi t - c <J velikost l> lze nastavit maximln velikost souboru
core v blocch. Jeden blok odpovd 512 B.

Pouvn alias
V inicializanch skriptech bvaj asto nastavovny aliasy. Alias je apart umo
ujc zavdt pkazm shellu nov jmna. Nejastji se aliasy pouvaj k zastoupen
pkazu sputn programu. Pokud alias definuje pkaz sputn programu, je samo
zejm mon u volanho programu pouvat i argumenty. Alias lze zavst pkazem
a l i a s, zruen aliasu se provd pomoc una l i a s .

a l i a s <J nzev l> = <J vraz l>


una l i a s <J nzev l>

kde <J nzev I> je nzev pro alias, <J vraz I> je libovoln etzec znak. Pokud je v pkazu
pro shell na prvnm mst uvedeno jmno aliasu, shell jej expanduje na <J vraz 1>.
Na ostatnch mstech pkazu expanze alias neprobh. Aliasy si uivatel definuj
130 Kapitola 5. Zklady pfkazovho interpretu

zpravidla v souboru - / . bashrc. Mezi asto nastavovan aliasy pat napklad


pouvn barev v programu l s a syrov vpis binrnch dat v programu l e s s . Viz
ukzku.
$ cat - / . bashrc
a l i a s l s = ' l s - - ce l er - F '

alias less= ' less - r '

Barevn vpis soubor slou k jednodu orientaci. Barvy jednotlivm soubo


rm lze pidlovat i na uivatelsk rovni napklad uvedenm poadovan barvy
pro nepln jmno souboru. Informace o stylu vypisovn soubor jsou uloeny
v promnn LS COLORS. Obsah promnn LS _ COLORS zpravidla nen nutn mnit
_

pmo, v systmu slou k pohodlnmu nastaven barev program d i r c o l o r s . Pro


detaily viz jeho manulovou strnku.
Regulrn vrazy hraj vznamnou roli v teoretick informatice, ale
i v jejch aplikacch. V programech pracujcch s textem je uiva
telUm obvykle umonno prohledvat text pomoc vzor . Pomoc
regulrnch vraz je mon takov vzory snadno a ve/mi efektivn
definovat. Nstroje znm z operanho systmu Unix, jako jsou pro
gramy AWK nebo GREp, modern programovac jazyky, napklad
PERL, a samozejm i textov editory, vechny podporuj vyhled
vn v textu a nahrazovn podetzc pomoc regulrnch vraz .
Michael Sipser: lntroduction to the Theory of Computation .

Zpracovn textu

Datov soubory jsou v Unixu tradin textov. Dvod je hned nkolik. Textov
soubory lze velmi jednodue zpracovvat. Vekerou textovou informaci je mon
interaktivn mnit pomoc celoobrazovkovch textovch editor. Na rozdl od jinch
operanch systm je pouvn jeden program textov editor pro pravu tm
- -

vech datovch soubor. Na uivatele tud nejsou neustle kladeny nroky uit se
"ovldat nov programy".
Rozdl oproti prci v Unixu a v jinch systmech je patrn napklad pi progra
movn v jazyku C. V Unixu nejprve uivatel nape zdrojov kd v textovm editoru.
Potom textov editor opust a pelo zdrojov kd pekladaem. Peklada je samo
statn program, nem s textovm editorem nic spolenho. Naproti tomu ve vtin
systm nevychzejcch z filosofie Unixu jsou pekladae programovacch jazyk
dodvny s integrovanm uivatelskm rozhranm, jeho soust je i zabudovan
textov editor. Myslm, e ji nen teba zdrazovat, jak me bt pro uivatele
navyklho na jedno uivatelsk rozhran tk pechod k jinmu produktu. V pro
sted Unixu je takov problm zanedbateln. Vmna pekladae nijak neovlivn
uivatelovo pohodl bhem editace zdrojovch soubor.
Vztah uivatele k textovmu editoru nen v dnm ppad nadnesen. Pi dlou
holetm uvnm tohoto programu si uivatel zpravidla vytvo vlastn sadu maker
a sna se maximln pizpsobit textov editor svm pedstavm. Efektivita prce
se me vrazn zvit. Naopak, pi nucenm pechodu na jin textov editor me
uivatel zat "kulturn ok".

Znaky, etzce a textov data


Ped dalm vkladem je poteba ozejmit vznam nkterch zkladnch pojm.
Textov informace se v potai pirozen skld z posloupnosti znak. Kad znak
je v potai jistm zpsobem zakdovn, nejbnji slem v rozsahu 1 B. Jeliko m
1 B osm bit, lze pomoc jednoho bajtu vyjdit celkem 28 256 znak. Osmibitov
=

kdovn znak ale nebylo vdy bn. V prvopotcch byly znaky kdovny pouze
1 32 Kapitola 6. Zpracovn textu

spodnmi sedmi bity, horn bit mohl slouit napklad jako parita. Pi sedmibitovm
kdovn znak lze jednm bajtem popsat prv 27 128 rznch znak. Kdovn
=

znak pomoc sel s sebou nese jeden pirozen poadavek - na potach rznch
architektur by mly bt stejn znaky kdovny stejnmi sly, jedin tak je mon
pedejt efektu "Babylnsk ve". Pro prvnch 128 znak se tm vlun pouv
kd ASCII - American Standard Code for lnformation lnterchange. V nsledujc tabulce
je zobrazeno prvnch 127 znak. Znaky jsou slovny v estnctkov soustav od O
po 7F, co v destkov soustav znamen od O do 127.

o 1 2 3 4 5 6 7 8 9 A B C D E F
O NL CR O
1 1
" , * -
2 ! # $ % & ( ) + , / 2
3 O 1 2 3 4 5 6 7 8 9 : ; < = > ? 3
4 @ A B C D E F G H I J K L M N o 4
A
5 p Q R S T U V W x y z [ \ 1 - 5
6 , a b c d e f 9 h i j k 1 m n o 6
7 p q r s t u v w x y z { I } - 7
O 1 2 3 4 5 6 7 8 9 A B C D E F

V tabulce je prvnch 32 znak przdnch. To je zcela v podku. Jedn se o znaky


se specilnm vznamem, tyto znaky nemaj stanovenu grafickou reprezentaci. Mezi
speciln znaky pat napklad znak slo 9 reprezentujc znak tabultor. V tabulce
je vyznaen speciln znak slo 10 - znak nov dek. ASCII kd 13 je vyhrazen
pro speciln znak nvrat na zatek dku. Interpretace specilnch symbol zle
na konkrtnm programu. Standardn ASCII kd definuje jen prvnch 128 znak
a neobsahuje dn znaky mimo anglick abecedy, sel a zkladnch symbol.
Postupnm roziovnm ASCII kdu zaaly vznikat kdov strnky podporujc
rzn jazykov prosted. Kdov strnky pouvaj pln osmibitov kdovn znak
a znaky s sly 128 a 255 jsou vyuvny pro psmena s diakritikou. V naich pod
mnkch se lze nejastji setkat s kdovou strnkou ISO 8859 2, co je kdov strnka
pro centrln Evropu. Krom jednobajtovch kdovn existuj i kdovn vcebaj
tov - znaky jsou reprezentovny v rozsahu nkolika bajt. Vcebajtov kdovn
jsou uiten ve vcejazynch dokumentech. Typickm pedstavitelem vcebajto
vho kdovn je UTF 8.
Ve standardn terminologii je pojmem etzec mylena libovoln posloupnost
znak. Pojmem przdn etzec je oznaovna przdn posloupnost znak. etzce
znak ukonen znakem slo 10, to jest znakem nov dek, se nazvaj dky. Soubor
skldajc se pouze z dk se nazv textov soubor. Obsahem textovho souboru
je prost text - plain text. Textovm souborem v um smyslu je chpn pro lovka
dobe iteln textov soubor obsahujc pouze zkladn ASCII znaky.
Rozdl mezi reprezentac dat v textovm souboru a v binrnm tvaru je zsadn.
Uvaujme napklad slo 12378. V textovm souboru bude tato seln informace
zaznamenna pti znaky, kad z nich bude reprezentovat jednu cifru, tedy 1 2 3 7 8 .
To je naprosto pirozen a pro lovka dobe iteln zpis. Naopak, pokud se slo
6. 1 . Zkladn nstroje 1 33

ulo ve sv vnitn reprezentaci, bude zabrat pouh dva bajty, jejich decimln hod
noty jsou 90 a 48. To odpovd dvma znakm Z a o . Na prvn pohled je vidt, e
binrn reprezentace, a spornj, je pro adovho uivatele ponkud neiteln. Jed
nou z mla vhod binrn reprezentace dat je jejich men velikost. Tento problm ale
lze vyeit pouitm kompresnch program. V praxi se lze velmi asto setkat s tex
tovmi daty komprimovanmi standardnmi kompresnmi programy dostupnmi
v Unixu.

Co je a nen textov editor


Pod pojmem textov editor je zpravidla mylen program slouc k prav prostho
textu. Uloen dat v podob prostho textu je v Unixu nejastj. Binrn reprezen
tace dat se potk s adou problm. Rzn hardwarov platformy podporuj jin
kdovn celch sel. Rozdly jsou v poad uveden mn vznamnch bajt, ale
napklad i v reprezentaci zpornch sel.
Upozornme nyn na fakt, e programy obsaen ve vtin komernch kance
lskch balk, kter jsou nktermi uivateli myln nazvny "textov editory", ve
skutenosti vbec dn textov editory nejsou. Sv data ukldaj v binrnch form
tech, ve kterch je samotn obsah doplnn fdcmi sekvencemi. Prv ptomnost do
datench dcch sekvenc, zpravidla pro laika neitelnch, posouv tyto programy
do pln jin kategorie. V GNU/Linuxu jsou programy podobnho typu pou
vny jen zdka. Pokud chce napklad uivatel vytvoit publikovateln dokument,
pouije opt textov editor a vytvo pomoc nj vstupn souboru pro formtovac
systm 1fX. Jedn se v podstat o prost text doplnn pkazy pro formtovac sys
tm - pkazy pro formtova jsou opt textov a maj smluven, jasn deklarovan
tvar. 1fX podle zdrojovho textu provede celkov zalomen dokumentu a vstupnm
ovladaem lze ze zpracovanho dokumentu vytvoit napklad soubor ve formtu
PostScript nebo POP.
Pi prci s textovmi soubory se lze setkat v zsad s nkolika druhy obslunch
program. V prvn ad jsou to programy umoujc manipulovat s textem na rovni
dk. Sem pat rzn filtry, programy na porovnvn obsahu soubor a podobn.
Dal kategori jsou programy umoujc editaci souboru na rovni znak, sem pat
neinteraktivn proudov editory a interaktivn celoobrazovkov editory. Chce-li uivatel
vyuvat svj systm skuten efektivn, neobejde se bez zkladn znalosti dnho
z nich. Jeliko je tato kapitola vnovan obecn problematice zpracovn textu, ten
v n nalezne i pase tkajc se archivace dat a podpory nrodnho prosted pi
vytven eskch dokument a dokument s diakritikou.

6.1. Zkladn nstroj e


Tato kapitola se zamuje na nejznmj programy pracujc s textovmi soubory
na rovni dk. Programy jsou vesms soust balku GNU textutils - jedn ze stan
dardnch soust softwarovho vybaven operanho systmu Linux. V pedchozch
kapitolch ji byly rozebrny nkter nstroje, jednalo se o programy cat, head,
1 34 Kapitola 6. Zpracovn textu

t a i l a w c . Nyn budou rozebrny dal z nich. Pokud nebude dle uvedeno jinak,
vechny programy tou vstupn data ze standardnho vstupu a vsledek pedvaj
na standardn vstup.

Tdn dk souboru
Program sort slou k setfdn fdk vstupnho souboru. Ke tdn jsou vyuity
i lokalizan databze, m-li uivatel nastaven esk uivatlsk prosted, dky
budou tdny pln podle eskch zvyklost. Program sort disponuje nkolika ui
tenmi pepnai.

argument vznam
-r sestupn tdn
-b mezery na zatku dk jsou ignorovny
-c dky jsou tdny, pouze pokud jsou nesetdn
-f porovnvn bez ohledu na mal /velk psmena
- g data jsou porovnvna jako sla
-m slvn setdnch dat

Ignorovn potench mezer je vhodn, slo znaku mezera je men ne sla


znak abecedy, pi tdn by se na zatek souboru mohly dostat dky zanajc
mezerami. Programu sort lze rovn specifikovat slo sloupce, podle nj by mly
bt dky tdny. Oddlovacm znakem sloupc je posloupnost sloen z mezer
nebo znak pro tabultor. Sloupec lze definovat argumentem tvaru + <l slo f>. Sloupce
jsou slovny od nuly. Implicitn je tdn provdno podle prvnho sloupce.
Pedpokldejme, e uivatel novakj si udruje seznam svch vitel v textovm
souboru. Prvn dva sloupce tvo jmno, posledn sloupec tvo stka. Uivatel si
peje setdit jednotliv dky podle stky sestupn.
$ sort - gr +2 veri te l e . txt
Dona l d K . 3000
N i k l aus W . 400

Pokud by nebyl pouit argument - g, dky by byly vypsny v obrcenm poad.


Argumentem +2 uivatel specifikuje poadavek na tdn dat podle tetho sloupce
zleva.
Program sort umouje i slvat setfdn soubory. Jsou-li soubory setdn, lze
provst jejich slit v linernm ase. Slitm je vytvoen nov soubor obsahujc data
ze vech vstupnch soubor. Data jsou navc opt setdn. Nutnou podmnkou
pro korektn slit merge je prv setdnost vstupnch dat. Program sort lze
- -

do reimu slvn zapnout argumentem - m. Pi slvn mus bt jednotliv vstupn


soubory uvedeny jako argumenty.
Je-li soubor setdn, lze s nm dle manipulovat pomoc programu uniq. Pro
gram uni q standardn vype vechny uniktn fdky v souboru. Je-li pouit argument
- d, jsou naopak vypsny opakujc se dky. Argumentem c lze krom samotnch
-
6. 1 . Zkladn nstroje 1 35

dk vypisovat i etnosti jejich opakovn. Princip innosti program sort a uni q


je zcela odlin. Program sort mus nast veker vstupn data a a pot je me
zat tdit. Vjimkou je pouze reim slvn aktivovan pepnaem - m. Nechov se
tedy jako typick program zpracovvajc vstup dek po dku. Na druhou stranu
program uni q te vstup dek po dku, pro vynechn duplicitnch dku potebuje
znt krom aktuln zpracovvanho dku pouze posledn naten dek.

Porovnvn obsahu soubor


K porovnn obsahu dvou soubor slou programy cmp a comm. Prvn z nich
slou k porovnn obsahu nesetdnch soubor, druh je uren pro setdn
soubory. Program cmp nen omezen pouze na textov soubory, jeho porovnvn je
zcela univerzln. Program porovnv obsah soubor znak po po znaku. Je-li nalezen
rozdln znak na te pozici, program ukon svou innost a nahls pozici odchylky.
V opanm ppad program skon bez odezvy. Viz pklad.
$ cmp j ablka . txt hrusky . txt
j ablka . txt hrusky . txt d i f f e r : char 1 0 , l ine 2

Hlen sdluje, e dva soubory se li v destm znaku, kter se nachz na


druhm dku v souboru. Nvratov hodnota programu je O pi shod soubor,
v opanm ppad 1 . Program je asto pouvn ve vrazech podmnnch kon
strukc.
Program c omm umouje zobrazit pehledn vpis rozdl v setdnch sou
borech. Standardn zobrazuje data ve tfech sloupcch. Prvn sloupec obsahuje dky,
kter se nachzej pouze v prvnm souboru. Druh sloupec obsahuje dky, kter se
nachzej pouze v druhm souboru. Konen tet sloupec obsahuje data nachzejc se
v obou souborech souasn. Vpis konkrtnho sloupce lze potlait pomoc pepna
- 1 2 a 3 . Viz piloen pklad.
, - -

$ comm l i cha . txt prvoc i s l a . txt


1
2
3
5
7
9

Prvn sloupec obsahuje pouze 1, 9, protoe se jedn o lich sla, kter nejsou
prvosla. Prostedn sloupec obsahuje 2, protoe je prvoslo, ale nen lich. Posledn
sloupec obsahuje sla splujc ob dv podmnky. Pokud by uivatel chtl potlait
vpis tetho sloupce, me pout program c omm a pepna 3 . -

Vytven opravnch soubor


Porovnvn obsahu soubor je pirozen. V programtorsk praxi je asto po
teba porovnvat zmny v jednom souboru soubn proveden dvma i vce pro-
136 Kapitola 6. Zpracovn textu

gramtory. V systmu Unix m pouvn podobnch nstroj velkou tradici. Po


rovnvn obsahu soubor me mt i vznamn vedlej efekt. Pokud se dva velk
soubory li v relativn mlo dcch, lze vytvoit opravn soubor neboli "zplatu".
Aplikac zplaty na prvn soubor obdrme soubor s nm pvodn porovnan. Tento
mechanismus je mohutn vyuvn napklad vvoji jdra Linux. Zdrojov sou
bory jdra jsou velmi velk, ale relativn zmna mezi dvma verzemi je mal. Pro
uivatele je mnohem jednodu opatit si zplatu velikosti 1 MB ne cel zdrojov
texty jdra, ty jsou dov vt. M-li uivatel k dispozici
-, star jdro, sta na jeho
zdrojov kdy aplikovat zplatu.
Na zplatch jsou postaveny i systmy pro sprvu verz. Jde o velmi dmyslnou
organizaci dat, zachovvajc vechny verze soubor, kter do n byly zaregistrovny.
Uivatel m monost pracovat s jednm souborem a kdykoliv se podvat, jak vypadal
teba ped mscem, ppadn jak jsou v nm udlny zmny. Msto celch soubor
se uchovvaj pouze jejich rozdly, to jest zplaty.
Ke vzjemnmu porovnn obsahu soubor bv pouvn program di f f, lze jej
rovn pout i k vytvofeni zplaty. Programu di f f mohou bt pedny argumenty
urujc styl vpisu rozdl v souboru. Napklad pepna e vytv rozdlov sou
-

bor ve tvaru pkaz pro dkov editor ed. Pepna c zapn kontextov vstupn
-

reiim. Soust informac o rozdlech jsou i nzvy soubor a podobn. Dleitm


pepnaem je rovn r umoujc zaznamenat rozdly mezi soubory ve vech
-

podadresch. Pepnae cr se typicky pouvaj pi vytven zplat na cel pod


-

strom adres. Viz pklad pouit programu di f f .


$ di f f f l . sem f 2 . sem
l , 2c1 , 2
< ( de f ine ( f n )
< (if (= n O )

> ( de f ine f ( l ambda ( n )


> (if = n 1 )

Standardn program di f f vyuv pi popisu zmn notaci definujc jednak pozici


zmny, jednak jej charakter. Charakter se oznauje psmeny a pidat, d - smazat a c
- -

- zmnit. V pedchoz ukzce di f f ukazuje rozdl mezi soubory, kter lze opravit
zmnou prvnch dvou dk. Symboly < , > jsou pouity k vyznaen dat z prvnho
a druhho souboru. vstup programu di f f je dobe iteln, nkter interaktivn
textov editory navc na zklad jeho dat umj uivatelm bhem editace souboru
pehledn vyznaovat zmny v textu.
K aplikaci zplat slou program pat ch. Jeho autorem je opt Larry Wall. Pro
gram pat ch um na zklad opravnch soubor vytvoench pomoc programu
di f f aplikovat zmny do stvajcch soubor. Pokud je program di f f pouit v kon
textovm reimu, je mon provdt zmny i v souborech licch se od pvodnho
originlu. Mra odlinosti mus bt samozejm nosn. V zsad ale nen problm
napklad aplikovat po sob nkolik zplat, kter se tkaj rznch st souboru.
Pomoc kontextov informace je patch schopen najt poadovan msto proveden
zmny, i kdy je v souboru vlivem pedchzejcch prav "posunuto jinam".
6. 1 . Zkladn nstroje 137

Program patch se pouv pmoae. Zpravidla je ale nutn pout argument


- p<l n t>, kter provede odezn prvnch <l n t> adres v cest uveden v opravnm
souboru. Pokud m uivatel aplikujc zplatu data uloena v adresi se stejnm
jmnem jako jej autor, potom pouije argument - p O . Pokud m vak data uloena
v adresi s jinm nzvem, mus pout argument - p 1 a dle mus pomoc argumentu
- d specifikovat jmno adrese. Viz pklad.
$ di f f - c r megadi lo - O . l megadi l o - O . 2 >megadi l o - O . 2 . patch
. . . na jinm msU . . .
$ cat megadi l o - O . 2 . patch I patch - pl - d s tara
patching file ' NEWS '
patching file ' README '
patching file ' megad i l o . l sm . in '
patching file ' xma l l oc . c '

Uivatel nejprve vytvoil opravn soubor. V druhm ppad byl aplikovn do


adrese s t ara. Proto musel uivatel provst odezn prvnho adrese v nzvu
a zadat nov nzev clovho adrese. Pvodn nzev adrese byl megadi l o - O l . .

Pro plnost k programu patch dodejme, e umouje aplikovan zmny i odstra


ovat. Pro detaily viz manulovou strnku.

Nstroj e pro prci se sloupci


Mezi dal uiten programy pat cut a p a s t e, slouc pro prci se sloupci
v souborech. Program cut slou k vpisu zvolench sloupc. Sloupce lze definovat
dvojm zpsobem, buto ohranien pevnou pozic okrajovch znak na dku, nebo
pomoc pol separovanch oddlovaem. Syntaxe pkazu je dvoj:
cut - c <l sloupce t> <l soubort>
cut - d <l oddlovat> f <lpole t> <lsoubort>
-

Znak <l oddlovat> sm bt pouit pouze v druhm ppad. Nen-li pi pouit argu
mentu - f oddlova uveden, je msto nj pouit znak mezera. Definice sloupc a pol
je jinak identick. Pouze v prvnm ppad sla vyznauj konkrtn sloupce potan
po jednotlivch znacch, v druhm ppad se uivatel odkazuje na sloupce odd
len znakem <loddlovat>. Nsledujc tabulka shrnuje zkladn vrazy pouiteln pi
definici sloupc nebo pol.

vraz zobrazen
<l n t> sloupec danho poad
<l n l t> , <l n2 t> sloupce jsou zobrazeny vedle sebe
<l n l t> - <l n2 t> zobrazeny jsou vechny sloupce mezi <l n l t> a <l n2 t>
- <l n t> zobrazeno j e prvnch <I n t> sloupc
<l n t> - zobrazeno je ve ponaje <l n t>-tm sloupcem

Systmov databze uivatelskch t je organizovna jako soubor oddlen dvoj


tekami. Pokud z nj chce uivatel extrahovat jen nkter informace, me pout
program cut napklad nsledovn.
$ cat /etc /pas swd I cut - d ' : ' - f 3 - 5 , 1

vyb i ralv : 1 2 7 2 : 2 0 9 : Voj tech Vyb i ra l


vyb i r a lm : 1 3 3 5 : 2 0 9 : Mart in Vyb i ra l

$ cat /etc/pas swd I c u t - c 3 - 5 , 1

vbi r
vb i r

Z pkladu j e rovn vidt, e oddlen pol nebo sloupc rkou nem vliv na
poad jejich vpisu. Program eut umouje omezit vpis sloupc, nemn ale jejich
poad.
Ke spojen sloupc z vce soubor slou program pas t e . Program te jednotliv
dky ze vstupnch soubor a na vstup je pedv vypsan vedle sebe. K jejich
vzjemnmu oddlen se implicitn pouv znak tabultor. Vlastn oddlova lze
definovat argumentem - d <J znaky r> . Jednotliv <J zna ky r> jsou pi oddlovn sloupc
pouvny cyklicky, to jest po poslednm znaku je pouit opt prvn. Znaky z mnoiny
jsou cyklicky pouvny k oddlen sloupc. Program p a s t e podporuje i sriov vpis
sloupc, pomoc pepnae - s jej lze pepnout do tohoto reimu. Pi sriovm vpisu
je kad ze soubor vypsn na samostatnm dku. dky pvodnch soubor tvo
ve vstupu sloupce, to jest msto znaku nov dek je pouit definovan oddlova.
Viz pklad pouit.
$ pas t e - d ' , c i s l a . txt pi smena . txt
1 A
2 B
3 C
$ pas te - s - d ' , c i s l a . txt pi smena . txt
1 2 3
A B C

Pi sriovm vpisu je pro kad vstupn soubor pouit jeden dek.

Rozdlovn soubor
Uivatel se bhem prce s velkmi datovmi soubory me setkat s problmem,
jak soubor rozdlit na men sti a po penesen opt spojit. Typickm problmem je
napklad penen ISO obrazu CD velikosti nkolika stovek MB pomoc vmnnho
mdia ZIp, jeho kapacita je pouze 100 MB. Pi penosu je nutn obraz nejprve rozdlit
a poslze spojit. Ke zetzen soubor slou program e a t . Zbv vyeit problm
rozdlen.
Obecnm nstrojem umoujc blokov pstup k souboru je program dd. Pro
gram dd lze pout ke koprovn a konvertovn soubor. Pi koprovn dat lze
definovat meze v blocch stanoven dlky. Meze slou ke stanoven potku a konce
vstupnch i vstupnch dat. Pi pouit programu dd je dobr znt nkolik mlo
zkladnch argument, viz nsledujc tabulku.
6. 1 . Zkladn nstroje 139

argument vznam
b s = < welikost r> nastaven velikosti jednoho bloku
c ount =<l n r> je provedena kopie pouze n blok
i f =<lsouborr> vstupn data ti ze souboru <l soubor r>
of =<lsouborr> vstupn data zapisuj do souboru <l souborr>
s e ek=<l n r> pi zpisu vstupu pesko prvnch n blok
skip=<l n r> pi ten vstupu pesko prvnch n blok

Vechny argumenty programu dd jsou tvaru <largument r>=<l hodnota r>. Dleit je de
finice velikosti jednoho bloku. V jednotkch blok jsou dle provdny vechny
kalkulace. Velikost bloku je implicitn chpna v bajtech, vt jednotky lze spe
cifikovat pslunm psmenem, napklad bs = 1 6M zna bloky po 16 MB. Pokud
nejsou uvedeny argumenty i f a of, data jsou tena ze standardnho vstupu a za
pisovna na standardn vstup. Argumentem c ount =<lpoet r> je mon specifikovat
poet zkoprovanch blok - soubory nen nutn pomoc dd koprovat cel. Nakonec
argumenty skip a s e e k umouj definovat poet ignorovanch potench blok
vstupnho a vstupnho souboru. Viz pklad.
$ dd i f = /dev/ z ero o f = soubor . txt bs=1 k count=2 seek= 1
2 + 0 records in
2 + 0 records out

V ukzce byly prvn 2 kB vynechny a za n byl zapsn 1 kB binrnch nul.


Program dd je velmi asto vyuvn sprvci systm, jeho velkou pednost je syrov
manipulace s daty. Pednost programu dd ocen sp systmov administrtoi ne
adov uivatel.
Pokud chce uivatel jednodue rozdlit soubor na men dly, program dd k tto
innosti nen pli vhodn. Soust softwarovho vybaven GNU je i program spl i t
umoujc rozdlit soubor na nkolik mench dl. Oproti programu dd se jedn
o zcela automatick nstroj . Pomoc argument - b a - 1 lze stanovit maximln
poet bajt nebo dk, kter mohou jednotliv soubory obsahovat. Program spl i t
rozdluje vstupn data do novch soubor, jejich nzvy jsou ve tvaru <lprefix r>aa,
<lprefix r>ab a tak dle. Prefix m standardn hodnotu ' x Hodnotu prefixu lze zmnit
I

pi voln programu spl i t nepovinnm argumentem za jmnem rozdlovanho


souboru.
$ spl i t - b 1 4 7 4 5 6 0 gigant . tar . gz rozde l
$ l s rozde l - *
rozde l - aa rozde l - ab rozde l - ac rozde l - ad rozde l - ae
$ cat rozde l - a* >novy . tar . gz
V pedchoz ukzce byl soubor g igant . t a r . g z rozdlen na megabajtov seky,
pi sputn programu byl definovn prefix "rozde l - " . Na poslednm dku ukzky
byly jednotliv sti zetzeny a pesmrovny do novho souboru novy . t a r . g z .
Pkazov interpret pitom expandoval nepln jmno rozde l - a * na lexikograficky
setdn seznam jmen soubor, jednotliv soubory tedy byly zetzeny ve sprvnm
poad.
1 40 Kapitola 6. Zpracovn textu

6.2. Filtry a proudov editory


Pod pojmem filtr bv v nkterch ppadech mylen obecn program spoutn
jako soust kolony. Filtry jsou v obecn rovin programy petvejc vstupn data na
data vstupn - zpravidla jde pouze o vyputn nkterch vstupnch dat. Kritriem
vyputn dat je jejich shoda se stanovenm vzorem. Shrneme-li pedchoz vahu,
filtry jsou programy slouc k omezen vstupu podle stanovenho vzoru. Filtry zpra
vidla penej ze vstupu na vstup prv vechny dky odpovdajc zadanmu
vzoru. Mon je i opan chovn. Proudov editory slou k prohdov editaci dat.
Proudov editor m k dispozici vstupn data a sadu pkaz, pomoc nich vstupn
data zpracovv. Pkazy jsou zpravidla jednoduch a omezuj svoji psobnost na
jeden dek. Pro jazyk proudovch editor je typick, e neobsahuje pkazy tka
jc se natn vstupu, natn dat tedy nen v reii programtora, ale samotnho
interpretu jazyka - proudovho editoru.

Regulrn vrazy
Vechny nejastji pouvan nstroje GNU uren k filtraci a k proudovmu
zpracovn textu se opraj o regulrn vraz - pojem vzel z teorie formlnch ja
zyk, jedn z vznamnch discipln modern informatiky. Formln popis samotnho
pojmu bohuel pesahuje rmec tohoto textu. Intuitivn lze ct, e regulrn vraz je
popisn apart umoujc vymezit jistou mnoinu odpovdajcch etzc. Vechny
etzce odpovdajc danmu regulrnmu vrazu formuj regulrn jazyk genero
van tmto vrazem. Tda regulrnch jazyk je velmi jednoduch - pro libovoln
regulrn jazyk lze na zklad znalosti jeho popisu sestavit efektivn deterministick
analyztor. Analyztor me bt pouit pi zpracovvn vstupnch dat a jeho ko
lem je rozhodnout zdali vstupn etzec nle do jazyka generovanho pslunm
regulrnm vrazem, i nikoliv.
Jinmi slovy, definic regulrnho vrazu uivatel specifikuje jistou mnoinu e
tzc - regulrn vraz je jejich vzorem. Pi prci s textem v Unixu se vstupn data tes
tuj, zdali odpovdaj zadanmu regulrnmu vrazu. Kad program pracujc s re
gulrnmi vrazy nejprve vygeneruje pslun analyztor. Po konenm potu krok
vygenerovan analyztor buto vstupn etzec pijme, nebo zamtne - vstupn e
tzec buto odpovd jazyku popsanmu vrazem, nebo nikoliv. etzec je dle
zpracovvn na zklad rozhodnut analyztoru.
Programy pracujc s regulrnmi vrazy pouvaj i jejich rozen varianty - roz
en regulrn vrazy. Rozen regulrn vrazy pokrvaj ir tdu jazyk, jejich
analza ale ji nen tak pmoar, je nutn buto sestavovat analyztory pracujc
s nvratem, nebo vyuvat dodatenou pamt: co me prodlouit as zpracovn
dat. Nstroje GNU pouvaj vesms oboj vrazy, pokud je to mon, pouvaj
efektivn deterministickou analzu.
Pouvn regulrnch vraz m nkolik skal. Akoliv je v prosted Unixu
regulrn vraz standardizovn normou POSIX 1003.2, tm kad program m sv
vjimky v syntaxi. Druh skal je samotn vytven regulrnch vraz: Zaten
km se asto stv, e jejich vraz "nedl, co by ml". To me bt nkdy zpsobeno
6.2. Filtry a proudov editory 141

i tm, e identick regulrn vrazy mohou dva rzn programy interpretovat jinak.
Sprvn a efektivn pouvn regulrnch vraz vyaduje jist cvik a del zku
enosti. Bylo by ale nesprvn tene tmto zvrem odradit. Pomoc regulrnch
vraz lze eit velk mnostv problm velmi jednodue a pmoae.
Vtina program pouv regulrn vrazy dle normy POSIX 1003.2. Tato norma
obsahuje definici dvou typ regulrnch vraz. V souasnosti je astji pouvan
modern notace, ve starch programech, jakm je napklad proudov editor s e d, se
lze ovem setkat se star notac. Nanetst, nkter programy se nedr ani jedn
notace a maj vlastn konvence pro zpis regulrnch vraz. Na odlinosti vs budu
upozorovat u jednotlivch program. Nsledujc souhrn popisuje regulrn vrazy
v modern notaci, poznmky ke star notaci jsou uvedeny jako komente k jednot
livm vrazm. Pokud nebude uvedeno jinak, dan regulrn vraz m v obou
notacch stejn tvar.
z Definice jednoho znaku .
Vrazu odpovd jednoprvkov etzec "z".
Zstupn symbol pro libovoln znak.
Tomuto vrazu odpovdaj etzce "z", kde z je libovoln znak.
a? Voliteln vraz.
Vrazu odpovd libovoln etzec odpovdajc vrazu a a przdn fetzec.
Neformln eeno, etzec odpovdajc vrazu a je nepovinn. Ve star
notaci nem vraz a ? svj ekvivalent, symbol ? je interpretovn jako
obyejn znak.
a(3 Zfetzen regulrnch vraz.
Tento vraz se nkdy nazv konkatenace. Vrazu odpovd kad etzec
z} . . . ZkZk+I ' " Zn , kde podetzec z } . . . Zk odpovd regulrnmu vrazu a
a podetzec Zk+l ' " zn odpovd regulrnmu vrazu (3. Neformln e
eno, vrazu odpovd kad etzec sloen z etzce odpovdajcho v
razu a bezprostedn nsledovanmu etzcem odpovdajcm vrazu (3.
Uitm konkatenace lze jednoduchou indukc dojt k zvru, e libovoln
fetzec znak je regulrn vraz a odpovd prv identickmu etzci.
a l (3 Alternativa dvou regulrnch vraz.
Vrazu odpovdaj vechny etzce odpovdajc vrazu a nebo vrazu (3.
Spojka "nebo" v tomto ppad nen vyluujc. Pokud etzec odpovd
obma vrazm souasn, odpovd i vrazu a l (3. Alternativa regulr
nch vraz m men prioritu ne zetzen, proto je napklad vraz
"prvni I druhy " chpn jako alternativa "prvni " nebo "druhy " , a ne
v V
zretezenl ' "prvn " , ,, 1. I d " a " ru hy JI .
[z} . . . zn ] Definice mnoiny znak.
Tento zpis pedstavuje pouze syntaktick cukr pro zpis alternativy
znak. Regulrnmu vrazu odpovd kad ze znak Z} , . ., Zn . Pokud

je na prvn pozici po otevrac hranat zvorce metaznak " A ", potom v


raz vyjaduje doplnk do mnoiny vech znak. To znamen, e regulr
nmu vrazu [ AZ} . . . zn ] odpovdaj vechny znaky nevyskytujc se mezi
142 Kapitola 6. Zpracovn textu

Zl , , Z n . Interval znak lze vyjdit pomoc ,, _ /I . Pokud jsou metaznaky


. .

- "
,, /I, A " na jin ne ppustn pozici, jsou povaovny za znaky, take
napklad regulrnmu vrazu " [ a A b - x - ] " odpovdaj znaky "a x "
a znaky ,, _ /I, " A /I .
Pi definici mnoiny znak si lze vypomoci i peddefinovanmi kategori
emi znak. Mezi " [ /I a ,, ] /1 je mon vloit vraz ve tvaru [ : <J typ t> : ] - mezi
dvojtekami mus bt specifikovn <J typ t> urujc kategorii znak. Do
mnoiny znak jsou potom automaticky pidny vechny znaky dan ka
tegorie. Typ me nabvat hodnot a l num, a lpha, cnt r l , digi t, graph,
l owe r, p r i nt, punc t, space, uppe r a xdigi t. Napklad regulrnm
vrazem [ [ : xdigi t : ] ] je specifikovna jedna hexadecimln cifra, na
opak vrazem [ A [ : a l num : ] ] je specifikovn libovoln znak vyjma al
fanumerickch znak.
n* Uzvr reglllrnho vrazu.
Vrazu odpovd przdn etzec a kad etzec, kter je ve tvaru
Zl . . . Z/1 Z1 . . . Z/1 . . , kde Zl . . . Z n odpovd vrazu n. Neformln eeno,
.

vraz odpovd kadmu etzci skldajcmu se z libovolnho potu opa


kovn jednoho etzce odpovdajcho vrazu Q. Zpracovn pozitivnho
uzvru vrazu bv obvykle "hladov". Analyztor se sna vyhledat co
mon nejvt vstupn sek odpovdajc vrazu. Napklad vraz * /1 ll .

odpovd celmu vstupnmu etzci. Hladovost vyhledvn je vznamn,


pedevm jsou-li regulrn vrazy pouity jako vzory pi nahrazovn.
CH Pozitivn uzvr regulrnho vrazu.
Jako pedchzejc regulrn vraz, ale s tm rozdlem, e vrazu n + ne
odpovd przdn etzec. Neformln eeno, odpovdajc etzec mus
obsahovat alespo jedno opakovn etzce odpovdajcho regulrnmu v
razu Q. Pozitivn uzvr nem ve star notaci svj ekvivalent, symbol +
je chpn jako obyejn znak.
Q{m,n} Limitovan opakovn.
Vrazu odpovdaj vechny etzce, kter se skldaj z nkolikrt opakova
nho etzce odpovdajcho vrazu Q, pitom poet opakovn mus bt
alespo m, nejve vak n. Ob dv meze opakovn lze libovoln vyne
chat, metaznak rka by ml zstat zachovn kvli jednoznanosti hranice.
Napklad "x { s } /I a "x { 5 } /I jsou rzn regulrn vrazy. Ve star no
I I

taci jsou oddlovae " { /I, " } " uvozeny zptnm lomtkem, to jest maj tvar
" \ { " a ,, \ } " . Sloen zvorky jsou ve star notaci chpny jako obyejn
znaky.
(Q) Agregovan regulrn vraz, nkdy t zvorkovan vraz.
Vrazu odpovdaj vechny etzce odpovdajc vrazu Q. Zvorky slou
pouze k vymezen priority zpracovn vraz. Napklad regulrnmu v
razu ab+ odpovdaj vechny etzce zanajc znakem a nsledovanm
libovolnm opakovnm znaku b. Na druhou stranu vrazu ( ab ) + odpo
vdaj vechny etzce obsahujc libovoln poet opakovn etzce ab.
6.2. Filtry a proudov editory 143

Ve star notaci jsou zvorky " ( ", ,, ) " chpny jako obyejn znaky, msto
nich se pouvaj zvorky uvozen zptnm lomtkem, to jest " \ ( , " \ ) ". "

U rozench regulrnch vraz slou zvorky "k zapamatovn odpo


vdajcho etzce", problematice se budeme vnovat dle.

Regulrn vrazy v dnm ppad nelze ztotoovat s konvenc uvanou pro


definici neplnch jmen soubor. Nepln jmna soubor jsou expandovna pmo
shellem, regulrn vrazy jsou zpracovvny a pslunm programem. V tom se
li i jejich zpis. Pi zadvn regulrnho vrazu z pkazovho dku je nutn
potlait expanzi metaznak. Nejastji se regulrn vrazy uzavraj mezi dva apostrofy.
Apart regulrnch vraz je rovn mnohem obecnj. Napklad "a+ " reprezentuje
libovolnou neprzdnou posloupnost sloenou z opakovanch znak "a " . Mnoinu
takovch etzc nelze pomoc druhho apartu konenm zpsobem vyjdit.

Zkladn filt ry
V Unixu jsou bn dva filtry, programy grep a egrep. Jak ji nzev napovd,
program egrep je rozenou verz programu grep. Oba programy jsou implemen
tovny i v rmci softwarovho vybaven GNU, zde se ovem jedn o jeden a t
program. Po sputn se program podle svho jmna pepne buto do reimu grep,
nebo do reimu egrep. Program grep pouv standardn regulrn vrazy ve star
notaci, program egrep pouv modern notaci. Program grep umouje pouvat
pozitivn uzvr, voliteln vraz i limitovan opakovn, speciln znaky ,, + " , ,, ? " ,
" { ", ,, } ", ,, ( " a ,, ) " je vak nutn uvozovat zptnm lomtkem. To jest napklad v
raz ,, \ ( x * a \ ? b \ ) \ + " pro program grep a vraz ,, ( x * a ? b ) + " pro egrep jsou svm
vznamem ekvivalentn. Vimnte si, e hvzdika ,, * " nebyla uvozena zptnm
lomtkem.
Programy pracuj jako filtry, tou standardn vstup a podle vzoru pedanho jako
argument filtruj data na standardn vstup. Se vzorem je porovnvn vdy kad
dek zvlt Pokud je v konkrtnm dku nalezen podetzec odpovdajc vzoru,
dek je standardn vypsn na vstup a program pokrauje analzou nsledujcho
dku. Chovn programu bhem analzy vstupnch dat lze ovlivovat pomoc n
kolika pepna.

pepna vznam
-i mal a velk psmena se nerozliuj
- w vypisovan dek mus odpovdat vzoru cel
-v vypisovan dky nevyhovuj vzoru
-r rekurzivn se prochzej adrese
-1 vypisuj se jen jmna soubor

Program grep me pouvat i pozitivn uzvr vrazu, je vak teba pst jej uvozen
zptnm lomtkem, to jest ve tvaru " \ + " . Tot plat pro agregaci vrazu a limitovan
opakovn. Uitenm pepnaem je - w . V nkterch ppadech je potebn, aby
144 Kapitola 6. Zpracovn textu

vzoru odpovdal cel dek, nikoliv pouze njak jeho st. Pepna - w lze ale
A II
pln nahradit metaznaky " a ,, $ " . Metaznak " A " vyznauje v regulrnm vrazu
zatek dku, metaznak ,, $ " vyznauje konec dku. Pepna - w m tedy ekvivalent
v regulrnm vrazu A a $ . Viz pklady.
$ cat /etc /pas swd I grep A roo
root : x : O : O : root : / root : /bin/bash
$ cat /etc/pas swd I grep f a 1 s e $
rwhod : x : 1 0 1 : 6 5 5 3 4 : : /var/ spoo 1 / rwho : /bin/ f a l s e
f tp : x : 1 0 2 : 1 0 2 : : / home / s ervi c e s / f tp : / b i n / f a l s e
i dent d : x : 1 0 0 : 6 5 5 3 4 : : /var/ run/ i dentd : / bin/ f a l s e
$ c a t /etc/pas swd I grep A r . * fa 1 s e $
rwhod : x : 1 0 1 : 6 5 5 3 4 : : /var/ spoo l / rwho : /bin/ f a l s e

V ukzkovch pkladech nebyly regulrn vrazy uzaveny d o uvozovek, pro


toe nehrozil problm s nechtnou expanz. V tetm ppad regulrnmu vrazu
odpovdaj vechny dky, kter zanaj psmenem r a kon etzcem f l a s e . Regu
lrn vraz * reprezentuje libovolnou posloupnost znak . Przdn dek lze reprezen
.

tovat regulrnm vrazem A $ .


$ cat /usr/ share/di c t /words grep x . *y I wc - 1
105
$ cat /usr/ share/di c t /words grep xy I wc - 1
9
$ cat /usr/ share/di c t /words grep A [ abcdl * $ I pas te - s
add bad cab dad
$ cat /usr/ share/di c t /words grep -w zoo* . I pas te - s
zoo z oom zoos

V pedchozm pkladu uivatel pomoc prvnch dvou pkaz zjitoval poty


anglickch slov. Standardn soust systmu jsou i databze slov. Databze jsou
zpravidla uloen v adresi j u s r j sha r e j d i e t . Vsledky na prvnch dvou d
cch se vrazn li. Ve slovnku se nalz 105 anglickch slov, kter v sob obsahuj
znaky x a y v tomto poad. Ale pouze 9 z nich je v sob obsahuje bezprostedn
za sebou. Dal pklad ukazuje slova sloen pouze z prvnch ty psmen abecedy.
Poslednmu regulrnmu vrazu odpovdaj vechna slova zanajc na z, s nava
zujcm psmenem ,,0 " libovoln se opakujcm - nejmn vak jednou a konc
libovolnm znakem. Vzoru odpovd i slovo z o o, protoe ,,0 " uprosted odpovd
vrazu 0 0 * a ,,0 " na konci odpovd vrazu " . ". V poslednch dvou ukzkch byl
vstup serializovn programem p a s t e .

Odkazy v regulrnch vrazech


V regulrnch vrazech lze vytvet odkazy na etzce odpovdajc uzvorko
vanm vrazm. Analyztory takovch vraz vak ji nepracuj pln pmoae.
Pro jednoduchost uvaujme regulrn vrazy zapsan v modern notaci. Kad pod
vraz ve tvaru ( a ) danho regulrnho vrazu m pidleno uniktn slo. Pi
poten analze regulrnho vrazu prochz program egrep zvorky do hloubky
6.2. Filtry a proudov editory 1 45

a postupn je sluje od jedniky. Uvaujme napklad vraz ( ( ab ( c ) 3 ) 2 d ) 1 ( e f ) 4 ,


indexy nad zvorkami oznauj poad uzvorkovanch podvraz. Na aktuln
hodnotu vstupu odpovdajc uzvorkovanm vrazm se lze odkazovat pomoc
metaznaku " \ " nsledovanho slem uzvorkovanho vrazu. Viz pklad.
$ cat /usr/ share/dic t /words egrep - w ' [bg] . [bg] ' I pas te - s
bag beg bib big bob bog bug gab gag gig
$ cat /usr/ share/di c t /words egrep -w ' ( [bg] ) . \ l ' I paste - s
bib bob gag gig

Z pkladu je jasn vidt, e odkaz nen odkazem na regulrn vraz, ale na


odpovdajc vstupn etzec. V prvnm ppad jsou vypsna vechna trojznakov slova
zanajc a konc znaky b a g. V druhm ppad je podmnka zeslena, slova mus
zanat i konit stejnm znakem. Vytven sloitch odkaz je ale velmi nron. Pi
sloitch vstupnch vrazech by mohla bt filtrace pomal.

Proudov editace souboru


Program sed je proudov editor. Je v podstat odvozen od dkovho editoru ed,
na rozdl od nj ale zpracovv jednotliv dky proudov. Od jinch editor se s e d
li pedevm svou schopnost pedvat upraven text okamit na vstup. Prou
dov editor s e d se pouv nejastji k nahrazovn v textu podle zadanho vzoru.
Jeho nasazen je vhodn i u velkch soubor pesahujcch velikost virtuln pa
mti potae. Takov soubory nelze editovat interaktivn. Pkazy pro program s e d
mohou bt zadvny buto na pkazovm dku, sloitj programy je vhodnj
uloit do externho souboru. Jsou-li pkazy pro program s e d uvedeny v externm
souboru, oznaujeme je zpravidla termnem program v jazyku sed. Oznaen "jazyk"
je v tomto ppad zcela v podku. Interpretaci jazyka sed provd program s e d.
Pkaz sputn programu m dvoj syntaxi:
s e d <Jprogram r>
sed - f <J souborr>

kde <Jsoubor r> obsahuje program pro s e d. Je-li program s e d navc voln s argumen
tem n chov se tie. Standardn po dokonen zpracovn kadho dku jej sed
- ,

vypisuje na vstup, pi tichm reimu jsou dky vypisovny, pouze kdy je pouita
instrukce p, viz dle.
Program pro s e d sestv z pkaz. Jednotliv pkazy mus vdy zanat na sa
mostatnm dku. Pkaz se skld z dvou nepovinnch adres, instrukce a nepovinnho
seznamu argument. Pkaz m tvar
<J potekr> , <J konec r><J instrukce r><J argumenty r>
kde <Jpotekr> a <Jkonec r> jsou poten a koncov adresy bloku, v nm bude instrukce
vykonvna. Adresy jsou buto seln - reprezentuj sla dk, nebo etzcov.
V tom ppad se jedn o regulrn vrazy uzaven mezi dva metaznaky " j " . Pi prv
nm vskytu dku odpovdajcho vzoru <Jpotekr> je zahjen blok. Zcela analogicky,
146 Kapitola 6. Zpracovn textu

blok je ukonen nalezenm prvnho dku odpovdajcho vzoru <J konec r>. Hranice
bloku jsou rovn soust bloku. Platnost adresy lze negovat metaznakem " ! /I uve
denm ped instrukc.
Je-li uvedena pouze jedna adresa, bude instrukce provedena na kadm dku,
jen odpovd tomuto vzoru. Nen-li uvedena dn adresa, je instrukce provedena
vdy. Instrukce maj jednoznakov nzvy. Program sed vdy nate jeden dek ze
vstupu a sna se na nj aplikovat jednotliv instrukce. Nen-li editor zapnut v tichm
reimu, pak po proveden posledn instrukce vype upraven dek na vstup.
Nsledujc pehled obsahuje zkladn instrukce vetn jejich argument.

d Ukon zpracovn aktulnho dku, s e d pokrauje dalm dkem a prvn


instrukc v programu. Zpracovvan dek je v dsledku z vstupu smazn.
n Zpracovvan dek se vype na vstup a program s e d zane zpracovvat
nsledujc fdek pomoc dalho pfkazu programu. '
p Ukon zpracovn aktulnho dku a vype jej na standardn vstup. In
strukce provede vstup i v ppad tichho reimu.
a, c, i Instrukce zpsobuj vloen novho textu za, msto nebo pfed aktuln pozici
v souboru. Text je uvdn jako argument, kad dek vkldanho textu mus
bt v programu zapsn na samostatnm dku a vyjma poslednho mus bt
ukonen metaznakem " \ /I .
r Instrukce slou ke vloen obsahu jinho souboru. Soubor je specifikovn
jako argument. Jeho jmno mus bt uvedeno za instrukc a oddleno jednou
mezerou.
w Ukon zpracovn aktulnho dku a vype jej do souboru. Soubor je in
strukci pedn jako argument oddlen jednou mezerou.
s Instrukce m tvar s / <J vzorr>/ <J nhrada r>/<Jpfepnae r>. Jedn se o nejastji po
uvanou instrukci substituci fetzce podle vzoru. Vzor je regulrn vraz. Prvn
-

podetzec vyhovujc vrazu je nahrazen argumentem <J nhrada r>. Program


s e d pouv regulrn vrazy ve star notaci, to jest napklad agregovan
vraz je nutn vymezit pomoc " \ ( /I a ,, \ ) /I . V nhrad je mon odkazovat
se na vstup odpovdajc zvorkovanm vrazm stejn jako u program
grep a egrep. Na celou st vstupu odpovdajc regulrnmu vrazu se lze
odkazovat pomoc metaznaku ,, &/1 .
Za instrukc lze pout pepna g. Pepna 9 zpsob nahrazen vech d
kovch vskyt odpovdajcch vzoru. Pepna p zpsob vytitn dku na
vstup, ignoruje argument - no Popis dalch pepna lze nalzt v manu
lov strnce programu.
Za instrukc jsou na dalch dcch uvedeny dal instrukce. Instrukce jsou
postupn vykonvny, dokud se nenaraz na metaznak " } /I .

Pro ilustraci uveme nkolik jednoduchch pklad.


$ cat /etc /pas swd I sed s / : . * / / I grep A g I pas te - s
game s gna t s gaae
6.2. Filtry a proudov editory 147

$ cat / e t c /ho s tname I sed ' s / \ ( . \ ) / \ lX/g '


pXhXoXeXnX iXxX
$ cat / e tc/passwd I
> sed - n ' rnova/ s r \ ( [ A : l * \ ) : \ ( [ A : l * \ ) : . * $ /Usr : \ 1 , K ey : \ 2 /p '
Usr : novakj , Key : OkgX 8 7 8 hd7xYY
Usr : novako , Key : N 7 j 8 n 9 0 h7Y5 s 1
Usr : novakp , Key : CH7 8 6 lDOM7QZs

Prvn pklad demonstruje "hladovost" nahrazovacho algoritmu. Substituce na


hradila veker znaky vyskytujc se za prvn dvojtekou przdnm etzcem -
- znaky byly odznuty. Ve vsledku je zobrazena pouze prvn poloka ze souboru
j e t c jpas swd, to jest uivatelsk jmno. V druhm ppad bylo substituc za kad
psmeno slova phoenix pidno X. Kdyby nebyl pouit pepna 9, psmeno by bylo
pidno pouze za prvn znak. Posledn pklad vyuv tichho reimu. Vypisovny
jsou pouze vsledky substituce, jeliko je pouit argument p. Substitun pkaz m
uvedenu jednu adresu, veker substituce jsou provdny pouze na dcch prefixo
vanch nova. kolem vzoru je v tomto ppad "zapamatovat si jmno a heslo".
Akoliv je vraz na prvn pohled komplikovan, sna se pouze pedejt hladovmu
nahrazovn.
Z poslednho pkladu je vidt, e programy napsan v jazyku sed se dost patn
tou. Autor komplikovanjch program pro s e d m leckdy po nkolika hodinch
problm st sv vlastn vtvory. Je to urit da za jednoduchost jazyka. Pi psan roz
shlejch program pro sed je dobr uchovvat je formou skriptu. Hlavika skriptu
mus obsahovat cestu k programu s ed. Ve skriptech je mon vytvet komente
pomoc metaznaku ,,# " . Komente se chovaj stejn jako v shellu.
Nsledujc pklad ukazuje typick pouit jazyka s e d k jednoduch transfor
maci dat. Transformace dat hraje dleitou roli pi pouvn roury. Ne vdy pracuj
jednotliv obslun programy s daty ve stejnm formtu. Program s e d pat mezi
nstroje, jimi lze poadovanou transformaci provst, nen-li pli sloit. Pedpo
kldejme, e uivatel m k dispozici vstupn soubor s definovanmi pojmy.
Begin
j ablko , j ahoda a hruska j e ovoce
c e snek a c ibu l e j e z e l enina
End
Toto bude ignorovano .
Begin
l i sp , scheme a ha skel j e j a zyk
End

Pedpokldejme, e si uivatel peje pevst data do tvaru podobnho Backus


-Naurov form. Pro transformaci dat si nape skript v jazyku s ed. Skript vyuv
blokovho pkazu.
$ cat zpracuj . sed
# ! /bin/sed - f

# v pot a z ber pou z e korek tni bl oky


r Begin/ , r End/ {
148 Kapitola 6. Zpracovn textu

# odst raneni zbyt ecno s t i , prevedeni separatoru


/ A \ ( Begin\ ) \ I \ ( End\ ) / d
sr * / / ;
s/ *$// ;
s / * , * / I /g
s / * a */ I / g

# preved d o c i l oveho tvaru


S/A\ ( . *\ ) * j e *\ ( . *\ ) $/\2 \ l /p
}
# vse mimo b l ok ignoruj
/ . * /d

Vsledek zpracovn vypad takto.


$ cat data . txt I . / zpracuj . sed
ovoce : : = j ab l ko I j ahoda I hruska
z e l enina : : = c e snek I c ibu l e
j a zyk : : = l i sp I scheme I ha skel

Na zvr kapitoly o proudovm editoru s e d je dobr zmnit se o programu t r.


Neformln eeno, program t r je chudm pbuznm programu s e d. Program t r
j e uren pouze pro pfeklad znak. V podstat j e schopen provdt podobnou in
nost jako program s e d pi substituci, program t r vak doke manipulovat pouze
s jednotlivmi znaky. Klasickm pouitm programu je peveden obsahu souboru
na velk i mal psmena. Program t r zpracovv soubor znak po znaku, na z
klad informac o vzorovch znacch a clovch znacch provede jejich nahrazen. Znaky
nevyskytujc se mezi vzory jsou ponechny beze zmny. Viz ilustrativn pklad.
$ echo ' Ahoj sve te . ' I tr ' a - z ' ' A- Z '
AHOJ SVETE .

V pedchozm pkladu byla pevedena mal psmena na velk, mezera a teka


byly ponechny beze zmny. Akoliv je t r velmi jednoduch nstroj, asto je pou
vn v kombinaci s pkazem f o r napklad ke hromadnmu pejmenovn soubor
a podobn. Pro detailn popis programu viz manulovou strnku.

Proudov zpracovn programem awk


Ke sloitjm manipulacm s textem lze pout dal nstroje. Pro zpracovn textu
byl vyvinut jazyk awk. Jazyk awk je pomrn komplexn nstroj. Umouje pouvat
promnn, podporuje i podmnn vrazy. Jeho charakter je ale opt proudov. To jest
programtor nemus explicitn pouvat pkazy pro natn vstupnch dat.
Program pro awk se skld z pkaz v nsledujcm tvaru:
BEGIN { <Jpfkazy r:> }
END { <Jpfkazyr:> }
6.2. Filtry a proudov editory 149

<l vzorl> { <lpfkazy l> }


<lzatekl> , <lkonec l> { <lpkazy l> }
{ <l pfkazy l> }
Obecn m pkaz tvar <l vzor l> <l blokl>. Libovoln z obou st me bt vynechna.
Jsou-li vynechny pkazy, provede se vytitn vstupnho dku. Vzor m podobn
vznam jako v jazyku s ed. Vymezuje st textu, na kterou se vztahuj pkazy. Oproti
jazyku s e d obsahuje awk dal dva vzory. Vzor BEGIN je splnn pouze na zatku
souboru jet ped zpracovnm prvnho dku. Vzor END je splnn po zpracovn
poslednho dku. Tyto vzory se obvykle pouvaj k inicializaci programu a zv
renmu vpisu. Ostatn ti ppady uveden v pedchozm vtu vykazuj stejn
chovn jako u programu s ed.
Jazyk awk obsahuje mnoho vestavnch funkc, zahrnujcch manipulaci s etzci,
jednoduchou aritmetiku, vstupn vstupn operace a podobn. Zjemce odkazuji na
manulov strnky programu. Zkladn dic konstrukce jazyka awk jsou
i f ( <lpodmnka l <lpfkaz l>
i f ( <lpodmnka l <lpfkaz l> e l s e <lalternativa l>
whi l e ( <lpodmnka l <lpfkaz l>
do <lpfkaz l> whi l e ( <lpodmnka l
f o r ( <l inicializace l> i <lpodmnka l> i <l vraz l <lpfkaz l>
for ( <lpromnn l> i n <lpole l <lpkaz l>

dc konstrukce jsou tm ekvivalentn konstrukcm jazyka C, jeliko syntaxe ja


zyka awk vychz ze syntaxe jazyka C. Je ale dobr uvdomit si, e napklad vnitn
pkaz f o r pro awk nem nic spolenho s pkazem f o r dostupnm v shellu.
Podmnn vraz i f je shodn s jazykem C, kad <lpfkaZ l>14 je ukonen znakem
stednk nebo novm: dkem. Posloupnost pkaz lze uzavt mezi sloen z
vorky, tm vznikne blokov pkaz. Konstrukce do . . . whi l e . . . se od druh
konstrukce whi l e li mstem proveden kontroly limitn podmnky. Pi pouit
do . . . whi l e . . . je limitn podmnka testovna a na konci, tm pdem cyklus
probhne vdy alespo jednou. Prvn syntaxe konstrukce for je shodn s jazy
kem C. Nejprve je proveden pkaz <l inicializace l>. Tlo cyklu, to jest <lpfkaz l>, je
vykonvn, dokud je splnna <lpodmnkll l>. Po kadm prchodu cyklem je proveden
<l vraz l>. Druh konstrukce slou pro iteraci pes prvky <lpolel>. Pi i-tm prchodu
je <lpromnn l> navzna na i-t prvek <lpolel>.
Jazyk awk umouje rozdlovat dky vstupnho souboru na slova. V pkazech
je dle mon odkazovat se na vstupn slova stejnm zpsobem jako na argumenty
skriptu v shellu. Pi startu interpretu awk me bt definovn oddlova regulrnm
vrazem. To je proti programu cu t kvalitativn posun kupedu. K tomuto elu slou
argument - F<l vzOrl>, kde vzor je regulrn vraz bez hraninch metaznak /" ,, .

Nyn si pro demonstraci uvedeme kd, kter e stejn problm jako v pedelm
textu - vypsn uivatelskho jmna a hesla.

14
Pojmem pkaz jsou nyn oznaovny elementrn pkazy.
1 50 Kapitola 6. Zpracovn textu

$ cat /etc/pas swd I


> awk - F ' : ' , / A nova/ { print " Us r : " $ 1 " , K ey : " $ 2 ; } ,
Usr : novakj , Key : OkgX8 7 8 hd7xYY
Usr : novako , Key : N 7 j 8n9 0h7Y5 s 1
Usr : novakp , Key : CH7 8 6 1 DOM7 Q Z s

een problmu pomoc jazyka awk je mnohem pehlednj. K vypsn daj


byla pouita vnitn funkce print. Pro plnost uveme i pklad pouit jazyka awk
k transformaci vstupnch dat. Kd je opt ekvivalentn kdu v jazyku s e d z posledn
ukzky.
$ cat zpracuj . awk
# l / u s r / b i n / awk - f

/ ABegin/ , / A End/ {
# ods t ran vstup
i f ( ( $ 1 = = " Begin" ) I I ( $1 " End" ) )
next ;

# na j di a nahrad vzory
aut = " " i
for ( i = 1 ; i < = NF - 2 ; i ++) {
i f ( ( $ i == " a" ) I I ( $ i == " , " ) )
cont inue ;
gsub ( / , + $ / , " " , out ) ;
out = out ( out ? " I " : " " ) $ i ;

# t i skni vys l edek


print $NF" : : = " out ;

Uveden een nen zdaleka nejjednodu. V jazyku awk je mon vytvoit


i krat. Z ukzky jsou ale patrn typick rysy procedurlnho programovn. Oproti
programu v jazyku s e d je vsledek bez vtch problm iteln i po delm ase.
Mezi dal nstroje pvodn uren pro zpracovn textu se ad i jazyk PERL.
Jeho autor se snail zkombinovat nejlep vlastnosti z jazyk C, sed, awk, sh, csh,
Pascal, Fortran a LlSP. Vznikl zcela ojedinl jazyk. Jednou skupinou programtor
je odsuzovan pro svou sloitost, jinmi chvlen pro slu eit problmy. Popis jazyka
PERL je zcela mimo rozsah tohoto textu. Hlavnmi rysy jazyka jsou reakce na kontext
a vlastn implementace regulrnch vraz obsahujcch mnoh dal rozen.

6.3. Celoobrazovkov editor vi


Ke standardn softwarov vbav operanho systmu Unix odjakiva pat fd
kov editor ed. Editor ed umouje interaktivn editovat obsah souboru. Jeliko je
editor orientovn dkov, uivateli neposkytuje pli velk komfort. Na druhou
stranu je editor ed velmi mal a nenron. Mezi sprvci systm je velmi oblben -
- v ppad havrie systmu pat editor ed do skupiny program, kter funguj
6.3. Celoobrazovkov editor vi 151

tm vdy. Rozenm editoru ed vznikl editor ex. Editor ex ji obsahoval i vizul


n md, v nm byl schopen pracovat jako celoobrazovkov editor. Celoobrazovkov
textov editor umouje pracovat s vce dky textu souasn. Jeliko byl vizuln
reim editace velmi oblben, jednoho dne se autoi rozhodli spoutt vizuln reim
pmo po startu editoru. Editor poslze pektili na v i .
Editor vi j e jednoznan nejpouvanjm editorem v Unixu. Svm masivnm
rozenm zastiuje i svho vnho rivala - editor GNU Emacs, pedevm z d
vodu mnohem men velikosti, ta jej ped uruje pedevm pro editaci systmovch
soubor. Jeliko je editor soust kadho Unixu, je dobr mt alespo zkladn
znalosti jeho pouvn, i kdy uivatel preferuje jin textov editor.

Reimy editoru
Asi nejmarkantnjm rozdlem proti vem ostatnm textovm editorm je mno
stv reim, ve kterch me editor pracovat. Nezkuenho uivatele mohou reimy
editoru odradit od jeho pouvn. Faktem ale zstv, e pokud uivatel zvldne
editor vi obstojn ovldat, me pi pravch text dosahovat nevdan rychlosti,
zvl pokud um pst "vemi deseti".
Editor vi pracuje ve tech zkladnch reimech.
Vkldac reiim slou ke vkldn novho textu do souboru.
Pfkazov reiim slou pro zadvn pkaz vkldanch po jednotlivch zna
cch. Jednotliv znaky buto provdj pedem stanoven innosti, nebo ovliv
uj platnost dalch vkldanch znak. Pkazy slou pro pohyb v textu, prci
s bloky textu a modifikaci textu.
Reiim poslednho fdku slou k zadvn sloitjch pkaz. Reim poslednho
dku se pouv napklad pi prohledvn a nahrazovn textu v souborech
a manipulaci se soubory.
Pi sputn editoru vi je editor zapnut v pfkazovm reiimu. Pro pkazov reim
jsou charakteristick nkolikaznakov pkazy zadvan z klvesnice. Mezi nimi
jsou i pkazy umoujc pechod do ostatnch reim. Pkazem ,, : " se provede
pechod do reimu poslednho fdku, kter slou k zadvn sloitjch pkaz. Po
moc pkaz "a " , " i " nebo ,,0 " lze pejt z pkazovho reimu do vkldacho reiimu .
Zpt d o pkazovho reimu s e lze dostat klvesou 1 ESC I. V reimu poslednho dku
lze pro navrcen do pkazovho reimu pout przdn pfkaz - to jest sta stisknout
klvesu 1 ENTER I. Pm pechod mezi vkldacm reimem a reimem poslednho dku
nen mon. Nsledujc stavov automat zobrazuje pechody mezi reimy editoru.

--
--
-- - .. .. .. .. .. ..
--
pkaz : _- pkazy a, i, o

4 : /: : : : /;;" ,t'I :I":: : : : :?;v


d
152 Kapitola 6. Zpracovn textu

Pokud si uivatel nen jist aktulnm pracovnm reimem, po stisknut klvesy


1 ESC 1 bude vdy pepnut do pkazovho reimu. Pokud se ji v pkazovm reimu
nachzel, nic se tm neme pokazit. Klvesa 1 ESC 1 zde nem speciln vznam. Nyn
si strun popeme jednotliv reimy editoru a styl prce v nich. Popis samozejm
nen vyerpvajc, pro detaily viz manulovou strnku.

Vkldac a pkazov reim


Pro uivatele je nejpirozenj vkldac reim. Vkldac reim slou k zadvn
novho textu, nkter klony editoru, napklad vim, umouj ve vkldacm reimu
modifikovat ji existujc text. Obecn ale plat, e vkldac reim slou pouze ke vkl
dn textu. Kad alfanumerick znak je ve vkldacm reimu ihned po stisku p
slun klvesy vloen na pozici kurzoru. Kurzor se po stisku klvesy posune o jednu
pozici doprava. Napklad pi postupnm stisku klves ,)
a, h, o, j se na pozici kurzoru
vlo text "ahoj " . Chybn vloen znaky lze smazat klvesou zptn mezera B. Na
nov dek lze bhem vkldn pejt stiskem klvesy 1 ENTER I. Vkldn je ukoneno
klvesou 1 ESC pvodn verze editoru ukonuje vkldn stisknutm libovoln funkn
klvesy.
Po svm startu je editor vi zapnut v pkazovm reimu. Uivatel po startu editoru
vid kurzor na prvnm dku, pod nm jsou dky zanajc symbolem vlnka -. Vlnky
oznauj konec souboru .

Informace uveden v pravm dolnm rohu nemus bt vdy zobrazeny. V tomto


ppad se jedn o pozici kurzoru v souboru. Slovo Al l zna, e na obrazovce je
zobrazen cel soubor. Do vkldacho reimu lze pejt pomoc pkaz a, i nebo o.
V pkazovm reimu je mon ped pkazem zadat slo n postupnm stiskem
selnch klves v poad cifer sla n. V tomto ppad se dan pkaz provede
n-krt. Pkaz i - insert - zahj vkldn textu na pozici kurzoru . Pkaz a - append -
- zahj vkldn textu jeden znak za pozic kurzoru. Konen pkaz o provede
vloen novho dku tsn za dek, na kterm stoj kurzor, a zapne reim vkldn
na potku tohoto novho dku. Pedpokldejme, e uivatel vloil nsledujc text
a pomoc klvesy 1 ESC 1 se vrtil do pkazovho reimu.
To be , or not t o be- - - t hat i s t he quest i on :
Whether ' t i s nob l er i n the rq i nd to suffer
The s l i ngs and arrows of out rageous fort une
Dr t o t ake 8rMS aga i nst a sea of t roub l es ,
And b y oppos i ng end t herq l
6. 3 . Celoobrazovkov editor vi 153

Pozice kurzoru se zmnila, ale daj Al l informuje, e se cel soubor veel na obra
zovku. Nyn je kurzor postaven na tece - poslednm vloenm znaku. Pkazov
reim nabz irok monosti pro pohyb kurzoru v textu. Tm ve vech ppadech
by pro pohyb kurzoru mly fungovat kurzorov klvesy. Pokud nefunguj napklad
vlivem nastaven terminlu, lze pout jejich alfanumerick ekvivalenty. Nsledujc
tabulka shrnuje nejastji pouvan pkazy pohybu.

pkaz vznam
h posun o jeden znak vlevo
j posun o jeden dek dol
k posun o jeden dek nahoru
1 posun o jeden znak vpravo
b posun na zatek pedchozho slova
w posun na zatek nsledujcho slova
posun na zatek dku
$ posun na konec dku

Pokud by nyn uivatel chtl napklad oddlit prvn dek od zbytku textu mezerou,
me to provst napklad nsledovn. Uivatel nejprve pejde na prvn dek a zad
pkaz o. Tmto pkazem vlo za prvn dek nov przdn dek a automaticky je
zapnut vkldac reim. Stiskem I ESC I se uivatel dostane opt do pkazovho reimu.
10 be , or not t o be - - - t nat i s t ne quest i on :

Wnetner ' t i s nob l er i n tne M i na to suffer
lne s l i ngs ana arrows of out rageous fortune
Dr t o t ake arMS aga i nst a sea of t roub l es ,
Ana by oppos i ng ena t nel .

Pokud je poteba pesouvat se v textu po vtch vzdlenostech, je dobr vyuvat


buto pkaz pohybu po strnkch, nebo pkaz pohybu po logickch celcch textu.

pkaz vznam
C-b posun o obrazovku dozadu
C- f posun o obrazovku dopedu
( posun na zatek pedchoz vty
) posun na zatek nsledujc vty
{ posun na zatek pedchozho odstavce
} posun na zatek nsledujcho odstavce

Pod pojmem vta je mylena sekvence znak ukonen jednm ze znak teka, rka,
dvojteka nebo stednk. Odstavec je ukonen przdnm dkem. Pokud je poteba
pesunout se na dek danho sla, je mon pout pkaz <l dekr>G, kde <l dekr>
je slo zadan po cifrch. Napklad pro skok na prvn dek souboru sta zadat
1 54 Kapitola 6. Zpracovn textu

pkaz lG. Pomoc pkazu G je mon pesunout se rychle na konec souboru pouze
stiskem G bez selnho argumentu.
Pozici kurzoru lze mnit i pomoc vyhledvn. Pkazy / a ? slou k pmmu
a zptnmu hledn vzoru v textu. Poten pozice vyhledvn je pozice kurzoru.
Vzorem je regulrn vraz. Po zadn pkazu je uivatel vyzvn k zadn vzoru na
poslednm dku, zadvn je ukoneno klvesou 1 ENTER I. Pokud v danm smru nen
nalezen dn vskyt odpovdajc vzoru, prohledvn zane znovu od zatku
souboru. Pkazem n se lze pesunout na dal vskyt odpovdajc vyhledvacmu
vzoru.

Modifikace textu a prce s bloky


Editor vi umouje pojmenovat pozici kurzoru a dle se na ni podle jmna odka
zovat - editor pouv systm pojmenovanch znaek - marks. Znaku lze vytvoit
pkazem m<ljmno t>, kde <ljmno t> je jeden znak abecedy. Na znaku se lze odkazovat
pomoc pkaz ' <ljmno t> a ' <ljmno t>. Pkaz ' <ljmno t> pesune kurzor na msto
definice znaky danho jmna, druh provede pesun kurzoru na zatek dku,
kde byla znaka definovna.
V pkazovm reimu lze krom pesun kurzoru opravovat nebo modifikovat text.
Veker proveden zmny lze vrtit pomoc pkazu u - undo. Mezi zkladn opravn
pkazy pat x, X a r. Pkaz x smae znak na pozici kurzoru, pkaz X smae znak
vlevo od kurzoru a text od sv pozice a do konce dku posune o jeden znak vlevo.
Pkaz r slou k oprav znaku. Po stisku klvesy r je nutn stisknout opravn znak,
kter je vloen na pozici kurzoru msto stvajcho znaku. Pkaz - slou k pevodu
malch psmen na velk a obrcen. Pkaz - zrove posune kurzor o znak vpravo.
Dalm pkazem je J slouen dk . Pkaz z aktulnho dku odstrann znak
-

"nov dek". Znak "nov dek" nelze odstranit pkazem x. Pi slouen dk


dojde k napojen nsledujcho dku za posledn znak v aktulnm dku. Po napo
jen jsou pvodn dky oddleny jednou mezerou. Posledn dva dky v ukzkovm
textu lze slouit napklad pomoc pkazu GkJX 1 - . Vsledkem pkazu je nsledujc
text.
To be , or not to be - - - t nat i s t ne uest i on :

Wnetner ' t i s nob l er i n t ne M i na t o suffer


Tne sl i ngs ana arrows of out rageous fort une
Dr t o t ake arr'lS aga i nst a sea of t roub 1 es a by 01'1'0s i ng ena t nerq .

Al l

sti textu lze mazat nejen na rovni znak, ale i na rovni vtch blok . K tomuto
elu slou pkaz d nsledovan pkazem pesunu. Idea je naprosto jednoduch,
po zadn pkazu d je teba zadat dal pkaz, kterm uivatel zadv clov msto.
Ve mezi pozic kurzoru a clovm mstem je smazno. Speciln pkaz dd smae
dek na pozici kurzoru. Pomoc d A a d$ je smazn text od pozice kurzoru do
zatku /konce dku. Pkazem dw je smazna st slova od pozice kurzoru do
zatku dalho slova. Pkazem dlG je smazn text od zatku souboru do pozice
6.3. Celoobrazovkov editor vi 155

kurzoru, pkazem dG od pozice kurzoru do konce souboru a tak dle. Pi mazn


blok lze samozejm vyuvat i znaky.
Smazan text se ukld do specilnho bufferu . Z bufferu lze text opt zkoprovat
do textu pomoc pkaz p a P. Prvn provede kopii a pesune kurzor na konec
vloenho bloku. Druh pkaz pozici kurzoru nemn. Pkaz y se chov stejn
jako pkaz d, slou k pesouvn oblast do specilnho bufferu, ale neprovd
jejich vmaz. Napklad pkaz yy2 P m stejn vznam jako pkaz dd3 P, to jest
aktuln dek vlo do textu jet dvakrt. Jedin rozdl je v tom, e v druhm
ppad byl dek smazn a tikrt vloen, kdeto v prvnm pouze zkoprovn do
bufferu a dvakrt vloen. Ve popsan zpsob neumouje koprovat bloky textu
mezi soubory. Kad soubor m bhem editace vlastn buffer. Bloky textu lze ale
koprovat i jinmi zpsoby, teba pomoc registru.
Registry jsou speciln pojmenovan buffery. Pi pouvn pkaz d, y a p, kter
slou pro prci s buffery, lze vdy nejprve specifikovat jmno registru. Jmna registru
jsou jednoznakov a skldaj se z psmen abecedy. Ped pkazy d, y a p lze specifiko
vat registr pkazem " <ljmno r>. Potom nebude editor pouvat implicitn buffer, ale
registr dan jmnem. Registry jsou pi prci v editoru mezi soubory sdleny. Pokud
napklad uivatel pouije pi editaci jednoho souboru pkaz lG" ayy, ulo prvn
dek do registru jmnem "a " , pkazem " aP provedenm v jinm souboru provede
vloen dku z bufferu. Na zvr dodejme, e jmenn prostor pro registry a znaky
je oddlen. To jest definic znaky "a " se neovlivn obsah registru "a " a obrcen.
Znaky a registry v editoru spolu vzjemn nijak nesouvisej.

Reim poslednho dku


Reim poslednho dku slou k zadvn pkaz nahrazovn a manipulace se sou
bory. Z pkazovho reimu se lze dostat do reimu poslednho dku pkazem ,, : ".
Na zatku poslednho dku se zobraz dvojteka - uivatel je vyzvn k dokonen
pkazu. Pkaz lze ukonit stiskem klvesy 1 ENTER I. Pokud je pkaz przdn, editor
opt pejde do pkazovho reimu. Pokud je pkaz neprzdn a je ve sprvnm
tvaru, provede se patin akce. V opanm ppad je zobrazeno chybov hlen.
Do prvn skupiny pat pkazy manipulujc se soubory. Vechny pkazy lze
pouvat ve tvaru <lpkaz r> <l souborr>. Pokud je za pkazem uveden vykink a je-li
to mon, pkaz je vdy proveden. Pkaz w slou k uloen textu do souboru. Pi
prvnm uloen je nutn uvst jmno souboru, pi dalm ukldn to ji nutn nen.
Pedpokldejme, e uivatel chce uloit text do souboru haml e t . txt .

To be , or not to be - - - t hat i s t he quest i on :

Whether ' t i s nob l er i n t he M i na t o suer


The sl i ngs ana arrows o out rageous ortune
Dr t o t ake arMS aga i nst a sea o t roub l es ana by oppos i ng ena t heM .

: w haM l et . t xt l

Po stisku klvesy 1 ENTER 1 se v poslednm dku zobraz zprva


1 56 Kapitola 6. Zpracovn textu

" haml e t . txt" [New] SL , 2 1 0C wri t ten

kter uivatele informuje o spnm uloen souboru. Kdyby ji soubor


haml e t . txt v adresi existoval, editor by text neuloil, ale vypsal by varovn
hlen.

F i l e exi s t s (use ! to override )

V podobnch situacch se pouv znak vykink za pkazem. Varianta pkazu


bez vykinku je "bezpen", nedovol uivateli zapsat do souboru, jen nem na
staveno prvo zpisu, nepovol zapsat do existujcho souboru a podobn.
Dalm uitenm pkazem je e . Pkaz e oteve nov soubor danho jmna.
Pokud nebyl dosavadn textov soubor uloen, je nutn jej buto nejprve uloit,
nebo pout pkaz e ! . Textov editor lze ukonit pkazem q, pokud je poteba
ukonit editor bez uloen dat, mus bt pouit pkaz q ! . Pkay zpisu dat do
souboru a ukonen editoru lze pouvat zrove pomoc wq a wq ! . Pkaz wq m
i svj ekvivalent v pkazovm reimu - Z Z .
asto pouvanm pkazem je I lahrazovn podle vzoru . Jeho syntaxe je podobn
jako v programu sed.

<Jpotekr> , <J konecr>s / <J vzor r>/ <J nhrada r> / <Jpepnaer>

Adresy <Jpotekr> a <Jkonec r> ohraniuj blok, v nm se nahrazovn vykonv. Ad


resy se v editoru vi mohou odkazovat i na aktuln dek pomoc symbolu teka " . ".
dky je mono vyjdit i prstkem k aktulnmu dku ve tvaru + <J slo r> nebo
- <J slo r>. Rovn je mon odkazovat se na definovan znaky pomoc vraz
\ <Jjmno r> a ' <Jjmno r>. Znak $ je odkaz na konec souboru. Napklad adresy 1 , $
oznauj cel soubor, adresy , $ oznauj blok od aktuln pozice kurzoru do konce
.

souboru. Adresy - 1 0 , ' t oznauj text zanajc deset dk ped pozic kurzoru
a konc na znace jmnem " t " .
Editor vi je tradin nstroj systmu Unix - pln respektuje filosofii operanho
systmu. Pro uivatele zatenka vak me bt mnostv jednopsmennch p
kaz a nkolik reim editoru pli velkm soustem. I pes tuto poten nevhodu
se lze nauit pracovat s editorem pekvapiv efektivn. Mezi nejznmj klony edi
toru vi pat program vim, jeho autorem je Bram Moolenaar.

6.4. Celoobrazovkov editor GNU Emacs


Editor GNU Emacs se vymyk vem zaitm pedstavm o softwarovch dlech.
Je to program, kter je svou filosofi diametrln odlin od editoru v i . Bez vt
nadszky lze ct, e GNU Emacs je program jdouc proti duchu Unixu. Zdaleka
se nejedn o nstroj ec pouze zce vymezen problm, je to komplexn nstroj,
v nm lze stejn dobe editovat textov soubor, jako st potu nebo prohlet WWW
strnky.
6.4. Celoobrazovkov editor GNU Emacs 157

GNU Emacs navrhl Richard M. Stallman, pvodn verze byla sadou maker pro
textov editor TECO z konce edestch let. V memorandu [Sta81 ] byl editor poprv
pedstaven. Clem bylo vytvoit konfigurovateln, roziiteln a sebedokumentujc
textov editor. Jdro editoru GNU Emacs je naprogramovno v jazyku C. GNU Emacs
v sob zahrnuje i vlastn programovac jazyk - Emacs LlSP. V tomto dialektu LlSPu
je naprogramovn zbytek editoru vetn cel aplikan logiky. Tento postup je v soft
warov historii dost ojedinl, autor v podstat nejprve vytvoil specifick progra
movac jazyk a v nm vyeil zbytek problmu. Emacs LlSP by neml bt sniovn
na rove pouhho "makrojazyka", je to velmi siln nstroj umoujc uivateli
efektivn mnit chovn textovho editoru. Od svch prvnch verz ji proel editor
GNU Emacs pes 21 vtch reviz. Autor pi psan tohoto textu pouval GNU Emacs
verze 20.5.2. Je ctyhodn, e i pes mnostv velkch zmn si editor stle zachovv
tm stoprocentn zptnou kompatibilitu.

Buffery, okna a rmce


Pi pouvn editoru se uivatel setk z nkolika zkladnmi pojmy, jim je
nezbytn rozumt. Zkladnm pojmem je buffer. Buffer je objekt, kter v sob udruje
textov informace. Buffery jsou vtinou asociovny s editovanm souborem. Obecn ale
mohou existovat buffery bez vazby na soubor. Napklad buffery obsahujc vstup
sputnho programu, informan buffery, buffery s npovdou a tak dle. Buffer je
v podstat " virtuln entita", pro jeho zobrazen slou okno - window. Okno je fyzick
st obrazovky zobrazujc buffer. Okno nen s bufferem svzno pevn, na pokyn
uivatele je mon v jednom oknu postupn zobrazit rzn buffery. Obdlnkov
oblast obsahujc okna se nazv rmec - frame. Okna nejsou schopna existovat bez
rmce. Bezprostedn po sputn editoru GNU Emacs je zpravidla vytvoen jeden
rmec a v nm jedno okno. Rmce, okna i buffery lze bhem prce s editorem vytvet
i ruit. Ji od potku vvoje editoru byly kladeny velk poadavky na prci s vce
soubory zrove. Dky architektue rmc, oken a buffer lze pohodln zpracovvat
nkolik soubor zrove. Vzjemn vztahy rmc, oken a buffer jsou schematicky
zachyceny na nsledujcm obrzku. Jednotliv buffery jsou v ukzce nazvny A, B
a C. Z ukzky je zejm, e rmec me obsahovat vce oken a jeden buffer me bt
zobrazovn ve vce oknech zrove.

.
rmec
rmec

&J ._-'-"
okna ::: - - -
-
.. .. .. .. .. - - - .
C ------ '--:::::, okna
-----
---
" " " ',,_ B A A ___ -
---
.. .. .......... ::: .... .. .. .

Pi prci v editoru je kadmu bufferu pidlen prv jeden hlavn md - major


mode. Hlavn md m za kol pizpsobit chovn editoru pro editaci specifickho
souboru. Napklad hlavn mdy pro editaci zdrojovch soubor v jazycch LlSP
a C se budou vrazn liit. Je to dno odlinou syntax obou jazyk a rovn odli
nmi potebami pi editaci soubor obsahujcch zdrojov kdy v LlSPu a v jazyku C.
158 Kapitola 6. Zpracovn textu

Hlavn mdy nejastji pidvaj novfunkce a klvesov zkratky. V editoru GNU Emacs
nejsou akce pevn svzny s klvesovmi zkratkami. Kad interaktivn funkce m
sv jmno a jej voln me bt na mapovno na libovolnou klvesu. Napklad
klvesov ipka G je standardn namapovna na funkci f o rward - ehar. Alfanu
merick znaky jsou na mapovny na funkci s e l f - i n s e rt - eommand, je provede
vloen znaku ze stisknut klvesy na pozici kurzoru. Toto lenn je velmi vhodn,
umouje uivateli mnit chovn editoru pemapovnm klves nebo peprogra
movnm ji na mapovanch funkc dle poteby.
Pokud uivatel naraz na soubor, pro kter neexistuje hlavn md, nen pli
velk problm jej vytvoit. Krom hlavnch md disponuje editor GNU Emacs
vedlejmi mdy minor mode . Vedlej mdy nejsou zvisl na bufferu a navzjem
-

se nevyluuj. Zpravidla pidvaj njakou vlastnost, teba zobrazuj slo dku na


stavov lit nebo provdj zvraznn syntaxe v editovanm textu. Programovn
vedlejch md je podstatn komplikovanj ne programovn hlavnch md.

Zklady prce s editorem


Editor me bt sputn buto bez argumentu, nebo mu lze pedat jako argument
cestu k souboru. V druhm ppad GNU Emacs vytvo jeden rmec s jednm ok
nem, dan soubor nate do novho bufferu a ten zobraz v okn. Po naten se editor
podle jmna a obsahu souboru rozhodne, jak hlavn md zvol pro pslun buf
fer. Napklad, bude-li jmno souboru ukoneno . sem, zvol s e heme - mode, pokud
bude ukoneno . txt, je zvolen t ext - mode a tak dle. Pokud nen editor sputn
se zadanm souborem, v okn po svm sputn zobraz krtkou npovdu.

I corqe t o GNU E Macs , one cOMponent of a L i nux - based GNU systeM .

Get ne l p C-n ( Ho l d down C'RL and press n )


Undo cnanges C-x u E x i t E Macs C-x C-c
Get a t ut or i a l C-n t Use I nfo to read docs C-n i
Act i vat e r'lenubar f1Q or ESC ' or H- '
- - 22 : - - -f 1 *scrat cn* ( L i sp I nt erac t i on ) - -L 1 - - CQ - - .op - - - - - - - - - - - - -
f or i nforMat i on about tne GNU Proj ect and i t s goa l s , t ype C - n C - p .

Kad okno je zakoneno stavovm dkem a minibufferem. Stavov dek m za kol


informovat uivatele o stavu aktulnho bufferu. Stavov dek je samozejm pln
programovateln, o jeho obsah se staraj vedlej mdy editoru. Nejastji zde bv
zobrazen nzev bufferu, pouit kdovn a jmno hlavnho mdu . Z pedchozho sta
vovho dku lze vyst, e se jedn o prvn rmec, v nm je zapnuto kdovn
IS0 8859 2, buffer zobrazen v aktulnm okn se jmenuje * s e rat eh* . Buffer je
zapnut v mdu l i sp - interae t i on umoujcm vyhodnocovat vrazy Emacs
LlSPu. Kurzor se nachz na prvnm dku, nultm sloupci. Symbol t op oznauje, e
okno zobrazuje pouze zatek bufferu. Minibuffer zpravidla slou k informativnm
elm nebo pro pedvn informac spoutnm funkcm. Napklad pi zavo
ln funkce uloen souboru je uivatel pepnut do minibufferu a zadv zde jmno
souboru. V pedchoz ukzce minibuffer obsahuje informace o klvesov zkratce
C - h C - p.
6.4. Celoobrazovkov editor GNU Emacs 1 59

vodn strnka GNU Emacsu je pouze informativn. Pi stisku libovoln klvesy


je vodn strnka smazna a do bufferu je vloen varovn text.
Tn i s buer i s or notes you aon ' t want t o save , ana or L i s eva l uat i on .
I you want t o create a i l e , v i s i t tnat i l e w i t n C - x c - ,
t nen enter t ne t ext i n t nat i l e ' s own buer .


- - 22 : ** - F 1 *scratcn* ( L i s I nt eract i on ) - - L 5 - - C Q- - A l l - - - - - - - - - - - - -

Oproti pvodnmu stavu dolo k vyitn minibufferu. Ve stavovm dku pibyly


ped oznaenm rmce dv hvzdiky * * . Tmto symbolem je v editoru znaeno, e
obsah bufferu nen synchronizovn se souborem. Varovn text obsaen v bufferu
uivateli oznamuje, e jeho obsah bude po ukonen editoru ztracen. Pi svm ukon
en GNU Emacs nabz uivateli uloen obsahu modifikovanch buffer. Buffer
* s c ra t c h * je vjimkou, slou jako pomocn buffer na poznmky a vyhodnoco
vn vraz v Emacs LlSPu.
Chovn editoru GNU Emacs je pi editaci pirozen. Vechny stisknut alfanu
merick znaky jsou vloeny do textu na pozici kurzoru. Pohyb po textu je rovn
jednoduch, vyuvaj se kurzorov ipky a klvesy pro strnkovn. Zkladn p
kazy pro pohyb po dku jsou stejn jako u shellu GNU Bash, tvrci shellu je pevzali
z editoru GNU Emacs. Klvesov zkratky jsou v kapitole 2. Zajmavou funkci m
tabultor, to jest klvesa 1 TAB I. Prakticky kad hlavn md jej redefinuje, tradin
bv svzn s funkc zarovnvn. Napklad pi editaci zdrojovch kd v jazyku C
je na tabultor navzna funkce c - indent - c ommand vyrovnvajc dky podle
struktury blok ve zdrojovm kdu.
Pohyb po souboru je jednoduch, pkazy jsou krom ipek definovny i na kl
vesov zkratky. Pesun po znacch vlevo, vpravo, dol a nahoru je navzan na
klvesy C - b, C - f, C - p a C - n. Klvesov zkratky jsou odvozeny od anglickch zkra
tek pkaz. K pohybu po strnkch dol a nahoru slou krom klves strnkovn
i klvesy M - v a C - v. Pomoc C - l se provede vycentrovn bufferu v okn tak, e kur
zor bude postaven uprosted okna. Pomoc M - f, M - b je mon pohybovat se o slovo
vped a vzad. Klvesy M - a, M - e slou k pesunu na zatek a konec vty.
Ve popsan klvesov zkratky se vztahuj samozejm pouze na standardn
konfiguraci editoru GNU Emacs. Navc jednotliv verze editoru GNU Emacs se
mohou v implicitnm nastaven klvesovch zkratek nepatrn liit. Napklad mezi
revizemi 20 a 21 je rozdl ve standardnm navzn funkc na klvesch 1 DE L 1 HOME 1
a 1 EN D I. Vznam klves lze ale kdykoliv pedefinovat. Pokud chce uivatel pedefi
novat vznam klvesy, ml by se nejprve pesvdit, zdali na n ji nen definovna
funkce. Definovn klves bude rozebrno dle.

Prohledvn textu a nahrazovn


Mezi standardn funkce editoru GNU Emacs pat i prohledvn. Prohledvat
lze text buto hlednm podetzce, nebo pomoc regulrnch vraz . Klvesy C - s, C - r
hledaj podetzec pmo nebo zptn od pozice kurzoru. Pi stisku C - s je uivatel
1 60 Kapitola 6. Zpracovn textu

minibufferem vyzvn k zadn sti etzce. Text je zadvn po psmenech, pi ka


dm zadanm psmenu pesune editor kurzor na prvn vyhovujc pozici. Na dal
vyhovujc pozici se kurzor pesune po optovnm stisku C - s, ppadn po zadn
dalho znaku, kter jet z mnoinu prohledvanch slov. Pedpokldejme, e
uivatel se pesunul na zatek bufferu a stiskl klvesy C - s f i l C - s .
Th i s buer i s or not es you aon ' t want t o save , ana or L i sp eva l uat i on .
I you want t o crea t e a i l e , v i s i t that i l w i t h C - x c - ,
t hen enter t he t ext i n t hat i l e ' s own buer .

- - 22 : ** - F 1 *scrat ch* ( L i sp I nt eract i on I search ) - - L 2 - - C44 - - A l l - - - -


I - search : i 1

Kurzor se pesunul na druh vskyt slova f i l e . Protoe po zadn t psmen byla


opt stisknuta klvesa C - s. Pokud chce uivatel prohledvn ukonit, sta stisk
nout libovolnou funkn klvesu. V editoru funguje rovn klvesa C - g navzan na
funkci keyboard - qu i t , kter ukon vtinu pkaz. Prohledvn pomoc regu
lrnch vraz se zahj stiskem C - M - s nebo C - M r, jinak funguje analogicky. Pomoc
-

klves M - %, C - M - % se provd nahrazovn v textu. Nahrazovat lze opt buto pod


etzce, nebo pomoc regulrnch vraz. Zkladn ovldn editoru GNU Emacs je
vcelku intuitivn, proto jej zde dle nebudu rozebrat. tene odkazuji na integrova
nou npovdu editoru GNU Emacs a tutoril k ovldn, kter lze vyvolat stiskem
C - h t . Dky Milanu Zamazalovi si jej mete projt i v etin.

Prce s buffery, okny a rmci


Pi prci s editorem hraje dleitou roli prce s buffery, okny a rmci. Na rovni
bufferu se jedn o operace uloen souboru, naten souboru, vloen obsahu sou
boru do editovanho textu, ppadn o uzaven bufferu. Nsledujc tabulka ukazuje
seznam nejpouvanjch klvesovch zkratek vetn nzv funkc.

klvesa funkce vznam


C-x C-b l i s t - bu f f e r s vypi vechny buffery
C-x C-c s ave - buf f e rs - ki l l - emac s ulo buffery a skoni
C-x C-f f ind - f i l e nati do bufferu soubor
C-x C-s s ave - bu f f e r ulo obsah bufferu
C-x C-w wri t e - f i l e zapi buffer do souboru
C-x b swi t ch - t o - bu f f e r pepni buffer
C-x i i n s e rt - f i l e na pozici vlo obsah souboru
C-x k ki l l - bu f f e r uzavi buffer

Jmna funkc leckdy vypovdaj za ve. Mezi funkcemi spustitelnmi klvesami


C - x C - s a C - x C - w je rozdl. V druhm ppad je po uivateli vdy vyado
vn nzev souboru. Na pepsn existujcho souboru se editor vdy explicitn zept.
Pi prci se soubory se zpravidla editor dotazuje na jejich jmna. Interakce probh
6 . 4. Celoobrazovkov editor GNU Emacs 161

v minibufferu a j e mon pouvat pi doplovn jmen klvesu tabultor stejn jako


v shellu. Pi ukldn souboru vznikaj zlon soubory ukonen znakem ,, - " . Edi
tor provd prbn automatick ukldn, do soubor s nzvy #<ljmnof>#, kter
lze vyut k obnov neuloench dat napklad po pdu systmu. Po kadm expli
citnm uloen jsou tyto soubory automaticky mazny. Pkazem C - x C - b se vyp
oteven buffery. Po stisku C - x C - b se uivateli objev vpis
HR elAff" er S i ze Hode F i 1e

... *scratch* 1 83 L i sp I nt eract i on


* *Hessages* 1 6 QQ F lAndaMent a 1
*E SS* Q F lAndarqenta 1
*% *elAer L i st * 2Q6 elAfer HenIA
- - 22 : %* - F 1 *elAffer L i st * ( elAffer HenlA ) - - L 3 - - CQ - - A 1 1 - - - - - - - - - - - - - - - - -

Z pkladu je vidt, e seznam buffer je sm o sob bufferem, to je logick. Zobrazen


informace se tkaj jmna bufferu, hlavnho mdu a asociovanho souboru. Asociace
mezi souborem a bufferem se vytvo buto natenm, nebo uloenm bufferu. Kl
vesov zkratka C - x b umouje pepnat buffery. Na buffery se uivatel odkazuje
jmnem. Jmno bv zadvno v minibufferu. Opt je mon pout tabultor na
doplovn celch jmen buffer. Po stisku C - x b se v minibufferu objev vzva
Swi tch to bu f fer : ( de faul t * s c ratch* )

Stiskem klvesy I ENTER I se uivatel pepne do pvodnho bufferu, pomoc tabul


toru a zadnm jmna se vak me pesunout do libovolnho jinho bufferu. Funkce
swi t ch - t o - bu f f e r v podstat jen mn vazbu mezi buffery a aktulnm oknem.
Klvesovou zkratkou C - x k lze buffer uzavt. Uzavenm bufferu dojde ke ztrt
jeho dat.
Pokud uivatel nechce pracovat pouze s jednm oknem a jednm rmcem, me
vytvet dal okna. Okna lze vytvet pouze uvnit rmc. Rmce jsou v terminlu
reprezentovny celou obrazovkou. Pi pouit editoru v grafickm rozhran je rmec
reprezentovn jednm oknem - v tomto ppad pojem "okno" reprezentuje obdl
nkovou oblast sloenou z obrazovkovch bod. Pro detaily viz kapitolu 8. V rmci
lze vytvet nov okna horizontlnm nebo vertiklnm rozdlenm existujcho okna.
V nsledujc tabulce jsou uvedeny funkce pro manipulaci s okny.

klvesa funkce vznam


C-x O de l e t e - wi ndow zru aktuln okno v rmci
C-x 1 de l e t e - othe r - windows zru neaktuln okna v rmci
C-x 2 spl i t - wi ndow - ve rt i c a l ly vertikln rozpul okno
C-x 3 spl i t - window - hori z ont a l ly horizontln rozpul okno
C-x o othe r - wi ndow pejdi na jin okno v rmci
C-x enlarge - wi ndow zvti okno vertikln
shrink - wi ndow zmeni okno vertikln
C-x enlarge - window - hor i z ont a l ly zvti okno horizontln
C-x shrink - wi ndow - hori z ont a l ly zmeni okno horizontln
1 62 Kapitola 6. Zpracovn textu

Dodejme jet jednou, e okna a buffery jsou na sob nezvisl. Uzavenm okna
pomoc klvesy C - x O se nijak neovlivn obsah zobrazovanho bufferu. Uivatel
jej me pomoc C - x b zobrazit v jinm okn. V grafickm rozhran je mon m
nit vzjemn proporce oken pomoc myi. Nejdleitj je funkce othe r - window.
Funkce umouje cyklicky prochzet mezi okny v jednom rmci. V tabulce je uve
dena funkce shrink - window, kter v GNU Emacsu standardn nen navzna na
klvesovou zkratku. GNU Emacs obsahuje velk mnostv funkc, z nich pouze
zlomek je standardn navzan na njakou klvesovou zkratku. To ale nijak nebrn
sputn funkce. Po stisku klvesy M - x lze v minubufferu zadat jmno funkce a ta je
pot editorem sputna. Pokud funkce vyaduje dodaten informace, uivatel je na
vzvu zad do minibufferu. Viz pklad.
Th i s buer i s o r not es y o u don ' t want t o save , a n d o r L i sp eva l uat i on .
I you want t o create a i l e , v i s i t t hat i l e w i t h C - x c - ,
t hen enter t h e t ext i n t hat i l e ' s own buer .

.*R" '- scratch* ',eMmi4,ra'rm-tWCG-i'l


i
H-x wr i t e - i 1 e

Po sputn funkce wri t e - f i l e bude uivatel vyzvn k zadn jmna souboru,


do nj bude buffer uloen. Pkazov dek GNU Emacsu bv asto vyuvn
k pepnn md bufferu. Pokud se uivatel rozhodne pout jin hlavn md,
ne jak mu stanovil editor, me tak uinit zadnm jmna funkce, kter provd
inicializaci mdu, teba t ext - mode .
Klvesov zkratky pro prci s rmci jsou odvozen od zkratek pro prci s okny.
Rmce lze vytvet, odstraovat a pepnat se mezi nimi.

klvesa funkce vznam


C-x 5 O de l e t e - f rame zru rmec
C-x 5 2 make - f rame vytvo nov rmec
C-x 5 o othe r - f rame pejdi na jin rmec
C-z i coni fy - or - de i coni fy- f rame (de)ikonifikuj rmec

Funkce othe r - f rame slou k cyklickmu pepnn mezi rmci. Cyklick pep
nn rmc se jinak projevuje v grafickm uivatelskm rozhran a jinak pi prci
v terminlu. V grafickm rozhran je kad rmec umstn do samostatnho okna
a pepnat mezi rmci lze i kliknutm na pslun okno. Kombinace klves C - x 5 o
je dleit pedevm pi prci v terminlu - zde si pepnut rmc kliknutm vynutit
nelze. Rovn i pi prci v terminlu nemaj nkter funkce svj vznam. Pkladem
budi ikonifikace rmce - ta m vznam pouze v grafickm rozhran. V terminlu je
po stisku C- z textov editor pozastaven signlem SIGSTOP.

Prce s bloky textu


GNU Emacs umouje koprovat text nkolika zpsoby. Pi manipulaci s bloky
textu je mon vyuvat kill-ring nebo registry. Vechny blokov operace se opraj
6.4. Celoobrazovkov editor GNU Emacs 1 63

o znaky. Znaka slou k oznaen zatku bloku. Funkce s e t - mark - c ommand


pokld znaku, zpravidla jsou na n navzny klvesov zkratky C - @ a C - S PC, kde
S PC zna mezernk. Poloenm znaky dojde k zapamatovn pozice uvnit bufferu.
Text, kter se nachz mezi znakou a kurzorem, se nazv oblast region. -

S oblastmi lze pracovat pomoc kill-ringu . Jedn se o speciln zsobnk obsahujc


sti textu. Na podn uivatele lze blok textu pesunout nebo zkoprovat do kill
-ringu. Nutno podotknout, e napklad pi vmazu dku pomoc C - k rovn dojde
k jeho pesunu do kill-ringu. Kill-ring funguje v podstat jako "ko na odpadky". Pro
manipulaci s kill-ringem jsou v GNU Emacsu implementovny nsledujc funkce.

klvesa funkce vznam


C-w ki l l - reg i on pesu oblast do kill-ringu
M-w ki l l - r i ng - s ave zkopruj oblast do kill-ringu
C-y yank do textu vlo posledn zznam z kill-ringu
M-y yank - p op do textu vlo jin zznam z kill-ringu

Vechny funkce pesouvajc smazan text do kill-ringu jsou prefixovny ki 1 1 - .


Napklad funkce k i l l - l ine, kter je standardn svzna s klvesou C - k, rovn
ukld vymazan dek do kill-ringu. Naproti tomu funkce de l e t e - char, kter je
navzna na C - d, mazan znak do kill-ringu nepesouv. Pomoc M - w se provede
pouze kopie regionu do kill-ringu, zdrojov text zstane nezmnn.
Kill-ring je sdlen mezi buffery, okny i rmci. Posledn uloen zznam lze z kill
-ringu vlepit do textu na mst kurzoru pomoc funkce yank. Pokud uivatel nechce
vloit posledn zznam, me pomoc funkce yank - pop cyklicky prochzet pes kill
-ring. Pedpokldejme, e uivatel chce na pozici kurzoru vloit region zkoprovan
do kill-ringu, ale po jeho zkoprovn jet provedl vmaz dku. V tom ppad
po stisku C - y dojde ke vloen smazanho dku. Pokud uivatel bezprostedn
potom stiskne M - y, vloen dek se nahrad pedchozm zznamem z kill-ringu.
Po kadm dalm stisku M - y se vdy nahrad vloen text pedchzejcm. Pokud
je dosaeno dna kill-ringu, pokrauje se cyklicky od poslednho zznamu. Velikost
kill-ringu je nastaviteln, implicitn je uchovvno 60 zznam.
Jeliko je maximln velikost kill-ringu vdy shora omezen, je v nkterch ppa
dech dobr uchovvat data v registrech. Registry funguj podobn jako v editoru v i .
Pro manipulaci s registry existuje nkolik jednoduchch funkc.

klvesa funkce vznam


C-x r x c opy - to - regi s t e r zkopruj oblast do registru
C-x r j j ump - t o - reg i s t e r pesu oblast do registru
C-x r 9 i n s e rt - regi s t e r v lo obsah registru na pozici kurzoru

Registry maj jednoznakov jmna. Po zadn pkazu pracujcho s registry je v minibu


fferu uivatel vyzvn k zadn jmna registru. Pokud se uivatel pokus pistupovat
k registru, jen nebyl doposud inicializovn, GNU Emacs zahls chybu.
1 64 Kapitola 6. Zpracovn textu

Klvesnicov makra
Sla GNU Emacsu je v jeho systmu maker. Samotn nzev GNU Emacs je zkrat
kouls slovnho spojen "Editor Macros ". V GNU Emacsu lze vytvet inn klvesni
cov makra umoujc opakovat posloupnost stisknutch klves. Sputnm funkce
start - kbd - macro se zahj zznam makra. Makro je ukoneno volnm funkce
end - kbd - macro. Funkce bvaj na mapovny na klvesy " C - x ( a " C - x ) . Po " "

zaznamenn makra je mon znovu jej pout stiskem klvesy C - x e, na ni je


navzna funkce c a l l - l a s t - kbd - mac ro. Pedpokldejme, e uivatel edituje in
formace o vvojch jdra. Na kadm dku je jmno oddleno pomlkou, za n se
nachzl obor innosti kadho vvoje. Stav editoru je nsledujc.

lPna l a 6ecker - - - Genera l l ow - I eve l net work i ng . nacker


L i nus Torva l as - - - Or i g i na l kerne l nacker
Pave l Hacnek - - - soft cursor , nypert ecn CO support , vcsa bugf i x , nba
Anarea Arcange l i - - - Autnor of L i nux I nt errupt Lat ency bencnMark
Anare Hear i ck - - - L i nux AT A Oeve I Op"lent

- -22 : ** - f 1 nackers . t xt ( Text ) - - L 1 - - CQ - - A I I - - - - - - - - - - - - - - - - - - - - - - - - -

Nyn se uivatel rozhodne reorganizovat zznamy. Bude chtt, aby bylo pjmen
uvedeno ped jmnem a daje budou oddleny dvojtekou msto dlouh pomlky.
Pi transformaci textu je vhodn vyrobit makro a to potom nkolikrt aplikovat.
Uivatel zaznamen makro, kter zpracuje jeden dek. Pi vrob makra je nutn
mt neustle na pamti obecnou strukturu dku, jmna jednotlivch autor maj
rznou dlku. Z tohoto dvodu nen mon pohybovat se po znacch, ale mus se
pouvat logick jednotky, napklad slova nebo prohledvn. V opanm ppad
by makro nebylo dostaten univerzln.
Makro na pravu jednoho dku me vypadat napklad jako posloupnost
C - x ( , skok na zatek dku C - a, skok na pjmen M - f, EJ, oznaen zatku
pjmen C - @, skok na konec pjmen M - f, vmaz pjmen C - w, skok na zatek
dku C - a, vloen pjmen C - y, mezera ped jmnem I SPACE skok na pomlku M - f,
vmaz pomlky 5 x C - d, vloen dvojteky : , dal dek [TI, konec makra C - x ) .
Uivatel nedefinuje makro naslepo, pkazy jsou okamit vykonvny. Po definici
makra bude vstupn soubor v nsledujcm stavu.

6ecker Oona l a : Genera l l ow - I eve l net work i ng nacker


L i nus Torva l as l - - - Or i g i na l kerne l nacker
Pave l Hacnek - - - soft cursor , nypert ecn CD support , vcsa bugf i x , nba
Anarea Arcange l i - - - Autnor of L i nux I nt errupt L at ency bencnMark
Anare Hear i ck - - - L i nux ATA Oeve l opMent

- -22 : * * - f 1 *scratcn* ( L i sp I nt eract i on ) - - L 2 - - C 1 4 - - A I I - - - - - - - - - - - -


Keyboara Macro aef i nea

Makro bylo vytvoeno obecn. Na zatku se uivatel nastavil na potek dku, tm


pedeel zvislosti na pozici kurzoru. Na konci prce peel na nov dek. Nic tedy
1 5 Mezi dal interpretace nzvu pat napklad " E macs Makes AU Compll ting Simplc", nebo " E ight Mega
bytes And Constan tly Swapping " . Pro dal interpretace viz h t t p : // www . gnu . c z / gnu - 3 8 . html .
nebrn nkolikansobn aplikaci makra. V editoru GNU Emacs lze opakovan vyko
nat pfkaz . Nejprve je nutn specifikovat poet opakovn - za stisku klvesy I META I
je poteba zadat poet po jednotlivch cifrch. Bezprostedn pot je nutn stisknout
klvesovou zkratku, kter m bt opakovan provedena. Napklad M - 1 M - 6 x
provede vloen estncti psmen x za sebou. V ukzkovm ppad by stailo pro
vst makro tyikrt, protoe jeden dek je ji peveden. To jest uivatel stiskne
posloupnost klves M - 4 C - x e .
Pkazy klvesnicovho makra lze dodaten upravovat pomoc vestavn funkce
edi t - l a s t - kbd - mac ro. Funkce oteve nov buffer a v nm pehledn zobraz ob
sah makra. Pokud uivatel definuje nov makro, pvodn makro se ztrat. V nkterch
ppadech je vhodn makro uloit pro pozdj vyuit. K tomu v GNU Emacsu slou
pojmenovan makra. Funkce name - l a s t - kbd - ma c ro slou k pojmenovn posled
nho nadefinovanho makra. Po jejm sputn je uivatel vyzvn k zadn nzvu pro
makro. Pojmenovan makro lze dle volat stejnm zpsobem jako funkce, to jest lze
jej vyhodnotit z minibufferu pomoc M - x.
Je-li makro pojmenovno, je mon jeho definici uloit na disk. GNU Emacs
standardn pi svm startu te uivatelsk konfiguran soubor / ema c s . Tento - .

soubor obsahuje program v Emacs LlSPu, kter je proveden po startu editoru. Po


kud je pi startu editoru pouit argument - - no - i n i t - f i l e, sputn souboru je
potlaeno. Prv soubor / ema c s je vhodnm mstem pro uloen klvesnicovho
- .

makra. Nejprve je poteba otevt soubor / ema c s v okn editoru. Pojmenovan


- .

makro lze vloit do aktulnho bufferu pomoc funkce i n s e rt - kbd - mac ro. Funkce
se po sputn uivatele zept na jmno makra. Po uloen souboru / ema c s bude - .

definice makra zachovna pro dal sputn.

Konfigurace editoru
V konfiguranm souboru / ema c s bvaj obvykle definovny uivatelsk
- .

funkce, nov klvesov zkratky a klvesnicov makra. Rovn zde mohou bt spou
tny vedlej mdy editoru, nastavovno rozloen klvesnice a podobn. Zpis do
souboru neprovd pouze uivatel, v nkterch ppadech jej me provst i editor
GNU Emacs. Z tohoto dvodu me bt dobr nepsat vlastn definice pmo do sou
boru / ema c s, ale napklad do souboru / ema c s - u s e r a na zatku souboru
- . - .

- / ema c s napsat voln funkce


.

( l oad " - j . emac s - us e r " )

Jakmile GNU Emacs zane vykonvat soubor / ema c s , pokus se vyhodnotit


- .

funkci l oad. Ta zpsob vyhodnocen vraz ze souboru / ema c s - us e r. Navc


- .

tm uivatel pehledn oddl vlastn definice od definic vytvench samotnm


GNU Emacsem. Popis vech monost konfigurace editoru by si vynutil samostat
nou publikaci, navc vyaduje jistou znalost programovacho jazyka LlSP. Pro de
monstraci si uveme typick obsah inicializanho souboru / ema c s . - .

( requ i re ' qua i l )


( requ i re ' c z e c h )
1 66 Kapitola 6. Zpracovn textu

( s e t - l anguage - envi ronment " c z e ch" )


( s e t q de f aul t - input -method " c z e c h - prog - 2 " )

( i f window - sys tem


( s e tq s e l e c t ion- coding - sys t em ' l a t i n - 2 )
( s e t - t e rmina l - coding - sys t em ' l a t i n - 2 ) )

( menu - bar - mode O )


( co l umn - numb e r - mode t )
( gl oba l - f ont - l ock - mode t )
( cu s t om - s e t - va r i ab l e s ' ( ki l l - ring - max 2 5 6 ) )

( f s e t ' prvni - ve l ke " \ C - a \ 3 6 5 " )


( gl obal - s e t - key " \ C - cpv" ' prvni - ve l ke )

( gl obal - s e t - key [ f 9 ] ( l ambda ( )


( interact ive )
( comp i l e " make - j 2 " ) ) )

Prvn tyi dky obsahuj definici nrodnho prosted a programtorsk klves


nice. Editor GNU Emacs m vlastn lokalizan mechanismy nezvisl na pouitm
rozhran. Mezi klvesnicemi lze pepnout pomoc funkce togg l e - i nput - method,
standardn navzan na c - \ . Dal blok slou k nastaven kdovn dokument
a jejich zobrazovn v terminlu. Jde v podstat o podmnn vyhodnocen vraz
v zvislosti na hodnot promnn window - sys t em. Na dalm dku je vypnut
vedlej md zobrazujc uivatelsk menu. Dle jsou zapnuty vedlej mdy zob
razovn sloupc a zvrazovn syntaxe. Pomoc custom - s e t -variab l e s m
uivatel nastavenu velikost kill-ringu na 256 blok.
Dal dva dky v souboru obsahuj definici klvesnicovho makra. Ta byla do
souboru vloena pomoc funkce insert - kbd - mac ro, uloen makro nese nzev
p rvni - ve lke a zpsob pevod prvnho slova na dku na velk psmena. Na
makro je pomoc funkce g l obal - s e t - key navzna klvesov zkratka C - c p v.
Posledn zznam navazuje klvesovou zkratku funkn klvesy [ill na nov vytvoe
nou funkci spoutjc extern program make. Programovn uivatelskch funkc je
ve skutenosti velmi silnm nstrojem. Pi psan tohoto textu jsem si naprogramoval
nkolik pomocnch funkc, jednou z nich byla jednoduch funkce

( gl obal - s e t - key " \ C - c i i "


( l ambda ( key)
( interact ive " kPre s s any key : " )
( insert ( conc at " \ \ char" ( s t r i ng - t o - char key ) ) ) ) )

umoujc zadat uivateli znak z klvesnice. Znak je poslze do textu vloen


ve tvaru \ char<l slo l>, kde <l S[O I> je ASCII hodnota znaku. Tuto proceduru jsem
si napsal pro zjednoduen psan zdrojovho textu dokumentu pro formtovac sys
tm 1fX. asov investice do pochopen princip editoru GNU Emacs se rozhodn
vyplat.
6. 5. Podpora nrodnho prosted 167

Integrovan npovda
Jeliko je GNU Emacs rozshl program, kter bhem pedchozch nkolika de
stek let prodlal znan zmny a vylepen, me bt tou nejt vc paradoxn
pouze "hledn informac ". Nkte zl jazykov tvrd, e GNU Emacs um ve, jen to
lovk obas neme najt. GNU Emacs byl navren jako sebedokumentujc editor.
Obsahuje v sob prohle hypertextov npovdy, kter pracuje se stejnmi doku
menty jako program info popsan v kapitole 2. Instalace GNU Emacsu zpravidla
zahrnuje i kompletn dokumentaci k editoru a Emacs LlSPu. Pi prci v editoru je
rovn mon vyuvat klvesov zkratky uren pro npovdu.

klvesa funkce vznam


C-h f de s c ribe - func t i on zobraz popis funkce
C-h v de s c r ibe - va r i ab l e zobraz popis promnn
C-h k de s c ribe - key popi funkci navzanou na klvesu
C-h c de s c ribe - key - bri e f ly jmno funkce svzan s klvesou
C-h b de s c ribe - b indings zobraz aktuln mapovn klves
C-h m de s c ribe - mode popi aktivn hlavn a vedlej mdy

Editor lze konfigurovat nejen zpisem vraz do souboru - I . emac s, ale i in


teraktivn. GNU Emacs obsahuje interaktivn konfiguran systm. Lze jej spustit
funkc cus t omi z e. Jednotliv poloky jsou hierarchicky lenny do kategori a pod
kategori. Veker zmny v konfiguraci mohou bt uloeny editorem do souboru
- I . ema c s . Po proveden zmny v interaktivnm konfiguranm systmu je vdy
dobr podvat se, jak se zmna promtla do obsahu souboru - I . ema c s . Dobr n
pad je poizovat si zlon kopie souboru a porovnvat je teba programem di f f .

6.5. Podpora nrodnho prosted


Pi vytven eskch text uivatel obvykle potebuj mrn pizpsobit chovn
operanho systmu. V rznch jazykovch prostedch existuj napklad rozlin
zpsoby zpisu data, asu, nebo pennch daj. Podstatnm problmem me bt
i tdn etzc podle stanoven abecedy. Budeme-li chtt setdit seznam eskch
jmen, zcela jist si budeme pt, aby napklad psmeno "" nsledovalo za psme
nem "C". Pi standardnm tdn znak vychzejcm z jejich ASCII hodnot by byl
znak "" a za znakem "Z", co je pi porovnvn eskch slov nevhodn.
Do dal kategorie problm spad samotn manipulace s textovmi soubory ob
sahujcmi text s diakritikou. V souasnosti nanetst existuje hned nkolik standard
kdovn eskch dokument. Uivatelm se me velmi snadno dostat do rukou
esk dokument pouvajc nestandardn kdovou strnku. V takovm ppad je po
teba mt k dispozici nstroje na pevdn kdovn v dokumentech. Nsledujc
paragrafy se podrobnji vnuj obma problematikm, v zvrenm paragrafu jsou
navc informace o monostech jazykov korektury textu.
1 68 Kapitola 6 . Zpracovn textu

Lokalizace systmu
Operan systm GNU / Linux disponuje mechanismem lokalizace funkc syst
mov knihovny g l ibc. Jeliko je knihovna g l ibc vyuvna drtivou vtinou pro
gram, jej lokalizace ovlivn innost i ostatnch komponent systmu. Pod pojmem
lokalizace je z uivatelskho hlediska obvykle myleno vhodn nastaven promn
nch shellu zaruujc potebn nrodn zvyklosti. Lokalizac lze ovlivnit napklad
styl zobrazovn asu, data, nzvu msc, dn v tdnu a pennch daj. Z hle
diska zpracovn textu je nejpodstatnj nastaven sprvnho tdn znak, pevodu
mezi malmi a velkmi znaky abeced a obrcen. Lokalizan mechanismy knihovny
gl ibc jsou navreny velmi prun. Zmnu jazyka lze provst pouhm nastavenm
promnnch zcela bez nutnosti pekldat nebo instalovat nov verze program.
Pi nastaven lokalizace je poteba uinit rozhodnut, kter lokalizan kategorie je
nutn nastavit. Zdaleka ne kad uivatel napklad tou po vpisu data v es
km tvaru. Uivatel ovem me vyadovat napklad esk tdn. Lokalizan
kategorie byly zavedeny prv z dvodu oddlen jednotlivch skupin problm.
Jmna lokalizanch kategori se kryj se jmny promnnch shellu. Promnn nemus
bt nastaveny, jejich hodnota je smrodatn pi nastaven jazykovch a nrodnch
prosted. Bez jmy lze napklad nastavit kategorie ovlivujc tdn a vpis data
na hodnoty specifikujc rzn zem a jazyky. Nsledujc soupis obsahuje nzvy
a popis lokalizanch kategori.

LC COLLATE Kategorie slou k popisu znak abecedy. U znak abecedy mimo


jin definuje jejich poad. Pi tdn etzc m poad znak z
sadn vznam.
LC CTYPE Kategorie obsahuje informace o dlen znak do dlch kategori.
Nastavenm LC _ CTYPE lze vymezit velikost znak - nkter znaky
jsou chpny jako mal psmena, jin znaky jako velk psmena.
Kategorie rovn definuje oddlovae.
LC MES SAGES Kategorie ovlivuje zobrazovn zprv. Programy mohou bhem sv
innosti pouvat katalogy zprv. V katalozch jsou v nkolika jazy
cch uvdny zprvy vypisovan programem. Nastavenm kategorie
me uivatel ovlivovat, v jakm jazyku s nm bude program ko
munikovat.
LC MONETARY Tato kategorie slou k nastaven stylu vpisu pennch daj. Kate
gorie ovlivuje napklad styl oddlovn d cifer nebo napklad
zpis mnov jednotky.
LC NUMER I C Kategorie ovlivuje styl vpisu selnch daj.
LC T I ME Kategorie ovlivuje vpis data, asu, nzv msc a dn v tdnu.

Pi nastavovn lokalizanch promnnch hraj dleitou roli i dv dal pro


mnn, LC _ALL a LANG. Promnn LC _ALL m vznam univerzln promnn pe
krvajc zbyl nastaven, kdeto hodnota promnn LANG je pouita pouze v p
pad, kdy dan kategorie nen pouita. Bohuel, akoliv je algoritmus stanoven
6.5. Podpora nrodnho prostfed 1 69

sprvn kategorie vestavn pmo v knihovn g l ibe, nkter programy nepracuj


s lokalizanmi promnnmi zcela sprvn. Z tohoto dvodu se nkdy doporuuje
mt vdy nastavenu promnnou LANG.
Pi stanoven hodnoty lokalizan kategorie je nejprve hledno nastaven pro
mnn LC_ALL. Je-li promnn nastavena, jej hodnota uruje hodnotu katego
rie. Pokud promnn LC_ALL nastavena nen, hodnota je vyhledna v promnn
LC _<J kategorie r> psluc kategorii. Nen-li ani ta nastavena, je pouita buto hod
nota promnn LANG, nebo implicitn hodnota " c " . Z pedchozho plyne, e chce-li
uivatel pouvat pro rzn kategorie rzn nastaven, neme pouvat promnnou
LC ALL .

Pi nastaven kategorie pomoc promnn shellu je vdy poteba nastavit vhodn


jazykov a nrodn prosted. Obecn lze kadou hodnotu zapsat ve tvaru

<Jjazyk r>_<J zemr> . <J kdovnr>

kde <Jjazykr> je povinn etzec znac poadovan jazyk. Jazyky jsou specifikovny
vtinou dvoupsmennmi etzci, napklad pro etinu je vyhrazeno " e s " , pro
sloventinu " s k " , pro anglitinu "en " a podobn. Definice <Jzemr> je nepovinn
a uivatel j specifikuje zemi pvodu. Zkratky zem se pochopiteln obecn nekryj
s nzvy jazyk a to nkdy ani v ppad, kdy je mezi zem a jazykem jednoznan
korespondence. esko m kd zem " c z " . Hodnota <Jkdovnr> je opt nepovinn,
ale pokud je uvedena, mus bt uvedena hodnota <J zemr>. Obecn eeno, poloka
kdovn slou k vymezen kdovn v ppad, kde se pro dan jazyk pouv
vce jak jedna kdov strnka. Takovm jazykem je i etina. V operanm systmu
GNU I Linux se pouv standardn kdovn ISO 8859 2. Systmy firmy Microsoft
pouvaj svj vnitn standard CP 1250. V neposledn ad se zan prosazovat
i vcebajtov kdovn Unicode.
Nastaven hodnot kategori lze vrazn zjednoduit pouitm lokalizanch alias.
V souboru l e t e / l o e a l e . a l i a s je uloen seznam skldajc se z definice zkratek
pro jazyky, nrodn prosted a z pslunch defininch etzc. V nkterch dis
tribucch GNU I Linuxu me bt tento soubor umstn v jinm adresi, napklad
v l u s r l share / l o e a l e . Ukame si pklad nastaven jazykovho prosted.

$ cat / e t c / local e . alias I grep , A c . * I SO . * 2 '


eroa t i an hr HR . I SO - 8 8 5 9 - 2
e z eeh e s CZ . I S O - 8 8 5 9 - 2
$ export LC_CTYPE= c z ech; export LC COLLATE = c z ech
$ export LANG=C

Uivatel si me zapsat nastaven hodnot lokalizanch promnnch do svch


konfiguranch soubor, napklad do souboru - I . bashy ro f i l e . Promnn je
samozejm poteba exportovat. Implicitn nastaven lokalizanch kategori se mo
hou v rznch systmech nachzet v odlinch souborech, obvykle jsou ale zapsny
v souboru l e t e l envi ronment . Seznam vech dostupnch jazykovch prosted
lze zobrazit programem l o e a l e sputnm s argumentem - a.
1 70 Kapitola 6. Zpracovn textu

Transformace dk
S problmem pfenosu textovho souboru mezi operanmi systmy se lze setkat
nejen pi zpracovn dokument s diakritikou. Pokud ponechme stranou samotnou
problematiku penosu, textov soubory jsou v rznch operanch systmech ch
pny rzn. Odlinosti jsou zejmna v ukonovn fdk . V operanm systmu Unix
jsou dky standardn zakoneny pouze znakem nov fdek, ASCII kd znaku nov
dek je 10. Naproti tomu v systmech vzelch z MS-DOSu jsou dky zakoneny
dvojic znak nvrat vozku, nov fdek, to jest kad dek je zakonen dvojic znak
s hodnotami 13 a 10 v tomto poad.
Nkter nstroje pro zpracovn textu se nedokou s druhm jmenovanm zp
sobem chpn dku vyrovnat a pracuj chybn. V takovm ppad je vhodn
transformovat textov soubor do prvnho tvaru. K tomuto elu v systmu existuj
obslun programy dos 2 unix a unix2 dos . Oba programy berou jako argumenty
nzvy soubor. Uveden soubory jsou zkonvertovny buto do unixov notace,
nebo naopak do notace MS-DOSu. Programy implicitn nepracuj jako filtry, p
vodn soubor je po konverzi smazn. Argumentem b si lze vynutit vytvoen zlon
-

kopie pvodnho souboru.

Konverze mezi kdovmi strnkami


Dalm problmem pi penosu textovch soubor je konverze mezi kdovmi strn
kami . Voln iiteln operan systmu pouvaj vlun standardn kdovn. Buto
se jedn o kdovou strnku centrln Evropy ISO 8859 2, nebo o vcebajtov kdo
vn Unicode. Nkte vrobci komernch produkt si vytvej vlastn "standardy" .
Jakkoliv se vtin uivatelm otevench systm jejich pstup nelb, leckdy jsou
nuceni pijmat data prv v nestandardnch kdovch strnkch a potebuj provst
jejich konverzi do nkterho ze standardnch formt.
Jednm z prvnch dostupnch konverznch program byl program c s to c s . Pro
gram existuje v nkolika verzch, asi nejrozenj je implementace v jazyku PERL.
Jeliko je c s t o c s omezen pouze na jednobajtov esk a slovensk kdovn, jeho
pouit je mrn omezen. Na jednoduchou konverzi vak pln postauje. Program
c s t o c s me pracovat jako filtr nebo mu lze pedat nzev souboru jako argument.
V obou ppadech jsou vstupn pekdovan data poslna na standardn vstup.
Pi konverzi je poteba specifikovat vstupn a vstupn kdovn. Seznam podporo
vanch kdovn lze zskat zavolnm programu bez dodatench argument. Viz
pklad.

$ c s tocs
. . . informace o programu
Encodings ava i l ab l e are :
1 2 5 0 1 2 5 2 a s c i i cork i l 1 i 1 2 kam ko i 8 mac mac c e pc2 t ex vga
$ c s tocs 1 2 5 0 i 1 2 cesky . txt >novy . txt

V pkladu byl obsah souboru c e s ky . txt zkonvertovn z kdov strnky


CP 1250 do kdov strnky ISO 8859 2. Jeliko je standardn pekdovan soubor
6.5. Podpora nrodnho prosted 1 71

vypisovn na standardn vstup, obvykle bv standardn vstup pesmrovn.


V ukzce byl pesmrovn do novho souboru novy . txt .
Mnohem vysplejm nstrojem pro konverzi kdovch strnek je balk recode.
Nejedn se pouze o jeden program, nbr o celou sadu nstroj poskytujcch sluby
tkajc se pekdovn dokument. Balk recode nen vzn pouze na omezenou
rodinu jazyk, ale sna se bt univerzlnm vcejazynm nstrojem. Databzi vech
podporovanch kdovn lze vypsat pomoc argumentu - - l i s t . Viz pklad.

$ rec ode - - l i s t I egrep CP12 5 0 ) I ( 8 8 5 9 - 2 '


I

CP 1 2 5 0 / CR - LF 1 2 5 0 / CR - LF ms - ee windows - 1 2 5 0
1 8 0 - 8 8 5 9 - 2 9 1 2 / CR - LF C P 9 1 2 / CR - LF I BM 9 1 2 / CR - LF
i s o - i r - 1 0 1 1 8 0 8 8 5 9 - 2 1 80 8 8 5 9 - 2 : 1 9 8 7 1 2 1 a t in2
- -

Program recode disponuje velkm mnostvm kdovch strnek. Krom jinho


umouje i transformovat konce dk a provdt tak konverzi mezi textovmi
soubory z Unixu a z MS-DOSu. Je-li program recode pouit s argumentem ve tvaru
<l zdroj c> . . <l cl c>, pekduje specifikovan soubory ze vstupnho kdovn <lzdroj c>
do vstupnho kdovn <l cl c>. Viz ukzku.

$ rec ode 1 2 5 0 /CR - LF . IS O - 8 8 5 9 - 2 cesky . txt

Vsledn data byla uloena do souboru c e s ky . txt . Jeliko byla pouita zdro
jov kdov strnka 1 2 5 O / CR - LF, pi pekdovn dokumentu dolo rovn k trans
formaci konc dk. Jednou z mnoha vhod programu recode je i jeho podpora
vcebajtovch kdovch strnek, napklad UTP 7, UTP 8 a Unicode.

Jazykov korektura textu


Do zvltn kategorie pat program i spe l l . Jedn se o interaktivn a velmi pro
pracovan korekturn program. lohou programu je hledat gramatick chyby v textu
a nabdnout uivateli jejich opravu. Program umouje vytvoit i uivatelskou da
tabzi slov. V systmu jsou zpravidla k dispozici databze pro vtinu svtovch
jazyk a pro lokln pouvan jazyky. Program i spe l l se spout s opravova
nm souborem jako argumentem. Pi voln programu je rovn mon zvolit ja
zyk pomoc argumentu - d <ljazykc>, kde <ljazykc> me nabvat hodnot ame r i c an,
bri t i sh, c z e c h a tak dle. Soubory s gramatikou pro i spe l l lze nalzt v adresi
/ u s r / l ib / i spe l l . Na nsledujcm obrzku je zobrazen program ispell v innosti.

progrrq f i le: I i nux - kn i ha . tex

\ part i t l e { Jazykov korektura textu}


Do zv l t n kat egor i e pat
\ defprog{ i spe l l } .

(;J : prograrq
1 : prokrrq

[SPl < nurqber > R ) ep l A ) ccept I ) nsert L ) ookup U ) ncap Q ) u i t e ( X ) i t or ? for he l p



1 72 Kapitola 6. Zpracovn textu

Z ukzky je patrn, e i spe I I um uivateli nabdnout monosti nahrazen frze,


kter nebyla nalezena ve slovnku. V tomto ppad se jednalo o etzec "progrm " ,
i spe l l nabdl na nahrazen frze "program" a "prokrm" . Program i spe l l me
bt vyuvn i ostatnmi programy, typicky textovmi editory. Napklad editor GNU
Emacs s nm doke vborn spolupracovat a umouje uivateli provdt jazyko
vou korekci bez nutnosti opustit textov editor.

6.6. Archivace a komprese dat


V Unixu slou k archivaci dat dv kategorie program archivan programy
-

a kompresn programy . Ve vtin jinch operanch systm slou k podobnm


elm pouze jeden program, kter doke data archivovat i komprimovat zro
ve. Z historickch dvod v Unixu petrvv oddlen model. Oddlen archivace
a komprese m i sv vhody, je mon bezbolestn pejt z jednoho kompresnho
programu na jin. Na druhou stranu, je-li soubor poruen, jsou veker data v nm
uloen ztracena, nehled na rozsah pokozen souboru.

Archivace dat
Standardn archivan nstroj se jmenuje t ar. Jeho jmno je zkratkou " Tape Archi
ver", jedn se o program pvodn uren pro archivaci na pskov zazen. Program
tar doke archivovat soubory, ppadn i adrese vetn svho obsahu. Archiv
m podobu jednoho souboru, v nm jsou uloena data v nekomprimovan form.
Soubor je dokonce vt ne rozsah archivovanch dat. Je to mimo jin zpsobeno
zarovnnm velikosti souboru na 10 kB. Program t a r se samozejm neomezuje jen
na pskov zazen, archivan soubor je mon vytvet i na souborovm systmu.
Pro upesnn dodejme, e data na pskch nejsou organizovna pomoc souboro
vch systm, pstup k souborm na psce je vhradn sekvenn a jeho asov
nronost si vyaduje jinou organizaci dat.
Program tar m mnoho pepna, bn se vak pouv jen nkolik z nich.
Syntaxe argument pi sputn programu je jednoduch. Jako prvn jsou uvedeny
argumenty dc archivaci. Dalmi argumenty jsou soubory a adrese uren k ar
chivaci. Jako prvn mus bt uveden argument urujc akci. V nsledujc tabulce je
uveden pehled nejastji pouvanch akc.

pkaz vznam
-c vytvoen novho archivu
-d porovnn rozdl v archivu se souborovm systmem
-r pidn novch dat na konec archivu
-t vypsn obsahu archivu
-u pipojen aktualizovanch soubor
-x extrahovn dat z archivu
6.6. Archivace a komprese dat 1 73

Za akc mohou bt uvedeny dal pepnae. Mezi nejastji pouvan pat zapnut
upovdanho reimu pomoc pepna - v, vy a - vvv m vt poet "v " je v pe
- .

pnai, tm podrobnj informace jsou bhem archivace zobrazovny. Implicitn se


program t a r chov tie. Pomoc argumentu - f <Jarchiv t> uivatel programu tar
sdluje, e archiv bude vytven nikoliv na psku, ale do souboru <Jarchiv t>. Tento
argument je nutn uvdt, jinak se bude program snait vytvoit archiv na psce, co
v drtiv vtin ppad povede k chybovmu hlen. Nsledujc pklad ukazuje
vytvoen archivu.
$ tar - cvf data . tar data
dat a /
dat a / t ex/
dat a / tex/ z ivo t op i s . tex
dat a / t ex/ z ivotop i s . l og
dat a / tex/ z ivotop i s . aux
dat a / tex/ z ivotop i s . dvi
dat a / tex/ z ivotopi s . ps
dat a / t ex/ z ivotop i s . pdf
dat a / s cheme /
dat a / s cheme / f aktori a l . s cm
dat a / s cheme / f ibonac c i . s cm

Pi modifikaci dat je obas nutn aktualizovat obsah archivu. Pomoc pepnae


- d lze porovnat obsah archivu a souborovho systmu. Veker informace o rozd
lech jsou vypsny! Aktualizaci archivu lze provst pomoc pkazu - u, kter pipoj
aktualizovan data na konec archivu.
$ echo na konec data/tex/ z ivotopi s . log
$ tar - df data . tar data
dat a / tex/ z ivotopi s . l og : Mod t ime d i f f e r s
dat a / t ex/ z ivotopi s . l og : S i z e d i f f e r s
$ tar - uvf data . t a r data
dat a / t ex/ z ivo t op i s . l og

Soubory lze z archivu extrahovat pomoc pepnae - x. Pokud si uivatel nen


jist obsahem archivu, ml by ped extrakc dat nejprve prozkoumat jeho obsah
pomoc argumentu - t se zapnutm upovdanm reimem - v. Archiv je standardn
extrahovn do pracovnho adrese. Pi extrakci lze vybrat pouze nkter soubory,
k tomuto vbru lze pout nepln jmna soubor archivu. Implicitn se extrahuje
cel archiv. Zcela evidentn vak nepln jmna nesmj bt expandovna shellem.
Principiln se toti nejedn o jmna soubor v adresov struktue. Jedn se o jmna
soubor nachzejcch se uvnit archivu, kter je sm o sob datovm souborem. Shell
nem do archivu pstup.
$ mkdir nova - data && cd nova - data
$ tar - xvf /data . tar ' * . ps '

dat a / t ex/ z ivotopi s . ps


$ >padouch . ps
$ tar xvf /data . tar * . ps

tar : padouch . p s : Not f ound in archive


tar : Error exit de l ayed f rom previous errors
1 74 Kapitola 6. Zpracovn textu

Pklad jasn ukazuje, pro je nutn potlaovat expanzi neplnho jmna sou
boru. Prvn extrakce probhla korektn. Potom uivatel vytvoil przdn soubor
padouch . ps, a pi extrakci nepouil apostrofy. To vedlo k chyb, protoe shell ne
pln nzev expandoval na padouch . p s , takov soubor se ale v archivu nevyskytuje.
Pi archivaci i extrakci je mon pout argument -T <J souborr>, kde <J souborr>
obsahuje nzvy soubor, kter se maj archivovat nebo extrahovat. Tento postup
je praktick, napklad pouije-li uivatel program f ind k nalezen soubor pro
archivaci.
$ c d ; f ind data -mt ime 1 - no t - type d I
-

> tar - ev - T - - f modi fikovana . tar


. / dat a / t ex/ z ivotopi s . tex
. / dat a / t ex/ z ivotopi s . l og
. / da t a / s cheme / f ibonac c i . s cm

Program f i nd prohledal adres dat a a na vstup vypsal vechny obyejn


soubory, kter byly za posledn jeden den modifikovny. Svj vstup pedal pro
gramu tar. Pomoc argumentu - T - byl t a r pepnut do reimu, v nm te jmna
soubor ze standardnho vstupu. Podobnm zpsobem lze v systmu vyeit na
pklad inkrementln zlohovn dat. Vhodou prpgramu t a r je archivace soubor
vetn kompletnch administrativnch dat. Jist problmy in rozen atributy sou
borovch systm, napklad POSIX ACL. K archivaci souborovho systmu obsa
hujcho POSIX ACL lze vyut alternativn archivan nstroj pax. Pro detaily viz
manulovou strnku.

Komprese dat
Neztrtov kompresn programy slou k transformaci dat do podoby, v n je za
chovna veker informace, ale data mohou bt uloena efektivnji - v ppad
diskovho prostoru se jedn o men velikost souboru. Krom neztrtov komprese
existuj i ztrtov kompresn nstroje. Pi ztrtov kompresi obecn dochz ke ztrt in
formace - ztrtov algoritmy nezaruuj identickou obnovu dat. Ztrtov kompresn
algoritmy lze s vhodou pout na vzorkovan data, napklad obraz nebo zvuk.
Samotnm vzorkovnm analogovch dat dochz ke ztrt informace, stdm ztr
tov komprese ji neme vzorkovan data pli znehodnotit. Naopak ztrtov
komprese se absolutn nehod ke kompresi textovch soubor, databz a podobn.
Nsledujc text je vnovn standardnm nstrojm pro neztrtovou kompresi dat .
Soust vech implementac Unixu jsou programy c omp re s s a decomp re s s .
Jejich kompresn pomr nen pli oslniv, jsou zaloeny na slovnkov metod LZW.
Jeliko je algoritmus LZW patentovan svmi tvrci, vvoji GNU se rozhodli
vytvoit vlastn kompresn nstroje. Mezi nejpouvanj pat g z ip a b z ip2 .
Program g z i p pouv slovnkov algoritmus LZ 77, naproti tomu b z ip2 pou
v kombinaci Burrows-Wheelerova tdn blok a adaptivn Huffmanovy kom
prese. Programy se pouvaj velmi jednodue. Pepnae - 1 a - 9 uruj mru kom
prese. Pokud je pouit - 1, komprese je minimln, ale probhne rychle. Pepna - 9
zapn nejvt kompresi.
6.6. Archivace a komprese dat 1 75

Oba kompresn programy postupn komprimuj soubory, jejich jmna jsou uve
dena za pepnaem urujcm stupe komprese. Po dokonen komprese je pvodn
soubor smazn a komprimovan soubor m jmno zakonen . gz nebo . b z 2 . Viz
pklad.

$ gz ip - 9 modi fi kovana . tar


$ gz ip - - l i s t modi f ikovana . tar . gz
compre s s ed uncompr . rat i o uncompre s sed_name
2049 1 0 2 4 0 8 0 . 3 % modi f i kovana . t ar

V ukzce byl soubor nejprve komprimovn, na druhm dku uivatel pou


il argument - - 1 i s t. Argument provede zobrazen informac o komprimovanm
souboru. Programy g z ip a b z ip2 komprimuj vdy pouze jeden soubor. Proto jsou
zpravidla pouvny v kombinaci s programem t a r provdjcm archivaci. Vznikl
archiv je komprimovn programem g z i p nebo b z ip2 . Kvalita komprese je obecn
lep u programu b z i p 2 , program g z ip je spnj pi kompresi malch soubor.
Test integrity komprimovanch dat lze provst pomoc pepnae - t .
Pro dekompresi existuje v obou programech pepna - d . Pi dekompresi s e ob
nov pvodn data a komprimovan soubor je nsledn smazn. Mazn vstupnch
soubor je pi kompresi i dekompresi typick. V nkterch ppadech to ale ne
mus bt pli vhodn. Potom je nutn pout pepna - c vypisujc vsledek na
standardn vstup. Zdrojov data jsou ponechna beze zmny. Pokud je poteba kom
primovat standardn vstup, sta program spustit bez jmna souboru, v tom ppad
jsou komprimovan data penena na vstup programu.

$ g z ip - 9 c modi fikovana . tar >modi f . tgz


$ ls -F mod
modi f . tgz modi f i kovana . t ar

Pi pouit kombinace program t a r f g z ip a t a r f b z ip2 m uivatel v zsad


dv monosti. Buto pouije tradin zpsob - rouru, nebo pouije pouze program
tar s pepnaem. Pepna automaticky zaru sputn komprese. Pi spojen pro
gram rourou je nutn dbt na pesmrovn mezivsledku. Mezivsledek by neml
bt uloen na disk, ale pesmrovn na vstup. Archivaci s kompres demonstruje
nsledujc pklad. Pi archivaci i extrakci je pouit argument " - " zajitujc sprvn
pesmrovn vstupu a vstupu.

$ tar cf - data I gzip - 9 >data . tar . gz


$ rm - r data
$ cat data . tar . gz I gz ip -d I tar xf -

Princip pouit kompresnho programu v roue je naprosto univerzln, pokud


se uivatel rozhodne zmnit kompresn program, nemus provdt extrakci. Pouije
pouze dva kompresn programy spojen rourou. Napklad pkazem

$ c at data . tar . gz I gz ip - d I
> bz ip2 - 9 c >data . tar . b z 2 && rm data . tar . gz
1 76 Kapitola 6. Zpracovn textu

uivatel provede pechod na kompresi programem b z ip 2 . Dal monost je


pout u programu tar pepna z, jen implicitn zapn kompresi programem
-

gz ip. Komprese programem bz ip2 se zapn buto pepnaem j , nebo ve starch


-

verzch programu pepnaem I . Pepnae z a j jsou konfliktn, nelze je pout


- - -

souasn.
$ tar c z f data . tar . gz data
$ tar c j f data . tar . bz 2 data

Pepnae z a j lze pout samozejm i pi dekompresi a obnov dat z archivu.


- -

Do Unixu byly peneseny i dal oblben kompresn programy jako arj , z ip,
rar, lha a zoo. Pesto nejsou tyto nstroje pli pouvny. Dvod je hned nkolik.
Za prv se jedn vesms o komern produkty a jejich pouvn je zpravidla podm
nno jistm poplatkem. Mnoh z tchto program neumj pracovat se specilnmi
soubory a odkazy, proto nejsou v Unixu pli pouiteln.
Prokazuje se, e Internet se stal jednm z nejmocnjch amplion
lidsk ei, kter kdy byly vymyMeny. Dv nevdan prostor hla
sm, kter by bylo slyet jen st, zda-li vbec. Internet pedstavuje
irok dialog a usnaduje zprostedkovn mnoha pohled na tut
vc zpsobem, kter je v tradinch jednosmrnch hromadnch sd
lovacch prostedcch prakticky nemysliteln.
Vinton Cerf: RFC 3271 (The Internet is for Everyone) .

Sov prosted

v potcch vvoje slicovch pota nebylo nutn jednotliv potae vz


jemn propojovat. Kad pota byl postaven vcemn jednoelov. S rozvojem
obrazovkovch terminl zaaly vznikat terminlov st. K jednomu vkonnmu po
tai bylo vdy pipojeno nkolik terminl, ty umoovaly soubn pstup vce
uivatelm. asem se ale objevily nov poadavky, pedevm na vzdlen pstup
a vmnu dat mezi samotnmi potai. K jejich realizaci bylo nejprve nutn vytvoit
robustn komunikan infrastrukturu potaovou s.
-

Co je obecn myleno pojmem potaov s? V podstat jde o systm propojujc


jednotliv hostitelsk potae, nikoliv terminly s potaem. Po propojen hostitel
skch pota je mon sdlet data a vzjemn vyuvat nabzench slueb. Pota
ov s se skld z hostitelskch uzl a komunikan podst. Hostitelsk uzly maj za
kol poskytovat sluby a mohou vyuvat slueb jinch hostitelskch uzl. kolem
komunikan podst je zprostedkovat komunikaci mezi hostitelskmi uzly. Komuni
kan pods se skld ze spoj a propojovacch prvk. Spoje slou k fyzickmu penosu
dat, propojovac prvky maj za kol dit a smrovat penos dat. Pokud je propojovac
prvek spojen s vce jak dvma spoji, mus se rozhodovat, jakm spojem pchoz data
pole dl. Schma potaov st je zachyceno na nsledujcm obrzku.

hostitel C hostitel D

Jedny z prvnch snah o vytvoen potaov st se objevuj na pelomu 50. a 60.


let dvactho stolet. Ministerstvo obrany Spojench stt zadalo nkolika firmm
kol vymyslet komunikan infrastrukturu propojujc vznamn vldn a obrann
uzly po celch USA. Hlavn motivac vvoje tto infrastruktury byl strach z nuklern
vlky. Ji od potku bylo jasn, e navrhovan s mus bt dokonale decentralizo
van, nesm mt dn centrum ani stednu. Ta by byla v ppad konfliktu prvnm
1 78 Kapitola 7. Sov prosted

potencilnm clem tonka. Komunikan pods mla bt dostaten robustn, aby


bylo mon komunikovat i v ppad, e nkter jej sti budou mimo provoz.
Na konci 60. let zaala bt budovna s ARPANET. S vznikla dky finannmu
grantu agentury ARPA Advanced Research Projects Agency. Grantov agentura minis
-

terstva obrany se asem pejmenovala na DARPA Defense Advanced Research Projects


-

Agency, potaov sti ji ale zstal pvodn nzev. ARPANET byl experimentlnm
projektem, ml ovit nov mechanismus zasln dat v datagramech. Robustnost
p enosu dat byla zaruena jejich rozdlenm na men celky, kter byly vyslny
samostatn rznmi smry. Cesta jednotlivch datagram je v takovm ppad ne
zvisl na ostatnch. Krom testovn stovch vlastnost byl ARPANET vyuvn
ke vzdlenmu pstupu k vkonnm potam.
Jednou ze skupin studujcch chovn st ARPANET byli i lenov laboratoe Ne
twork Measurement Center (NMC). Na vzkumu se podleli pedagogov a skupina
postgradulnch student z Kalifornsk univerzity v Los Angeles (UCLA). Sv po
znatky publikovali v dokumentech, kter jsou znmy pod zkratkou RFC - Request For
Comments. Dokumenty RFC hraj velmi vznamnou roli i v souasnosti. Jednou z nej
vznamnjch osobnost z NMC byl Vinton G. Cerf. V polovin 70. let zaal pracovat
na nov rodin protokol. Dnes je znme pod oznaenm TCP lIP. Pro ARPANET byl
pvodn navren penosov protokol NCP. Postupem asu se ale zaalo ukazovat,
e v nkterch aspektech nebyl ideln. Rodina protokol TCP lIP se vyvjela del
dobu a prola nkolika koncepnmi zmnami.
Samotn ARPANET tak prodlval zmny. S uren pvodn pouze k obran
nm elm dostvala stle vce civiln charakter. Transformace st vyvrcholila jejm
uvolnnm pro komern ely. S rozvojem loklnch potaovch st pipojujcch
se na ARPANET zaal vzrstat i poet pipojench uzl. V roce 1971 ml ARPANET
23 uzl, v roce 1984 to ji bylo vc jak tisc uzl. V roce 1973 se k sti ARPANET pi
pojily prvn uzly mimo USA, ve Velk Britnii a v Norsku. Samotn ARPANET zaal
fungovat jako pten s propojujc jednotliv potaov st. V roce 1982 byl v sti
ARPANET nahrazen protokol NCP protokolem TCP lIP. Tento protokol se pouv
dodnes. Globln s propojujc jednotliv st protokolem TCP lIP se zaala nazvat
Internet. S ARPANET byla oficiln zruena v roce 1989, lohu pten st v USA
pebrala s NSFNET.

7.1. Protokoly TCP/IP


Hlavnm komunikanm protokolem systm Unix je TCP lIP. To je tak dvo
dem velkho nasazen unixovch server na Internetu. Zejmna v potcch nasazen
protokolu TCP lIP byly vznamn pten uzly zajitovny prv unixovmi servery.
V Unixu existuj krom TCP lIP i dal komunikan protokoly, napklad UUCP -
- Unix to Unix Copy. Protokol UUCP byl vyvinut pro penen soubor a vzdlen
pstup k unixovm serverm. Na rozdl od TCP lIP je vak zvisl na platform
a m mnoho nepjemnch omezen. V souasnosti se protokol UUCP pouv jen
v minimln me a nebudeme se jm proto ble zabvat. V komernch implemen-
7. 1 . Protokoly TCP/lP 1 79

tacch Unixu maj sv zastoupen i firemn protokoly, kter obvykle nemaj veejn
pstupn specifikace, proto se jimi tak nebudeme zabvat.

Architektura protokol rodiny TCP/IP


Protokoly rodiny TCP l IP maj tyfvrstvou architekturu. Pi spojen dvou stran
spolu komunikuj vdy vrstvy na stejn rovni. V rmci kad vrstvy spolu stejn
strany komunikuj pedem smluvenou sadou pravidel - protokolem. Pm komu
nikace vak probh pouze na nejspodnj vrstv. Kad vrstva poskytuje sluby
vy vrstv a vyuv slueb ni vrstvy. Komunikace je zobrazena na nsledujcm
schmatu.

-------- aplikan protokoly --------


r----- ----
------- protokoly UDp, TCP -------
r----- r-----
IP protokol
fyzick pfenos dat

Kad ze ty vrstev m pi komunikaci pesn vymezen koly.

Vrstva sovho rozhran je nejni vrstvou. Zajiuje fyzick penos dat mezi
dvma sousednmi uzly. Do vrstvy stovho rozhran spad hardwarov adaptr
a pslun stov ovlada. Technologickch een vrstvy stovho rozhran je
mnoho. Spadaj sem optick spoje, mikrovlnn spoje, Ethernet, komutovan
spoje a podobn.

Vrstva sov zajiuje komunikaci mezi uzly. U zly spolu nemus pmo sousedit.
Stov vrstva mus eit vznamn problm - smrovn. Penen data mus
bt rovn dlena do malch datovch celk - datagram, ty jsou peneny
nezvisle. Stovou vrstvu zajituje v rodin protokol TCP lIP protokol IP -
- Internet Protocol.

Vrstva transportn zprostedkovv napojen na vrstvu aplikan. Pi komu


nikaci dvou uzl je nutn rozliovat, kter konkrtn aplikace spolu komuni
kuj. Toto rozlien je mon dky portm. Transportn vrstva vytv abstraktn
vrstvu nad potaovou st. S daty je mon zachzet jako s proudem. Dalm
vznamnm prvkem je spolehlivost pfenosu. Transportn vrstvu zajituj v rodin
protokol TCP /IP dva protokoly,
o UDP - User Datagram Protocol,
o TCP - Transmission Control Protocol.

Vrstva aplikan je tvoena jednotlivmi slubami. Sluby definuj vlastn komu


nikan protokoly. Napklad potovn servery komunikuj pomoc aplikanho
protokolu SMTP - Simple Mail Transfer Protocol, sluba WWW vyuv aplikan
protokol HTTP - Hypertext Transfer Protocol a tak dle.
1 80 Kapitola 7. Sov prosted

Sov vrstva protokol TCP/IP


Problm adresace a smrovn je een na stov vrstv. Kadmu rozhran je
v IP sti pidlen uniktn identifiktor - IP adresa. Nkdy bvaj nesprvn ztoto
ovny pojmy hostitelsk potta a sov rozhran. Jeden pota me bt vybaven
nkolika stovmi rozhranmi. Typickm pkladem je pota zprostedkovvajc
komunikaci mezi lokln st a Internetem. Takov pota m dv rozhran, fyzicky
se me jednat napklad o stovou kartu a modem. IP adresa me bt tak pia
zena napklad rozhran stov tiskrny nebo hardwarovmu smrovai. Jednotliv
IP adresy nejsou piazovny potam, nbr prv sovm rozhranm. Vztah mezi
hostitelem a stovm rozhranm je zachycen na nsledujcm obrzku. Hostitel A m
dv stov rozhran, hostitel B pouze jedno.
sov rozhran sov rozhran
pro vnitn s pro vnj s

.: r
..
...
\ .
.. - . .....
. ----
L.. ... = .K- .... . .

hostitel B sov rozhran hostitel A

Kad IP adresa m velikost 4 bajty. Pro zjednoduen se IP adresy zapisuj pomoc


tekov notace. Kad bajt je oddlen tekou, adresa je tedy zapisovna ve tvaru
a . b . c . d, kde a, b, c a d jsou sla v rozsahu O a 255. Hodnoty O, 255 maj speciln
vznam, viz dle. IP adresy jsou ureny k vzjemnmu rozlien stovch rozhran,
zrove ale slou i pi smrovn. Kad IP adresa m proto i sv vnitn lenn
zjednoduujc smrovn v IP sti. Adresa je dlena na adresu st a adresu rozhran.
Jist poet potench bit je vyhrazen pro oznaen potaov st. Zbyl bity slou
pro oznaen rozhran v rmci tto st. Podle potu bit vyhrazench pro adresu st
se IP adresy dl do t td adres.

Tda A lol : : ft; : : i : : : : : : : : : : rZra? : : : : : : : : : : I


Tda B 1 1 1 0 1 : : : : : : sf : : : : : : i : : : : : : rZra? : : : : : : I
Tda C 1 1 1 1 1 0 1 : : : : : : : : : ft; : : : : : : : : : i : : rZra? : : I
Kad tda adres zan prefixem, jen ji odliuje od ostatnch td. Tda A
zan prefixem O, tda B prefixem 1 0 a tda C prefixem 1 1 0 . Libovolnou IP adresu
lze okamit klasifikovat, protoe jednotliv prefixy vymezuj intervaly ppustnch
hodnot prvnho bajtu IP adresy. Adresy tdy A zanaj 0-127, adresy tdy B 128-191
a adresy tdy C 192-223. Napklad adresa 1 5 8 . 1 9 4 . 8 0 . 2 0 pat do tdy B, protoe
128 :::; 158 :::; 191 .
Jednotliv tdy se li pedevm v potu st a potu rozhran, kter jsou schopny
adresovat. Tda A m pro svyhrazen pouze jeden bajt, z nho je prvn bit prefixem.
Znamen to, e je mon vytvoit pouze 126 st tdy A. Na druhou stranu tyto
7. 1 . Protokoly TCP/IP 181

st mohou bt velmi rozlehl, kad me mt pes 16 milion rozhran. Adresy


td A jsou ji prakticky vyerpny, v praxi se s nimi lze setkat jen sporadicky.
Tda B umouje adresovat pes 16 tisc st, kad z nich me mt pes 64 tisc
rozhran. Adresy tdy B vyuvaj napklad univerzity. Nejbnj jsou adresy
tdy C umoujc adresaci 1,6 milionu st, kadou s 254 rozhranmi.
Jeliko je pi pouit adres typu A a B poet rozhran velk, je vhodn dlit je do
podst. Stov sprvce m monost rozhodnout se, jak velk st IP adresy nsledujc
tsn za adresou st bude vyhrazena pro adresaci podst. Jeliko me bt hranice
mezi podst a rozhranm rzn, je poteba ji vymezit maskou podst. Maska podst je
tybajtov slo zapisovan podobn jako IP adresa. V masce podst jsou jednikov
prv bity pedstavujc adresu st a podst. Adresy tdy B se velmi asto dl na
podst pomoc masky 2 5 5 . 2 5 5 . 2 5 5 . O . Vsledkem logickho souinu IP adresy
s maskou podst je adresa podst. Napklad pro IP adresu 1 5 8 . 1 9 4 . 9 2 . 2 1 a masku
podst 2 5 5 . 2 5 5 . 2 5 5 . O je adresa st rovna 1 5 8 . 1 9 4 . 9 2 . O .
Maska podst ani adresa st neme reprezentovat IP adresu skutenho s
tovho rozhran, napklad stov karty u potae. V dn logick sti reln IP
adresy rovn nesmj bt buto sam nuly, nebo sam jedniky. Tyto adresy jsou vy
hrazeny ke specilnm elm. Napklad adresa 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5 pedstavuje
lokln oznmen tto adrese odpovdaj vechna rozhran v rmci aktuln podst.
-

dn propojovac prvek nesm smrovat lokln oznmen z podst ven. Adrese ve


tvaru 1 5 8 . 1 9 4 . 9 2 . 2 5 5 odpovdaj vechna rozhran podst 1 5 8 . 1 9 4 . 9 2 . O . Ad
resy tohoto typu se nazvaj sov oznmen. Mezi speciln typy IP adres pat zptn
smyka. Jedn se o adresy tvaru 1 2 7 . x . y . z. IP adresa zptn smyky pedstavuje
loklnho hostitele a mus bt nakonfigurovna v kadm systmu. Nsledujc tabulka
obsahuje pehled uvedench pojm pro konkrtn IP adresu. K eskm pojmm jsou
uvedeny i hojn pouvan anglick ekvivalenty.

adresa vznam anglicky


12 7 . 0 . 0 . 1 zptn smyka loopback
1 5 8 . 1 94 . 8 0 . 0 adresa podst network address
158 . 1 94 . 8 0 . 2 0 adresa rozhran interface address
1 5 8 . 1 94 . 8 0 . 2 55 stov oznmen network broadcast
255 . 255 . 255 . 0 maska podst network mask
255 . 255 . 255 . 255 lokln oznmen local broadcast

Maska podst samozejm nemus bt zaokrouhlena na cel bajty. Napklad maska


podst 2 5 5 . 2 5 5 . 2 4 0 . O vymezuje pods obsahujc 4 094 rozhran. Podsje v ad
rese vyjdena prvnmi 20 bity. Ne vechny reln IP adresy lze v sti pout. N
kter pedsl jsou vyhrazena pro privtn IP adresy. V rmci adres tdy A jsou
to adresy 1 0 . x . Y . z, v rmci adres tdy B jsou to adresy v rozmez 1 7 2 . 1 6 . Y . z
a 1 7 2 . 3 1 . y . z. Pro adresy tdy C se jedn o adresy v rozmez 1 9 2 . 1 6 8 . O . Z a
1 9 2 . 1 6 8 . 2 5 5 . z. Privtn adresy mohou bt vyuvny kmkoliv ve vnitn sti.
V dnm ppad ale nemohou bt pouity jako IP adresy v Internetu. Privtn
adresy jsou nesmrovateln, data vyslan pes veejnou s k tmto adresm nikdy
1 82 Kapitola 7. Sov prostfed

nedojdou. Pokud je s vyuvajc privtn adresy napojen k veejn sti, mus v n


bt vyhrazen pota nebo jin stov prvek zaruujc pfeklad adres. Peklad adres
zajituje prv oddlen privtnch adres od adres vnj st a neumouje vyslat do
vnj st datagram s privtn adresou.
IP adresy jsou rozhranm v rmci st pidlovny buto staticky, nebo dynamicky.
Je-li adresa rozhran pidlena staticky, pota i stov prvek si ji uchovv ve
svch konfiguranch souborech. Pi kadm startu pouv adresu, ji m uchova
nou napklad v souboru / e t c / ne twork/ int e r f a c e s . Statick pidlovn adres
je jednoduch, pokud ale dojde napklad k peslovn st, je zmna daj na jed
notlivch potach pracn. Dynamick pidlovn spov v pidlovn IP adres
jednou autoritou. Systm si bezprostedn po svm startu zad o IP adresu - vyle
lokln oznmen s poadavkem. Na nj mu odpov autorita pidlujc IP adresy
v rmci podst. Vhoda dynamickho pidlovn adres je zejm - zjednoduuje
se administrace systmu. Na druhou stranu IP adresy jednotlivch rozhran nemus
bt pevn.
Pomoc dlen IP adres na sovou st a lokln st je mon efektivn smrovat
data v IP sti. V Unixu existuje nkolik pomocnch program umoujcch sledovat
smrovn. Program p i ng umouje zjitovat dobu odezvy vzdlenho rozhran. Pro
gram je zaloen na protokolu ICMP - Internet Control Message Protocol. ICMP slou
k pedvn diagnostickch a chybovch zprv v IP sti. Program p ing bere jako
argument IP adresu sledovanho rozhran. Kadou sekundu je na IP adresu zasln
poadavek a mena doba odezvy.
$ ping 1 5 8 . 1 9 4 . 8 0 . 13
P I NG 1 5 8 . 1 94 . 8 0 . 1 3 ( 1 5 8 . 1 94 . 8 0 . 1 3 ) : 56 d a t a byt e s
64 byt e s f rom 1 5 8 . 1 94 . 8 0 . 1 3 : i cmp_s e q = O ttl=255 t i me = O . l ms
64 byt e s f rom 1 5 8 . 1 94 . 8 0 . 1 3 : i cmp_s e q = l ttl=255 t i me = 0 . 2 ms
64 byt e s f rom 1 5 8 . 1 94 . 8 0 . 1 3 : i cmp -s e q = 2 ttl=255 t i me = O . l ms

I CTRL-C I
--- 1 5 8 . 1 94 . 8 0 . 13 p i ng s t at i s t i c s ---
3 p a c ke t s t ransmi t t e d , 3 pack e t s r e c e ived , 0 % packet loss
round - t r i p m i n / avg /max = 0 . 1 / 0 . 1 / 0 . 2 ms

Po stisku klvesy C - c je vypsna celkov statistika. Poet vyslanch poadavk


lze omezit pomoc argumentu c <lpoet t>. V tomto ppad nen nutn program
-

zastavovat klvesou C - c, po stanovenm potu krok se zastav sm. Ke sledovn


piblin trasy datagram slou program t racepath.
$ tracepath 1 5 8 . 1 9 4 . 8 0 . 13
I? : [ LOCALHOST] pmtu 1500
I? 1 9 5 . 2 5 0 . 14 2 . 1 8 8
2? 195 . 2 5 0 . 14 2 . 1 8 7
3? 195 . 250 . 13 9 . 12 9
4? : 1 94 . 5 0 . 1 0 0 . 1 9 1
5? : 195 . 113 . 157 . 86 a s ymm 8
6? : 1 5 8 . 1 94 . 1 1 6 . 1 a s ymm 3 8
7: 1 5 8 . 1 94 . 8 0 . 1 3 a s ymm 8 4 3 0ms reached
R e s ume : pmtu 1500 hops 7 back 8
7. 1 . Protokoly TCP/lP 1 83

Hodnota uveden za zkratkou pmtu udv maximln velikost souvislho bloku.


Ve uveden hodnota 1 500 bajt znamen, e je-li pes rozhran penen blok
vt velikosti, bude rozdlen do mench blok a ty jsou dle peneseny samostatn.
Krom programu t racepath mohou v systmu existovat i programy podobnho
zamen, napklad t ra c e rout e .
Data jsou p o protokolu I P zaslna nespojovanm a nespolehlivm zpsobem. Ne
spojovan komunikace m podobn charakter jako klasick dopisn sluby. Bhem
komunikace spolu jednotliv uzly neudruj trval spojen. Pro nespolehliv penos
je charakteristick nepotvrzovn penesench dat. Komunikujc strany si nijak ne
potvrzuj doruen dat. Datagramy se mohou bhem cesty ztratit, ani by se o tom
vyslac strana dozvdla. Vyslan data jsou pi komunikaci dlena do mench
celk - datagramu. Datagramy jsou po sti zaslny samostatn. Jednotliv datagramy
jsou slovny, pijmac strana z nich me opt sloit pvodn zprvu.

IP protokol nov generace aneb IPv6


Stov vrstva v souasnosti prochz nejvtm vvojem ze vech protokol rodiny
TCP lIP. Ve popsan princip adresace pomoc 32bitovch IP adres je typick pro
IP protokol verze 4, zkrcen IPv4. S masivnm rozvojem rozlehlch potaovch st
se zaalo objevovat nkolik jeho nedostatk. Na jedn stran je to nedostaten adresn
prostor vynucujc si pouvn privtnch IP adres a jejich nsledn peklad, na stran
druh je to ji ponkud peit dlen adres do td podle velikosti st. V roce 1995
zaal vznikat nvrh IP protokolu nov generace zkrcen oznaovanho IPng, nyn se
protokol oznauje zkratkou IPv6. Nvrh protokolu se neustle vyvj. V souasnosti
nen zdaleka jasn, v jak podob a pedevm kdy bude dokonen.
Mezi zkladn cle IPv6 pat mimo jin rozen adresnho prostoru a zobec
nn pojmu IP adresy. IP protokol nov generace pouv 128bitov adresy. Velikost
adresnho prostoru je vrazn vt ne v ppad 32bitovch adres a poet adres
je prakticky nevyerpateln. Vrazn zmny oproti definici IPv4 dostla i struk
tura IP adresy. Tradin dlen adresy na stovou st a adresu rozhran v rmci
st bylo nahrazeno jemnjm strukturovnm adres. IPv6 navc obsahuje vrazn
vt mnostv druh adres, co se pochopiteln promt do irch monost jejich
nasazen. Adresy protokolu IPv6 lze rozdlit do t zkladnch typu .
Adresy jednoho adresta - unicast addressee slou k oznaen prv jednoho ad
resta v rmci potaov st. Adresy se stejn jako u protokolu IPv4 nev
ou k hostitelskm uzlm, nbr k sovm rozhranm. Je-li zasln datagram
na adresu tohoto typu, bude postupn smrovn st, dokud nedojde na spe
cifikovan rozhran. Jemnj dlen adres dv mnohem vt monosti pi
smrovn datagram a pi pidlovn adres.
Adresy vce adrestu - multicast addressee nahrazuj v protokolu IPv6 lokln a s
tov oznmen znm z verze IPv4. Koncepce multicast adres je vak mnohem
obecnj. Data zaslan na multicast adresu dojdou kadmu dostupnmu roz
hran, kter je adresou pokryto. Tradin lokln a stov oznmen ji v IPv6
nejsou zahrnuta.
1 84 Kapitola 7. Sov prosted

Adresy nkterho z adrest - anycast addressee jsou novinkou protokolu IPv6.


Jedn se v podstat o druh hromadn adresy. Datagram zaslan na anycast
adresu dojde na jedno rozhran odpovdajc hromadn adrese. Datagram je
smrovn k odpovdajcmu rozhran nejblimu ve smyslu nejmen vzd
lenosti z hlediska stovho provozu. Anycast adresy maj vyuit napklad
k dodatenmu ovlivovn smrovn datagram, hledn hostitel s nejrych
lej odezvou a tak podobn.
Akoliv protokol IPv6 v mnohm ped svho pedchdce, jeho vvoj nen zda
leka ukonen a v souasnosti je pouvn pouze experimentln. Pro experimentln
provoz IPv6 nen vyhrazena dn komunikan infrastruktura, st pouvajc IPv6
jsou zatm pouze virtuln a pro penos datagram vyuvaj protokol IPv4.
Na druhou stranu, adresn prostor IPv4 je nyn prakticky vyerpn. Zdali
se IPv6 stane jeho hlavnm pokraovatelem, uke a budoucnost. Tento paragraf
vnujc se IPv6 byl pouze informativn a jeho kolem bylo nastnit teni souasn
problmy stov komunikace a jednu z doufejme perspektivnch snah jejich een.
Zjemcm o detailn popis IPv6 doporuuji vynikajc knihu [Sat02] . Dal kapitoly
se ji IPv6 nezabvaj.

Transportn vrstva protokol TCP/IP


Transportn vrstva vytv abstrakci nad potaovou st a nad penosem dat. Jejm
kolem ji nen samotn smrovn, ale bli vymezen komunikace v rmci aplikace
za jednm rozhranm. Napklad na dvou potach v st spolu me komunikovat
nkolik aplikac zrove. kolem transportn vrstvy je rozliit, kterm aplikacm
jsou konkrtn pchoz data urena. Protokoly transportn vrstvy definuj port - slo
v rozsahu 0-65535. Na jednotliv porty mohou bt napojeny aplikace. Kad stov
aplikace za jednm stovm rozhranm komunikuje pomoc jistho portu. Operan
systm obvykle vyhrazuje jist poet port, je je mon obsazovat pouze s privilegii
superuivatele roo t . Zpravidla jsou to porty 0-1023. Specifikace X/Open definuje
v hlavikovm souboru /us r / include / ne t db . h konstantu I PPORT_RES ERVED
udvajc nejvy slo rezervovanho portu.
sla port vznamnch slueb jsou uvedena v souboru / e t c / s e rvi c e s . Apli
kace se zpravidla obracej na potae se standardnm slem portu ve ve, e na
druh stran bude na portu naslouchat program, jen bude schopen komunikovat
stejnm aplikanm protokolem. Kupkladu WWW klient se pokus spojit se vzd
lenm potaem na portu 80. Tento port je vyhrazen pro aplikan protokol HTTP.
Pokud se klientovi nepoda navzat spojen na portu, zpravidla uivateli nahls,
e "nenael strnku ". V podstat se ale pouze nemohl spojit s WWW serverem na
standardnm portu. Standardn sla port nejsou pro sluby nijak zavazujc, jejich
nedodrovn vak me vst ke komunikanm zmatkm.
Na transportn vrstv pat do rodiny TCP /IP dva protokoly.
Jednodum protokolem je UDP User Datagram Protocol. Jedn se o mini
-

mln nadstavbu nad IP protokol zajitujc pedevm adresaci clov aplikace


7. 1 . Protokoly TCPIIP 1 85

za rozhranm pomoc port. Pomoc UDP jsou data penena nespojovanou


a nespolehlivou cestou. Data jsou penena v datagramech omezen velikosti.
Protokol je vyuvn pedevm slubami vyadujcmi rychl penos menho
mnostv dat. Protokol UDP vyuv napklad sluba DNS, viz kapitolu 7.2 .
Protokol TCP - Transmission Control Protocol zaruuje spolehlivost penosu dat.
Pi penen dat je pouvna technologie pozitivnho potvrzovn. Strana
pjemce zale o kadm pijatm datagramu potvrzen. Zaruen spolehlivosti
penosu s sebou nese reii promtajc se do rychlosti penosu. Protokol TCP
vyuv rovn porty. Bhem komunikace pomoc TCP se s daty zachz jako
s datovm tokem. TCP pln odstiuje dlen dat na datagramy. Komunikace
m spojovan charakter. Jednotliv komunikujc uzly nejprve navou spojen.
Spojen je udrovno bhem cel komunikace. Po dokonen penosu dat je
spojen zrueno.

Nelokln meziprocesov komunikace


V kapitole 5.2. byly pedstaveny velmi asto vyuvan mechanismy meziproce
sov komunikace. Jednalo se o rouru a pojmenovanou rouru. S jejich pomoc uivatel
mohl propojovat vstupy a vstupy nkolika program a efektivn tak eit adu pro
blm. Pi pouit stovho prosted se nabz otzka, zdali nen mon tento zpsob
komunikace povit na rove nelokln meziprocesov komunikace, to jest komunikace
proces pes sov rozhran. Principiln to samozejm mon je, v distribucch
operanho systmu GNU I Linux jsou navc obvykle k dispozici obslun programy
umoujc uivatelm jednodue zetzovat obslun programy bc na rznch
hostitelch.
Pfvyvjen stovch aplikac v Unixu se obvykle pouv zaveden rozhran Ber
keley Socket rozhran bylo poprv pedstaveno v implementaci systm BSD Unix.
-

Komunikace pomoc socketu je vyuvna i obslunmi komunikanmi programy,


napklad programem socket a mnoha dalmi. Samotn komunikace m charakter
klienti server. Komunikaci zahajuje vdy strana serveru. Na potku si server vyd
pomoc systmovho voln nov voln socket. Pokud je socket vyuvn k stov
komunikaci pouvajc protokoly TCP l IP, pi sputn serveru je nutn specifikovat
slo portu, na nm bude server naslouchat.
innost klienta je jednodu. Klient si vyd spojen na zadanou IP adresu
a konkrtn slo portu. Pokud na druh stran na portu naslouch server, spojen
je provedeno a ob strany spolu mohou komunikovat. V opanm ppad systm
oznm chybu. Pi komunikaci se na rozdl od roury nerozliuje producent a konzument.
I kdy server zahajuje komunikaci jako prvn, me bt producentem i konzumen
tem, bhem komunikace me dokonce ob role stdat. Tot plat i pro klientskou
stranu.
Obslun program socket je uren k propojen proces pes potaovou st
Prce s programem je do jist mry analogick prci s pojmenovanou rourou. Ko
munikaci mus vdy zahjit strana serveru - program socket je nutn spustit s ar
gumentem s a je poteba uvst slo volnho portu. Obyejn uivatel mus vdy
-
1 86 Kapitola 7. Sov prosted

zvolit slo 2: 1023, superuivateli root jsou k dispozici vechny neobsazen porty.
Pokud by ji byl port danho sla obsazen, program svou innost ukon chybovm
hlenm. Pokud probhne operace bezchybn, bude oteven nov socket a server
bude naslouchat na stanovenm TCP portu. Pi startu serveru je rovn nezbytn
vhodn pesmrovat vstup do socketu, ppadn vstup ze socketu. Viz pklad.

$ socket - sq 8 0 8 0 I tar xf -
socket : s e rve r socket : Addre s s a l ready in use
$ socket - sq 1 2 3 4 5 I tar xf -
. . server naslouch a ek na spojen . . .

Jak je patrn z ukzky, program socket byl propojen pomoc kolony s dalm
sputnm procesem - archivanm programem t ar. Pi spn dosti o spojen
bude server st data ze socketu a bude je prostednictvm kolony poslat na zpra
covn programu tar. V ukzce je pouit dleit pepna q zajitujc ukonen -

spojen po dokonen penosu dat. Pokud by pepna nebyl uveden, po dokonen ko


munikace by se server neukonil. V nkterch ppadech je toto chovn vhodn,
ale napklad pi penosu dat mezi dvma procesy je to zpravidla nedouc.
Po sputn serveru se me klient pokusit o spojen na danm portu. Klient d
o spojen pkazem ve tvaru socket <J hostitel r> <Jport r>, kde <J hostitel r> je IP adresa16
serveru a <Jport r> je slo portu, na nm server naslouch. Klientskmu programu je
opt nutn pesmrovat vstup nebo vstup - na klientsk stran je tak mon pout
argument - q ruc spojen po dokonen vstupn/vstupn operace. Viz ukzkov
pklad.

$ socket - sq 1 2 3 4 5 I tar xf -
. . na jinm hostiteli . . .
$ tar c f - - / data I socket - q 1 5 8 . 1 9 4 . 8 0 . 2 0 1 2 3 4 5
. . spojen navzno, probh penos dat . . .

V pkladu byl penesen obsah adrese - / data. Data byla ped penosem archi
vovna programem t a r a po penosu byla zptn obnovena z archivu. Schematicky
je komunikace obou stran zachycena na nsledujcm obrzku.

sputn server
stov penos navzno spojen
na portu 1 2 3 4 5
158 . 1 94 . 8 0 . 2 0 hostitel

Penen dat pomoc socketu se pouv pedevm v ppadech, kdy je nutn


propojit vc proces bcch na rznch potach. Pi pouit vce socket je nutn
spoutt servery ve sprvnm poad. Pokud se klient pokus spojit s nenavzanm
portem, program socket okamit zahls chybu.

1 6 V dal kapitole je uvedeno, e hostitelsk pota je mon specifikovat i pomoc symbolickho jmna.
Stejn tak je tomu i v ppad obslunho programu s o c k e t , prozatm se vak pidrme pouze IP adres.
7.2. Zkladn sov sluby 1 87

7.2. Zkladn sov sluby


Jednotliv rozhran jsou v IP sti odliena vzjemn rznmi IP adresami. IP ad
resy jsou ale dost tko zapamatovateln. Pro uivatele by bylo mnohem pirozenj,
kdyby mohl potae odliovat jmny. Jmna by mla bt uniktn a mla by mt i jis
tou informativn hodnotu. Napklad potae patc jednomu subjektu by se mly
svmi jmny alespo sten shodovat a to bez ohledu na jejich fyzick umstn.
Obdobnch mylenek se v podstat dr i jedna ze zkladnch stovch slueb - systm
domnovch jmen.
Nejjednodum zpsobem asociace jmna potae s jeho IP adresou je vloen
dvojice "IP adresa - jmno" do souboru / e t c / ho s t s . Tento soubor je v Unixu uren
k uchovn zznam o jmnech hostitelskch pota a IP adresch jejich vnjch
rozhran. Soubor zpravidla obsahuje pouze zptnou smyku a jmno loklnho hos
titele. V nkterch ppadech se do souboru umstuj i jmna vznamnch pota
mimo lokln st Viz pklad.
$ eat / e t e /ho s t s
12 7 . 0 . 0 . 1 l o c a l ho s t
1 5 8 . 1 94 . 8 0 . 1 3 phoenix
1 5 8 . 1 94 . 8 8 . 3 6 thunder
Prvn dva zznamy se tkaj loklnho hostitele. Dal zznam piazuje jmnu
thunde r IP adresu 1 5 8 . 1 9 4 . 8 8 . 3 6 . V prvopotcch ARPANETu si kad pota
udroval vlastn databzi znmch pota. Stedisko InterNIC udrovalo aktuln
databzi vech pota a jejich jmen a sprvci jednotlivch systm si podle n as
od asu aktualizovali sv lokln zznamy. Tento zpsob pedvn jmen soubor
byl schdn v dob, kdy jejich poty nepekroily tisce. Dnes, kdy jsou k celosv
tov sti pipojeny miliony pota, by podobn zpsob pedvn informac vedl
k nezvratnmu zahlcen cel st.

Systm domnovch jmen a sluba DNS


Krom technologickch omezen m udrovn databze jmen pota jeden
vrazn ideologick zpor - databze je shromaovna jednm subjektem, to je zcela
proti duchu pvodnho zmru vybudovat decentralizovanou st V souasnosti jsou
jmna pota pekldna na IP adresy svch rozhran pomoc distribuovan sluby
DNS - Domain Name System. Sluba DNS m charakter klient/server, pi n klient
d server o peloen jmna potae na IP adresu jeho rozhran.
Symbolick jmna pota jsou sloena z hostitelskho jmna a z domnovch jmen,
kter vytvej hierarchickou strukturu. Hostitelsk jmno je v symbolickm nzvu
uvedeno vdy jako prvn a je pouze jedno. Domnovch jmen me bt uvedeno
nkolik, jednotliv jmna jsou psna za sebou a jsou oddlena tekou. Hostitelsk
jmna reprezentuj listov uzly v hierarchii jmen, kdeto domnov jmna pedstavuj
vnitn uzly. Napklad v symbolickm jmnu cvs . deb i an . org . je cvs jmno
hostitele a deb i an a org jsou domnov jmna. Pklad sti hierarchie domnovch
jmen je na nsledujcm obrzku. Pro pehlednost jsou ped jmny domn uvedeny
teky.
. org . com . cz
/ \
. gnu

. de b i an . goog l e . upol
/ I
k l e cker cvs www aix . inf . opt i c s
/ ""
f tp phoenix

Koen hierarchie jmen tvo koenov domna. Koenov domna je oznaovna


przdnm etzcem. V ppad adresy cvs . deb i an . org . je za posledn uvedenou
tekou przdn jmno koenov domny. Domny nachzejc se v hierarchii bezpro
stedn za koenovou domnou se nazvaj domny prvnho du. Domny nachzejc
se bezprostedn za domnami prvnho du se nazvaj domny druhho du a tak
dle. Symbolick jmna maj tedy obecn tvar
<l hostitel f> . <ldomna k-tho dU f> . . . . . <l domna 2. du f> . <l domna 1 . du f>.
Symbolick jmna jsou obvykle uvdna bez teky na konci. Ve vtin ppad ne
dochz k nejednoznanostem. Hostitelsk jmna a jmna domn mohou bt dlouh
a 64 znak, skldat se mohou z prvnch 127 znak ASCII kdu. Pi vyhledvn
symbolickch jmen pota nehraj dnou roli velk a mal psmena. Symbolick
jmna pota nejsou case-sensitive.

DNS serve ry
Kadou domnu spravuj alespo dva potae primrn a sekundrn server
-

domny. Data na sekundrnm serveru jsou synchronizovna s primrnm serverem


zpravidla jednou denn. Primrn server domny udruje databzi potau a sub
domn nachzejcch se v dan domn. Servery koenov domny udruj databzi
informac o domnch prvnho du . Domny prvnho du pidluje mezinrodn au
torita ICANN Internet Corporation for Assigned Names and Numbers . Mezi domny
-

prvnho du pat generick domny, zahrnujc tematick oblasti a domny sttnch


zem. Sprva kad subdomny je pidlena jist organizaci i instituci. Vytven
dalch subdomn, to jest domn druhho a nich d, je ji pln v reii sprvc
domn.
V tuto chvli opt pipomeme, e systm domn nemus koprovat strukturu st.
Jeden pota me dlat DNS server i vce domnm zrove, ve skutenosti je
to dost ast jev. Potae zapojen v jedn podsti nemus bt nutn zaazeny do
te domny. Na druhou stranu, do jedn domny mohou patit i potae, kter
jsou od sebe velmi vzdlen a rozhodn nespadaj do jedn podst. Tento dsledek
je zejm z cel architektury DNS. Primrn server domny udruje pouze seznam
jmen a ppadnch IP adres. Pokud se na nj klient obrt s dost o peklad jmna na
IP adresu, server mu vyhov. DNS server umouje navzat jmno na zcela libovolnou
7.2. Zkladn sov sluby 1 89

IP adresu. U loklnch potaovch st obvykle symbolick jmna pota alespo


sten sleduj topologii st.
Sluba DNS je zajitovna temi typy server.
Primrn server domny uchovv data o hostitelskch jmnech, IP adresch
a subdomnch. DNS zznamy obsahuj jet dal informace vyuvan nap
klad pi doruovn poty. Primrn server je pro kadou domnu prv jeden.
Odpovdi poskytovan primrnmi servery jsou autoritativn - lze je povaovat
za smrodatn.
Sekundrn server domny slou k zrcadlen informac z primrnho serveru.
V kad domn mus bt alespo jeden. Sluby sekundrnho serveru jsou
vyuvny, nen-li zrovna k dispozici server primrn. Sekundrn servery po
skytuj rovn autoritativn odpovdi.

Cache server slou jako vyrovnvac pam DNS zznam. Pokud ji jednou
nael k danmu jmnu IP adresu, uschov si ji a pi dalch dotazech ji adresu
nehled, ale poskytuje uschovanou hodnotu. Cache server poskytuje neautori
tativn odpovd: Tyto typy server bvaj hojn pouvny pedevm, ale nikoli
jen, v mstech s pomalm nebo nestlm pipojenm ke vnj sti. Tm kad
lokln sje vybavena svm cache serverem.

Peklad jmen na IP adresy


Klient snac se prostednictvm DNS zskat IP adresu adekvtnho rozhran se
nazv eitel - resolver. eitel se obrac s dotazem na nejbli jmenn server. Ob
vykle se jedn o jmenn server v lokln sti nebo server poskytovatele pipojen
k veejn sti. Na jmenn server se pochopiteln klient neme obracet prostednic
tvm jeho jmna, ale pouze zn-li jeho IP adresu. Jmenn server buto zn odpov
na klientv dotaz, nebo nikoliv. V prvnm ppad dotazovan pota le v domn
jmennho serveru nebo o nm m jmenn server uschovnu informaci ve sv vyrov
nvac pamti. V druhm ppad se server me zachovat dvojm zpsobem. Buto
klienta odke na server v hierarchii ve nebo ne, nebo sm provede vyhledn
IP adresy a tu pak klientovi zale. Prvn zpsob se nazv nerekurzivn, druh rekur
zivn. Rekurzivn zpsob neklade takov nroky na klientskou st, navc jmennmu
serveru umouje uloit si vsledek hledn do sv vyrovnvac pamti. Pokud je
jmenn server cache server, chov se tm vlun rekurzivn.
Pokud se napklad klientsk program na potai phoenix . inf . upa l . c z po
kou o peklad jmna potae www . deb i an . org na IP adresu jeho rozhran,
nejprve kontaktuje svj nejbli jmenn server. Pokud m server pro jmno
www . deb i an . org uchovn zznam ve sv vyrovnvac pamti, vrt klientovi
pmo zaznamenanou adresu. V opanm ppad se jmenn server obrt na servery
koenov domny, ty jej odk na jmenn servery domny . org. Jmenn server do
mny . org poskytne daje o jmennm serveru domny deb i an . org. Od tohoto
serveru je zskna IP adresa. Adresa je pedna klientovi. Zrove si jmenn server
1 90 Kapitola 7. Siov prostfedi

me adresu i jmno potae uloit do vyrovnvac pamti a dle ji me pouvat


pi neautoritativnch odpovdch.
Proces pekladu symbolickch jmen na adresy je pro uivatele zcela transparentn.
Provdj jej implicitn tm vechny aplikace. Kad unixov systm m v souboru
/ e t c / re s o l v . conf zaznamenny informace o zkladnch jmennch serverech.
Pota v domn inf . upo l . c z me mt v souboru napklad nsledujc zznamy.

$ cat / e t c / resolv . conf


name s e rver 1 5 8 . 1 9 4 . 8 0 . 8 0
name s e rver 1 5 8 . 1 9 4 . 8 0 . 2 0
s earch inf . upol . c z upol . c z

Prvn dva dky deklaruj IP adresy pouvanch jmennch server. Na n se


klienti obracej se svmi dotazy. Servery buto zalou odpov, nebo eitele od
k na jin jmenn server. Poloka s earch deklaruje jmna loklnch domn. Seznam
loklnch domn slou ke zjednoduen odkazovn na ostatn hostitele. Symbo
lick jmna pota z lokln domny se nemus uvdt vetn domnovch jmen.
To jest, pokud je napklad uivatel pihlen k potai l inux O l . inf . upo l . c z ,
me s e na pota phoenix . i n f . upo l . c z odkazovat pouze jmnem phoenix.
Ve sv podstat je toto odkazovn analogick relativn cest v adresov struktue.
Krom DNS je v systmu minimln jeden dal mechanismus pekladu adres -
- soubor / e t c / ho s t s . Jejich vzjemn vztah je uren v konfiguranm souboru
/ e t c / ho s t . con f . Zde lze nastavit pedevm poad metod pekladu jmna na
IP adresu. Zpravidla se nejprve vyuv lokln databze, a pokud v n zznam nen,
je vyuito slueb DNS. Viz pklad.

$ cat /etc /hos t . conf


order ho s t s , b i nd

Oznaen b i nd pro peklad adres pomoc DNS se shoduje se jmnem nejroz


enjho DNS serveru BIND Berkeley Internet Name Domain Server povanho
-

prakticky ve vech implementacch Unixu a voln iitelnch operanch systmech.

Reverzn DNS
Krom pmho pekladu, to jest pekladu symbolickho jmna na IP adresy,
zahrnuje systm DNS rovn reverzn pfeklad. Reverzn peklad slou k zskn
jmna potae, ktermu nle dan rozhran. Reverzn DNS je vyuvno pe
devm k oven totonosti pi stov komunikaci. Mnoho stovch slueb od
mt spojen s uzlem, k nmu neexistuje platn symbolick jmno. Me se jed
nat o potencilnho naruitele. Reverzn DNS je organizovna podobn jako pm
DNS. Pro reverzn zznamy je vyhrazena speciln reverzn domna druhho du
i n - addr . arpa. V n tvo jednotliv sloky IP adres samostatn domny zapiso
van odzadu. Napklad IP slu 1 5 8 . 1 9 4 . 8 0 . 2 0 je v reverzn domn vyhrazeno
jmno 2 0 . 8 0 . 1 9 4 . 1 5 8 . i n - addr . arpa. Klient dotazem na symbolick jmno re
prezentujc IP adresu obdr odpov se jmnem potae.
7.2. Zkladn sov sluby 1 91

Zjiovn IP adres a symbolickch jmen


Vtina stovch klient provd peklad jmna na IP adresy automaticky, pokud
ale chce uivatel provst peklad run, me k tomu pout programy n s l ookup
a hos t . Run peklad adresy uivatele informuje o IP adrese nebo symbolickm
jmnu danho potae. Oba programy se pouvaj identickm zpsobem, jejich
argumentem je buto jmno hostitele, nebo IP adresa. Viz ukzkov dotaz.
$ n s 100kup www . debi an . org
S e rve r : alpha . inf . upol . c z
Addre s s : 1 5 8 . 1 9 4 . 8 0 . 2 0

Non - author i t at ive answer :


Name : www . debian . org
Addre s s : 1 9 8 . 1 8 6 . 2 0 3 . 2 0

Uivatel se dotzal na IP adresu rozhran potae se jmnem www . deb i an . org.


Uivatel byl zrove upozornn na fakt, e zobrazen odpov je neautoritativn.
Pi zptnm dotazu obdr uivatel symbolick jmno potae.
$ n s 100kup 1 9 8 . 1 8 6 . 2 0 3 . 2 0
S e rve r : a1pha . i nf . upol . c z
Addre s s : 1 5 8 . 1 9 4 . 8 0 . 2 0

Name : k l e cker . debian . org


Addre s s : 1 9 8 . 1 8 6 . 2 0 3 . 2 0
Jmna www . deb i an . org a k l e c ke r . deb i an . org se neshoduj. To nen nic
neobvyklho. Jeden pota me mt vce jmen, dokonce i v rmci jinch domn.
Napklad potae poskytujc sluby FTP a WWW maj obvykle pidlena i jmna
f t p a www. Program ns l ookup lze pouvat i v interaktivnm reimu, zjemce odka
zuji na jeho manulovou strnku. Program ho s t na rozdl od programu ns l ookup
nedisponuje pkazovm reimem.

Domny prvnho du
Domny prvnho fdu se v souasnosti dl do t skupin. V dobch vzniku dom
novch jmen byla vytvoena generick domnov jmna. Kad z nich charakterizo
valo subjekty, kter do nj spadaly. Jeliko nebyla s rozena mimo severoamerick
kontinent, nemlo smysl vytvet hlavn domny oddlujc jednotliv stty. Nsle
dujc tabulka obsahuje est zkladnch generickch domn prvnho fdu.

domna specifika domny


edu vzdlvac zazen
c om komern firmy
gov vlda USA
mi l armda USA
net stov instituce
org ostatn organizace
1 92 Kapitola 7. Sov prosted

Jakmile se k sti zaaly pipojovat dal stty, byly jim pidlovny samostatn do
mny prvnho du, napklad . uk, . no, . de a tak dle1 7 V ervenci 2000 byly
na konferenci v Yokoham ustanoveny dal generick domny prvnho du. Jedn se
o sedm novch domn. Domny by mly vyeit nkter stvajc problmy pronjmu
domnovch jmen.

domna specifika domny


aero subjekty podnikajc v letectv
biz vhradn komern firmy a komern ely
coop kooperujc organizace
info sluby poskytujc informace veho druhu
museum muzea, galerie, vstavit
name uivatelsk osobn strnky
pro domna sdruujc profese

V souasnosti je vtina tchto domn ji v provozu. Do budoucna vak lze oek


vat jejich masivn vyuit. Registrace jednotlivch domn je odstupovna finann
i omezenm obsahu prezentovanch dat.

Synchronizace asu
Mezi dal zkladn sluby pat synchronizace asu. Synchronizace asu je potebn
hned z nkolika dvod. Asi nejmarkantnj jsou problmy s elektronickou potou.
Pi patn synchronizaci asu me dojt k situaci, e dopis "pijde dv, ne byl vysln".
Synchronizace asu pota v sti nen zdaleka tak triviln, jak by se na prvn pohled
mohlo zdt. Pi synchronizaci dvou pota by za pedpokladu, e cesta datagramu
tam i zpt trv stejnou dobu, stailo pouze zskat as jinho potae a patin dle nj
upravit systmov hodiny. V potaz je ale poteba brt fakt, e dlka cesty datagramu
nemus bt v obou smrech stejn, rovn dotazovan pota nemus disponovat
pesnm asem.
Dalm problmem synchronizace asu jsou asov drifty. Systmov as by neml
bt mnn po skocch, nbr plynule. Pro synchronizaci stovho asu byl vyvinut
protokol NTP Network Time Protocol. Protokol se sna synchronizovat potae vz
-

jemn, jednotliv potae si periodicky vymuj asov informace, tm se statisticky


zmruj nepesnosti dan povahou penosovho mdia. Synchronizan servery jsou
rozloeny do nkolika td urujcch pesnost jejich asu. Servery synchronizovan
s atomovmi hodinami pat do tdy stratum 1 . Potae, kter se synchronizuj
s nimi, tvo stratum 2 a tak dle. Mechanismus asov synchronizace je pomrn
sloit a nem smysl jej zde podrobn rozebrat.
Z uivatelskho hlediska je zajmav program ntpda t e umoujc uivateli
vypsat informace o stavu asu na konkrtnm potai. Pkaz bv pouvn sprv-
1 7 Na adrese h t t p : // www . i ana . o rgj c c t l d j c c t l d - who i s . htm lze nalzt seznam domn vyhraze
nch pro sttn zem.
cem systmu k jednorzov synchronizaci asu, pokud je zavoln s argumentem q, -

pouze vype asov daje. Tmto zpsobem jej me pout i obyejn uivatel.

$ /usr/ sbin/ntpdate -q alpha . inf . upol . c z


s e rve r 1 5 8 . 1 9 4 . 8 0 . 2 0 , s t ratum 3 , o f f s e t - 0 . 0 7 2 0 0 5 , de l ay 0 . 0 2 6 9 3
2 3 Jul 1 6 : 5 2 : 2 8 ntpdate [ 1 4 4 5 8 1 :
adj u s t t ime s e rve r 1 5 8 . 1 9 4 . 8 0 . 2 0 o f f s e t - 0 . 0 7 2 0 0 5 s e c

Vpis uivatele informuje, e pota alpha se nachz ve td stratum 3 a ak


tuln as je 16:52:28. Program ntpda t e pat mezi systmov nstroje, proto bude
na vtin systm umstn v adresi / u s r / sbin. Uivatel obvykle nemaj na
adres / u s r / sbin nastavenu cestu.

7.3. Sdlen uivatelskch t


a vzdlen souborov systmy
V tto kapitole budou probrny nkter dl problmy, kter svm obsahem spa
daj sp do kapitol pedchzejcch. Pi prci v systmu Unix se lze napklad setkat
se sdlenm uivatelskch t mezi nkolika potai. Z hlediska prce v stovm
prosted, napklad ve firm, je praktick, aby uivatelsk ty nebyly zizovny
izolovan na kadm potai zvlt: nbr aby byly spravovny centralizovan.
Svm obsahem bychom tuto pas mli zaadit sp do kapitoly 2., avak z hlediska
srozumitelnosti vkladu je dobr uvst ji a po vkladu zkladnch pojm ohledn
potaovch st a stovho prosted operanho systmu. V tto kapitole je postupn
rozebrno sdlen uivatelskch t, sluba NIS, dle prce se vzdlenmi souborovmi
systmy a sluba NFS. Na konci kapitoly je nkolik uitench poznmek k prci
v heterogennm prosted.

Sdlen uivatelskch t
Pi prci v lokln potaov sti je dobr zajistit sdlen uivatelskch t. V praxi
to znamen, e pod stejnm uivatelskm jmnem a heslem se uivatel me pihlsit
k libovolnmu potai a pracovat na nm bez nutnosti zakldat na kadm potai
oddlen et. Dalm pirozenm poadavkem je okamit aktualizace zmn v da
tabzi. Libovoln zmna v uivatelskm tu, teba zmna hesla, by se mla okamit
promtnout na vechny potae sdlejc uivatelsk ty.
Tchto poteb si byla vdoma firma Sun Microsystems a vyvinula systm pro
sdlen uivatelskch t NIS Network lnformation System. NIS lze obecn vyut
-

ke sdlen systmovch databz, tedy nejen informac o tech, ale napklad o sto
vch slubch. Pvodn se systm NIS jmenoval Yellow Pages. Ochranou znmku
Yellow Pages ale vlastn spolenost British Telecom, proto se od tohoto nzvu poz
dji ustoupilo. Pvodn nzev systmu se promtl do nzvu systmovch program
vyuvajcch NIS, jejich nzvy vesms zanaj pedponou "yp " , napklad ypcat,
yppas swd a podobn.
1 94 Kapitola 7. Stov prostted

Systm NIS funguje zhruba nsledujcm zpsobem. Na centrlnm potai jsou


uloeny databze se systmovmi ty, ty jsou poskytovny dalm potam. Po
tae vyuvajc sluby NIS si dopluj lokln databzi t o daje v tto databzi.
Pi pihlaovn uivatele do systmu se kontroluje platnost uivatelskho jmna
a hesla, jako by se jednalo o loklnho uivatele systmu.
Je-li v systmu vyuvna sluba NIS, jsou v souboru I e t c /pas swd uvedeny
pouze lokln uivatelsk zznamy. Databzi uivatelskch t distribuovanou po
moc sluby NIS lze zobrazit pomoc programu ypc a t . Jako argument pro ypcat
mus bt uveden nzev mapy - pro vpis hesel lze pout pas swd . byname, pro vpis
skupin group . byname . Viz pklad.
$ ypcat pas swd . byname I grep A nav
navrat i l : . . . : 6 2 9 : 2 0 9 : Luka s Navrat i l : / home /navrat i l : /bin/bash
navrat i r : . . . : 1 3 1 9 : 2 0 9 : Radek Navrat i l : / home /navrat i r : /bin/bash
navrat i j : . . . : 2 1 3 2 2 : 2 0 9 : Ji r i Navrat i l : / home / navrat i j : /bin/bash

Pi pouit NIS existuj v systmu dvoj databze t - lokln databze ulo


en v souborech l e t c /pas swd a l e t c / group a databze distribuovan slu
bou NIS. Je jen na administrtorovi systmu, jak nalo s jejich vzjemnm postave
nm. Vzjemn vztah obou databz v systmu je definovn v konfiguranm souboru
I e t c I ns swi t ch . c on f . Tradin bv v systmech nastavena lokln databze jako
primrn - zznamy jsou hledny nejprve v lokln databzi, nejsou-li v n nalezeny,
pouije se databze poskytovan slubou NIS.
Zkladn potebou kadho uivatele je zmna pstupovho hesla. Pro zmnu
hesla v systmu vyuvajcm slubu NIS je poteba pout program yppas swd.
Zmnu lze provst z libovolnho potae vyuvajcho slueb NIS, zmna hesla se
pomoc NIS automaticky promtne i do databz ostatnch stanic.

Sdlen diskovho prostoru


V pedchozch paragrafech bylo eeno, e Unix disponuje systmem sdlen
uivatelskch t jmnem NIS. Jeliko diskov prostor pirozen nen soust
informace o tu, byl vymylen dal standard pro sdlen souborovch systm
prostednictvm potaov st. Firma Sun Microsystems vyvinula stov souborov
systm NFS - Network File System. Systmy NIS a NFS spolu tm vdy koexistuj.
Systm NFS umouje sdlet data po sti. Pota poskytujc data se nazv souborov
server -jle server. Potae vyuvajc tento diskov prostor se nazvaj klienti.
Na stran potae poskytujcho souborov systm mus bet speciln server
obsluhujc pchoz poadavky. Tento server se nazv NFS daemon a je realizovn
buto programem sputnm bhem startu systmu, nebo specilnm rozenm
jdra samotnho operanho systmu. Napklad novj verze operanho systmu
Linux maj slubu NFS serveru zabudovanou pmo v jde kvli efektivit. Soubo
rov server zpravidla neposkytuje data vem stanicm. V souboru l e t c i export s je
uveden seznam exportovanch adrest, urujc, kterm stanicm budou data exporto
vna. NFS neimplementuje vlastn reln souborov systm, b jako transparentn
vrstva. NFS umouje definovat exporty na rovni jednotlivch adrest.
Pokud k tomu m klient oprvnn, me pipojit exportovan adres. Pipo
jen probhne podobn jako pi pipojen loklnho souborovho systmu. Jedin
rozdl je v odkazu. Msto specilnho souboru je pouvna sov cesta ve tvaru
<Jpotar>:<Jadresr>. Viz pklad pipojen vzdlenho souborovho systmu.
# mount - t n f s poc i tac . nekde . c z : /home/users /home

V ukzce byl pipojen adres / home / u s e r s ze vzdlenho souborovho serveru


poc i t a c . nekde . c z do loklnho adrese / home. Podotknme, e ve uvedenou
operaci je mon provst pouze se superuivatelskmi privilegii. Obyejn uivatel
systmu obvykle nemohou manipulovat se vzdlenmi souborovmi systmy. Pi
prci s pipojenm souborovm systmem ji nen uivatel nijak omezovn. Ma
nipulace s daty na vzdlenm souborovm systmu se li pouze v dob odezvy
a v penosov rychlosti.

Prce v heterogennm prosted


Pi sdlen domovskch adres mezi potai rznch platforem je obvykle
poteba mt jin nastaven nkterch uivatelskch promnnch. Dvod me bt
hned nkolik - napklad binrn nekompatibilita program a sdlench knihoven
na dvou rznch hardwarovch architekturch. Programy peloen pro procesory
Intel toti nepob na ostatnch typech procesor, teba na procesorech Alpha nebo
PowerPC. Dalm dvodem nutnosti rozdlnho nastaven promnnch me bt
napklad jin struktura adres na dvou rznch systmech.
V obou ppadech lze problmy vyeit vhodnm zsahem do uivatelskch inici
alizanch soubor - / . bashyro f i l e i - / . prof i l e . V inicializanch skriptech
je mon provdt podmnn vyhodnocen pkaz v zvislosti na aktuln architek
tue systmu, ppadn na zklad jeho hostitelskho jmna. Tyto daje jsou uloeny
v promnnch HOSTTYPE a HOSTNAME. Nsledujc pklad ukazuje, jak lze vhodn
vytvet skripty fungujc v multiplatformnm prosted. Pro demonstraci bylo zvo
leno odlin nastaven cesty ke sdlenm knihovnm zvisl na pouit architektue
a zmna nastaven prohledvac cesty pro konkrtnho hostitele.
$ cat - / . pro f i l e
# sdi l ene kn ihovny
export LD_L I BRARY_PATH= - / l i b / . $HOSTTYPE

# na s t aveni c e s t y
PATH= $ PATH : - /bin
i f [ $HOSTNAME = ' hube rtus ' 1 ; then
PATH = $ PATH : / usr/ sbin : - /b i n / dodatky
fi

V ukzkovm skriptu byla exportovna promnn L D_L I BRARY_PATH. Naopak


promnn PATH explicitn exportovna nebyla. Export promnn PATH toti bv
obvykle proveden ji v globlnm inicializanm skriptu / e t c /pro f i l e . V podob
nm duchu lze upravovat i jin nastaven zvisl na architektue systmu.
1 96 Kapitola 7. Siov prostedi

7.4. Elektronick pota a N etwork N ews


Elektronick pota slou k vmn elektronickch dopis. Elektronick dopis
proel bhem rozvoje potaov st jistm vvojem. V ranch dobch mohl dopis
obsahovat pouze prost text, v dnen dob me dky MIME obsahovat tm
cokoliv. Zkladem elektronickho dopisu ale pod zstv jeho textov charakter.
Ped vznikem Internetu byl pro penos poty v Unixu pouvn protokol UUCP.
Penos poty pomoc UUCP se technologicky dost liil, rovn specifikace adresta
byla odlin.
Kad elektronick dopis m urenho adresta. Adresa obsahuje informace o ui
vateli a o serveru, na kterm m zzen potovn et. Penos poty pomoc UUCP
vyaduje specifikovat adresu, je pmo v sob definuje cestu a smrovn dopisu
v sti. Adresa dopisu zaslanho pomoc UUCP m tvar

<Jpoital r> ! <Jpoita2 r> ! . . . ! <Jpoitan r> ! <J uivatel r>

Znak " ! " se nazv "bang", proto se tto notaci k bang notace. V souasnosti se
prakticky nepouv. Nejvt nevhodou adresy v bang notaci je prv pesn popis
cesty mezi potai. Adresa nen obecn platn a zvis na mst odesln. Odchoz
dopis je nejprve dopraven na <Jpoital r>, z nj na <Jpoita2 r> a se dostane k poslednmu
pojtai, kde se ulo do schrnky uivatele <J uivatel r>. V dalm textu se ji potou
pes UUCP nebudeme zabvat. Protokol SMTP Simple Mail Transfer Protocol, kter
-

je v souasnosti pro elektronickou potu vyuvn, pracuje vhradn s adresami ve


tvaru

<J uivatel r>@<J domna r>

kde <J uivatel r> specifikuje jmno nebo alias jmna uivatele a <J domna r> uruje clo
vou adresu. Znak ,,@ " se nazv "at". Clov <J domna r> nemus vdy existovat jako
domna v DNS. Pi zasln poty existuje nkolik virtulnch potovnch domn.
Tyto domny jsou vyuvny jako potovn brny do jinch st.

Struktura elektronickho dopisu


Elektronick dopis se skld ze dvou st, hlaviky dopisu a tla dopisu. Hlavika
obsahuje informace o adrestovi a odeslateli, nzvu dopisu a datu odesln. Obsahuje
rovn i dal administrativn informace. Struktura hlaviky dopisu je jednoduch.
Kad daj je zapsn na samostatnm dku. dek je rozdlen na dv sti oddlen
dvojtekou <Jpoloka r> : <J hodnota r>. Klov slovo <Jpoloka r> uruje typ daje, <J hodnota r>
daje nsleduje za dvojtekou.
Z hlediska zasln poty jsou klov poloky obsahujc adresy. Adresy mohou
bt v hlavice uvedeny dvojm zpsobem, buto pmo, nebo vetn informace
o obanskm jmnu i pseudonymu uivatele. V druhm ppad se adresy zapi
suj ve tvaru dvojice <Jjmno r> < <Jadresa r , pitom adresa je vymezena oddlovai
,, < " a ll > '" napklad Jan Novak < novakj @phoenix . inf . upo l . c z > . Nsledu
jc souhrn obsahuje popis nejpouvanjch poloek hlaviky dopisu.
7.4. Elektronick pota a Network News 1 97

poloka vznam
Date datum odesln s daji o asovm posunu vi GMT
From odeslatel dopisu
Me s s age - I D identifiktor zprvy generovan potovnm programem
Rece ived zznam serveru manipulujcho s dopisem
Rep l y - To adresa, na kterou je zaslna odpov
Subj e c t jednodkov popis obsahu zprvy
To adrest dopisu

Rovn subjekt dopisu je dleit, ml by krtce shrnovat jeho obsah. Zvl pi hro
madnm odesln dopis je volba vhodnho subjektu velmi vznamn. Poloka
Rep ly - To uruje, komu m bt na dopis odpovzeno. Pokud uivatel odpov na
dopis, odpov bude smrovna tomuto uivateli. Nen-li Rep ly - To uvedeno, je
odpov smrovna na adresu From. Poloky Re c e i ved generuj potovn servery,
jimi dopis prochz bhem doruovn. V pchozm dopisu je jich zpravidla uve
deno nkolik. Pomoc poloek Re c e i ved lze vysledovat trasu elektronick poty.
Tlo dopisu je historicky sloeno ze sedmibitovch ASCII znak. Po rozen
Internetu mimo USA vzniklo nkolik novch poteb. Jednak bylo nutn umonit
penos zprv obsahujcch diakritick znaky, jednak bylo poteba penet pomoc
elektronick poty i netextov plohy dopis. Tyto dva problmy vyeil nov standard
MIME Multipurpose Internet Mail Extensions. Standard je pln zptn kompatibiln.
-

Pi pouit MIME je tlo dopisu rozdleno do nkolika sekc zvanch plohy. Kad
sekce m definovn svj typ, kdovn a nkolik dalch dodatench informac.
Typ plohy slou ke klasifikaci jejho charakteru a je deklarovn speciln polo
kou hlaviky Cont ent - Type . Charakter plohy do jist mry uivateli oznamuje,
jak data ploha obsahuje. K popisu typu slou speciln identifikan etzce. V sys
tmu jsou popsny v souboru / e t c /mime . typ e s . Identifiktory typu se skldaj ze
dvou st zapisovanch ve tvaru <J typ r> / <J podtyp r>, kde <J typ r> je oznaen zkladnho
typu a <Jpodtyp r> je bli kategorie. Nsledujc tabulka shrnuje pklady nejastji
pouvanch MIME typ.

typ a podtyp vznam


app l i c a t i on obecn binrn data
app l i c at ion/ o c t e t - s t ream binrn data bez bliho zaazen
app l i cat i on/pdf soubor ve formtu PDF
image obrzky
image /png obrzek ve formtu PNG
me s s age vnoen zprvy
t ext obecn textov data
t ext / p l a i n prost text
t ext / html dokument ve formtu HTML

Krom typu dat je nutn specifikovat i jejich kdovn. Jeliko mohou bt obsahem
dopisu pouze sedmibitov ASCII znaky, je nutn penen data zakdovat do tto
1 98 Kapitola 7. Sov prosted

podoby. Zrove se mus dodret i dal omezen, napklad maximln dlka dku
nesm peshnout 1 000 znak. Kdovn dat v ploze je deklarovno polokou
hlaviky Cont ent - Trans f e r - Encoding. Mezi nejbnj typy kdovn pat
7 - b i t , guo t e d - printab l e a base 6 4 . Kdovn guo t e d - printab l e je vhodn
pro zakdovn text obsahujcch ASCII znaky vy ne 127. Napklad v eskch
slovech je v prmru znak s diakritikou relativn mlo, proto tato metoda kdovn
pli nezvt velikost souboru. Znaky s ASCII hodnotou vy ne 127 jsou v textu
kvotovny sekvenc =<l hex r>, kde <l hex r> je dvoucifern hexadecimln ASCII hodnota
znaku. Napklad slovo "sr " o dlce t znak bude za pedpokladu pouit kdov
strnky 150 8859 2 zakdovno ve tvaru " S = FDr " . Samotn znak ,, = " se v ppad
kdovn guo t e d - printab l e stv metasymbolem, to jest znak ,, = " je poteba
kdovat sekvenc ,, = 3 D " .
Kdovn guo t e d - printab l e se pli nehod pro penos binrnch dat, pro
toe velikost datovho souboru rychle narst. K tomuto elu je ureno kdovn
b a s e 6 4 . Vstupn datov soubor se rozdl na posloupnost trojic po sob jdoucch
znak. Vznikne tak posloupnost sloen z 24bitovch sek. Kad trojice znak je
dle rozdlena na tyi estibitov sti. Kad tato st je zakdovna jednm bajtem.
Vsledn soubor se oproti pvodnm datm zvt na tyi tetiny. Kd ba s e 6 4 je
vhodn prv pro kdovn obecnch osmibitovch binrnch dat. Kdovn frze
"sr " je uvedeno na nsledujcm schmatu, v prvnm dku je zakdovna samotn
frze, druh dek je jej bas e 6 4 ekvivalent.
8-bitov kd

kd bas e 6 4

Kad ploha m dn svj charakter polokou Content - D i spos i t i on. Cha


rakter inl ine uruje, e ploha by mla bt pmo zobrazena v okn potovnho
klienta. Dalm bnm charakterem je a t t achment ploha ve form pipoje
-

nho souboru. Za charakterem a t t achment zpravidla nsleduje informace o nzvu


souboru.

Penos elektronick poty


Procesu zasln poty se astn nkolik program. Uivatel pi psan a ten
poty pouv speciln program UA User Agent. UA bv nkdy oznaovn po
-

tovn klient. Potovn klienti neslou k samotnmu transportu poty, nbr umouj
uivateli ten pchozch dopis a rovn jejich zasln. Transport poty obstarvaj
potovn servery nazvan MTA Mail Transfer Agents. Mezi nejpouvanj potovn
-

servery v Unixu pat sendma i l, pos t f ix, gma i l a exim. Potovn servery se
pi pedvn poty d nkolika informacemi, jednak pouvaj lokln informace,
vyuvaj ale i informac z DNS. Pi doruen poty je dopis zapsn do uivatelovy
pchoz schrnky inboxu. Pokud dopis nelze doruit, jednotliv potovn servery jej
-

na as "zmraz" a pokus o odesln opakuj pozdji. Kdy ani tak neuspj, je odesla
teli zasln upozorujc dopis. Pchoz schrnky uivatel jsou uloeny v souborech
7.4. Elektronick pota a Network News 1 99

jvar j 8poo l jma i l j <l uivatel t>, kde <l uivatel t> je uivatelsk jmno adresta. Obsah
soubor lze st buto pomoc potovnho klienta, nebo vzdlen. Vzdlen pstup
je bn napklad u poskytovatel Internetu. Pro manipulaci se vzdlenou schrn
kou byly vyvinuty dva protokoly, POP - Post Office Protocol a IMAP - Internet Mail
Access Protocol. Protokoly uivateli umouj penst potu ze vzdlenho systmu
na lokln bez nutnosti pihlaovat se do systmu vzdlen. Oba protokoly funguj
i ifrovan. Penos elektronick poty je schematicky zachycen na nsledujcm ob
rzku.

..- penosdat ....


==
.... =
protokol SMTP == /
- " '" [MAP, POP
.-- ------- -
' " '' ''
- - '' \
hostitel hostitel
_
ssh
_
A B

hostitel C

V Unixu se nejastji s potou manipuluje pomoc klientskch program, jakmi


jsou ma i l, e lm, mut t a podobn. Program ma i l je standardn unixov nstroj, je
k nalezen v kadm systmu. Jeho hlavn nevhodou je nemonost pracovat s MIME.
Uivatelsk komfort pi pouvn programu tak nen nejvy. V souasnost je
program vyuvn pedevm k zasln zprv uivateli. V kapitole 5.5. byl program
pouit k periodickmu zasln zprv o bhu archivanho procesu. K tomuto elu
le pout program ve tvaru

ma i l - 8 <l subjekt t> - c <lkopie t> <ladresy t>

kde <l subjekt t> oznauje subjekt dopisu, je-li i s argumentem - 8 vynechn, dopis
bude mt przdn subjekt. Nepovinn argument - c <lkopie t> uruje, komu m bt
zaslna kopie dopisu. Seznam adres na konci pkazovho dku uruje clov adresy.
Program ma i l te standardn vstup. in tak, dokud nen na vstup zapsn dek
s jedinm znakem " . " nebo pokud uivatel neuzave vstup stiskem C - d. Program
lze samozejm pout s pesmrovanm vstupem. Pi penosu osmibitovch znak
mohou nastat problmy.
pravami programu ma i l vzniklo nkolik dalch potovnch klient. Mezi nej
znmj z nich pat e lm a mut t . Program mut t je mal, ale mocn klient uren pro
terminly. Pln podporuje MIME, ifrovn poty, vzdlen pstup k inboxu a tdn
dopis do vlken. Vlknovn umouje manipulovat se skupinou odpovd na je
den dopis jako s celkem. To umouje vrazn zrychlit prci s dopisy. Bohuel popis
programu mut t ponkud pesahuje rmec tohoto textu. O stylu prce s programem
si lze udlat pedstavu z nsledujcho obrzku. V ukzce je program zapnut v re
imu vlken. Strukturu odpovd na vchoz dopis mut t zobrazuje pomoc "ipek" .
V ukzce jsou ti odpovdi oznaeny pro vmaz.
200 Kapitola 7. Sov prosted

: Qu i t GI : De I u : UnGle l s : Save ., : Ha i I r : Rep l y g : Group ? : He l p


37 Dec 31 Ky l e Cronan 1 3 ) Spec i fy i ng co l ors
38 D Jan 94 Ar i e l R i os 7 ) Re : gnoMe - gu i l e bug l i st ?
39 ND Jan 94 6 i l l Gr i bb l e 18) ' -)
49 ND Jan 94 Ar i e l R i os 12) ' -)
41 N Jan 94 Ar i e l R i os 1 5 ) gnoM e - gu i l e - 9 . 2 1 pre4
42 N Jan 95 rM@fabu l a . Gle 39 ) 1 - )
43 N Jan 95 Ar i e l R i os ( 17) 1 ' - )
44 N Jan 97 Ne i I Jerrar'l 19) 1 '-)
45 N Jan 98 rM@fabu l a . Gle 29 ) 1 '-)
46 N Jan 97 60 F ors l unGl 92) ' -)

- * - Hut t : =gu i l e - gt k [ Hsgs : 46 New : 8 De l : 4 1 85K] - - - ( t nreaGls/Glat e ) - - - ( enGl ) - - -

Krom interaktivn prce lze vyuvat mu t t i k neinteraktivnmu zaslan dopis.


Jeliko program um manipulovat s MIME, velmi efektivn jm lze odeslat soubory.
Argument - a je uren k zaslan souborovch ploh. MIME typ je automaticky
detekovn podle ppony souboru a kdovn je zvoleno rovn automaticky. Viz
pklad.
$ eeho I mut t -a f l . sem -a f2 . sem - s I I novakj @nekde . e z

V pkladu byly na adresu novakj @nekde . c z zaslny dva soubory, f l . scm


a f 2 . s em. Subjekt dopisu byl przdn a tlo dopisu rovn, jeliko vstup programu
e c ho byl przdn. Zasln soubor potou lze jet vce automatizovat skriptem
volajcm program mut t ve svm tle. Pi pedvn argument je poteba kad
pipojen soubor oddlit pomoc argumentu - a. Napklad skript
$ eat s endfi l e s . sh
# ! /bin/sh

i f [ $ # - l t 2 ) ; then
e cho " us age : $ 0 [ f i l e ) . . . [ addres s ) " ;
exit 1 ;
fi

whi l e ! [ $ # = 1 1 ; do
F I LES = $ F I LES ' - a ' $ 1 ;
shi f t ;
done

echo I mut t - s " $ F I LES $ 1

bere jako argumenty soubory, kter maj bt zaslny potou, posledn uveden
argument je adrest. Nejprve je vytvoen seznam soubor, oddlench argumen
tem - a. Seznam je potom pedn programu mut t . Pedchoz pklad opt ukazuje,
e nkter typy problm lze v shellu eit velmi jednodue.

Pesmrovn a filtrace pchoz poty


Pi zasln a doruovn uivatelsk poty je vyuvno nkolik soubor a ad
res. Soubor / s ignature slou k vytvoen uivatelsk signatury "podpisu",
- . -
7.4. Elektronick pota a Network News 201

jen je pipojen na konec odeslanch dopis. V tuto chvli je vhodn upozornit, e


se nejedn o "digitln podpis" ve smyslu oven autenticity odeslatele, pouze o in
formace pipojen ke kadmu odeslanmu dopisu. Podpis je zpravidla tvoen infor
macemi a kontakty na odeslatele. Krom pchoz schrnky maj uivatel zpravidla
pozeny tematick schrnky. Adres tradin vyhrazen pro tematick schrnky je
- /ma i 1. Pokud m uivatel vytvoen soubor / . forward, je veker pchoz pota
-

peposlna jinam. Struktura souboru / . forward je jednoduch. Soubor se skld


-

z poloek, kter jsou oddleny rkami nebo znakem nov dek. Kad poloka m
vznam buto loklnho souboru, adresy, nebo roury. Je-li uveden poloka absolutn
cestou k souboru, pak je pchoz pota uloena do tohoto souboru. Je-li uveden
poloka ve tvaru adresy, pak je pota peposlna na danou adresu. Zan-li poloka
znakem " I ", pak je sputn program, jeho absolutn cesta je uvedena za znakem
" I " a pchoz dopis je mu pedn jako standardn vstup. Pokud je poloek uvedeno
vce, provedou se akce pro kadou poloku samostatn. Uvaujme napklad soubor
- / . f o rward s nsledujcm obsahem.

$ cat - I . forward
l / home / s tudent / i nf 9 7 /novakj / b i n / announce
j enik@poc i t a c . nekde . c z

Kad dopis je peposln na adresu j enik@poc i t ac . nekde . c z a zrove je


pedn na vstup programu /bin/ announc e . Tento program me s dopisem libo
-

voln nakldat, napklad me z dopisu extrahovat podstatn informace a uloit je


do databze.

Vyzvednut vzdlen poty


Pokud se uivatel z njakho dvodu neme pihlsit na vzdlen pota a st
si na nm svou potu, mus si vzdlenou potu penst na lokln systm. Vyzvednut
vzdlen poty principiln umouje pistupovat k pot lec i na neunixovch
potach. Nejastji pouvan protokoly pro pstup ke vzdlenm inboxm jsou
implementovny v mnoha rznch operanch systmech. K manipulaci se vzdle
nmi pchozmi schrnkami slou program f e t chma i 1 . Me bt spoutn buto
automaticky nebo jednorzov. Jednorzovm sputnm je mon buto zobrazit
informace o inboxu, provst penos zprv, nebo jejich vmaz. Program f e t chma i l
podporuje celou adu komunikanch protokol vetn nejpouvanjch dvou -
- POP3 a IMAP.
Program f e t chma i l je neinteraktivn, jeho innost lze ovlivnit pi jeho sputn.
Argumenty programu f e t chma i l lze rozadit do nkolika skupin. Jedna skupina
argument slou pro specifikaci potovnho serveru, z nho budou data penesena,
a protokolu, kter bude pro penos dopis pouit. Druh tda argument specifi
kuje nebo d samotn penos dat. Konen tet tda argument uruje, jak bude
s penesenou potou naloeno - zdali bude napklad uloena do lokln schrnky
nebo jestli budou penesen dopisy zpracovny dalm programem. asto pouvan
argumenty programu jsou shrnuty v nsledujc tabulce.
202 Kapitola 7. Sov prosted

argument vznam
-F smae star zprvy ze serveru
-K nov zprvy po penesen smae
- P <Jport r> TCP <Jport r>, k nmu se f e t chma i l pipoj
-a penese star i nov zprvy
-c zkontroluje, ale nepenese potu
-k nov zprvy po penesen ponech na serveru
-1 <J max r> nepenese zprvy pekraujc zadanou velikost
-m <J program r> MDA, ktermu budou pedvny zprvy
-p <Jproto r> protokol pro penos, napklad POP 3 , l MAP, AUTO, . . .

-r <Jjmno r> jmno vzdlen potovn schrnky


-u <Jjmno r> uivatelsk jmno na serveru

Za povimnut stoj argument -m <Jprogram r> specifikujc MDA Mail Delivery -

Agent, jemu jsou zprvy pedny. MDA je program provdjc lokln doruen
zprvy. V praxi se tento argument pouv, pokud jsou uivatelsk jmna loklnho
a vzdlenho uivatele rzn. V tto situaci lze spustit jako MDA program procma i 1
s argumentem - d <J uivatel r>. Veker vstupn dopisy potom budou dorueny do
loklnho inboxu uivatele <J uivatel r>. Viz pklad.

$ fetchmai l -k -m ' procma i l -d novakj ' \


> -p lMAP - u j enik poc i tac . nekde . c z
Ent er password for j enik@poc i tac . nekde . c z : . . . heslo . . .

4 me s s ages for j enik at poc i t ac . nekde . c z .


reading me s s age 1 o f 4 not f lushed
reading me s s age 2 of 4 not f l ushed
reading me s s age 3 o f 4 not f l ushed
reading me s s age 4 o f 4 not f lushed
You have new ma i l in /var/ spoo l /ma i l / novakj

Program procma i l je obecn uren k loklnmu zpracovn poty. Bv spou


tn jednorzov jinmi programy, napklad programem f e t chma i l, nebo je spou
tn automaticky ze souboru / forward. Pi sputn programu je nejprve naten
- .

konfiguran soubor / procma i 1 rc . V nm si uivatel me nakonfigurovat pra


- .

vidla. Pravidla jsou pouvna pi zpracovn poty. Konfiguran soubor je mon


pedat i jako argument. Program procma i l me bt sputn pmo loklnm po
tovnm serverem. Nkter potovn servery jsou nakonfigurovny tak, e najdou-li
soubor / . procma i l rc, pak s kadm pchozm dopisem automaticky spoutj
-

procma i l .
Pravidla se v konfiguranm souboru dl do dvou skupin. Jednak j e mon
nastavovat vnitn promnn programu urujc chovn dalho zpracovvn. Dru
hou skupinou jsou pravidla urujc lokln schrnku pro doruen dopis. Schr
nek me bt definovno vce, dopisy lze do nich tdit pomoc regulrnch vraz.
Pro detaily a ukzky konfiguranch soubor viz manulov strnky procma i l rc
a procma i 1 ex. Pro ukzku je uveden jednoduch pklad.
7.4. Elektronick pota a Network News 203

$ cat - I . procma i l rc
MAI LD I R = $ HOME /ma i l
:O:
* " From . * root
od- korenu

Jestlie bude program sputn s argumentem procma i l - d novakj , potom


z pchoz schrnky uivatele novakj vyfiltruje vechny dopisy zaslan uivatelem
root a ulo je do lokln schrnky - /ma i l / od - korenu. Konfiguran monosti
programu jsou opravdu velk, tene tmto odkazuji na jeho manulov strnky.

ifrovn v elektronick pot


Pi zasln dat elektronickou potou je poteba mt na pamti jednu duleitou
skutenost. Veker komunikace je oteven a potovn servery mohou s dopisem
udlat tm cokoliv. V ppad zasln citlivch dat je vhodn zaslanou potu
ifrovat. Jednm z de facto standardu ifrovan poty je multiplatformn program PGP.
V rmci projektu GNU se vyvj voln iiteln kompatibiln program GPG. Program
navc pidv nov monosti. Zkladem soudobch kryptografickch nstroju je
kdovn zaloen na metod vefejnho kle. Hlavn mylenkou kdovn s veejnm
klem je nemonost pout t kl zrove k zakdovn a dekdovn zprvy. Je
-li veejn kl dostaten siln, soudobmi vpoetnmi technikami nen mon jej
v rozumnm ase "zlomit" a na jeho zklad vytvoit kl privtn.
Pi pouit programu gpg je nejprve nutn vygenerovat pr klu. Jeden z klu
je privtni, ten je ve vlastnictv uivatele a slou k dekdovn zprvy. Veejn kl
mue bt voln poskytnut a slou k zakdovn zprvy. Kle lze vygenerovat po
uitm argumentu - - ge n - key. Uivatel je programem gpg postupn dotzn na
typ kl, velikost kle, dobu vypreni kli, jmno, adresu a heslo. Heslo pln funkci
dodaten ochrany privtnho kle. Primrn ochranou privtnho kle je ale jeho
absolutn utajen. Vygenerovan kle jsou umstny v adresi - I gnupg. Informace
.

o dostupnch klch lze zobrazit argumentem - - l i s t - keys . Pedpokldejme, e


uivatel novakj si chce vypsat seznam dostupnch klu.

$ gpg - - l i s t - keys
/ home / s tudent / inf 9 7 / novakj / . gnupg /pubring . gpg

pub 1 0 2 4 D/ 7 7 9 F 8 C O S 2 0 0 1 - 0 7 - 2 4 Jan Novak < novakj @ne znam . c z >


sub 2 0 4 8 g / E 1A9 9 B F 3 2 0 0 1 - 0 7 - 2 4

Prvn ze zobrazench klu je uren pro kdovni zprv, druh je uren k oven
jejich podpisu. Digitln podpis slou k oven totonosti tvurce souboru. Po vy
tvoen klu je vhodn poskytnout veejn kl ostatnm uivatelum. Veejn kl
lze poskytnout buto pomoc veejnch serveru obsahujcch databze klu, nebo
jinm zpusobem, teba prostm zaslnm potou. Zde ale hroz opt nkolik nebez
pe, zaslan kl mue "cestou nkdo zmnit". Pi transportu veejnho kle je
nutn provst nejprve jeho export. K tomu lze pout napklad nsledujc pkaz.
204 Kapitola 7. Sov prostfed

$ gpg - - armor - - output - / data/kl i c . txt - - export ' Jan Novak '
$ cat - / data/kl ic . txt
- - - - - BEGIN PGP PUB L I C KEY BLOCK- - - -
Vers i on : GnuPG vl . 0 . 6 ( GNU/ L i nux )
Comment : For info s e e http : / /www . gnupg . org

mQGiBDt dkQ4 RBADFeKsqHMmVS f 3 0Tdf + F +wTrqn7 1 zW/DZ z K/ i /pcespVn


. . a tak dle .
. . .

BWh6AJ 9psV/QRCtq 9 j F f f aU3 CaKln4xrfwCdHMTxHeXavl a f i k I 2 swkbQc


=VvDy
- - - - - END PGP PUBL I C KEY BLOCK- - - - -

Za argumentem - - export je uvedeno jmno kle. Argument - - armor zpsob


export do textovho tvaru vhodnho napklad k pipojen do dopisu, jedn se o k
dovn ba s e 6 4 . Bez pouit argumentu by byl kl exportovn ve sv binrn podob.
Pro zaazen veejnho kle do databze slou argument - import. V nsledujcm
-

pkladu uivatel duve r i vy importoval kli.


$ gpg - - import - / data/pricho z i - kl i c . txt
gpg : key 7 7 9 F 8 C 0 5 : pub l i c key imported
gpg : / home / duve rivy/ . gnupg / t ru s t db . gpg : t rustdb created
gpg : Tot a l number proc e s sed : 1
gpg : imported : 1

Nyn me uivatel duve ri vy zakdovat libovoln data pomoc veejnho kle


uivatele novakj . Pro zakdovn dat lze pout argument - - enc ryp t . Krom nj
je nutn specifikovat kl pomoc argumentu - - re c ipi ent <JklD>. Nen-li speci
fikovn vstupn soubor argumentem - - output, je vytvoen nov soubor se za
konenm a s c nebo gpg. Ppona a s c je pouita v ppad pouit argumentu
. . .

- - armor. Viz pklad pouit.


$ gpg - - always - trus t - - armor - - encryp t \
> - - recipient ' Jan Novak ' supertaj ne . dat

V pkladu byl navc pouit argument - - a l ways - t rust, kter potlauje varovn
hlen ohledn autenticity veejnho kle. Pokud uivatel pouv nkter veejn
validan mechanismus, neml by tento argument vbec pouvat. V zaifrovanm
tvaru lze data penst nechrnnou st s vrazn vy mrou bezpenosti 18. Uivatel
novakj me data rozifrovat pomoc argumentu - - dec ryp t . Pokud je privtn kl
chrnn heslem, uivatel jej mus zadat.
$ gpg - - output supertaj ne . dat - - decryp t supertaj ne . dat . asc
You need a pas sphra s e to unlock the s e c ret key for
user : " Jan Novak < novakj @ne znam . c z > "
2 0 4 8 - b i t ELG - E key , I D E 1A 9 9 B F 3 , created 2 0 0 1 - 0 7 - 2 4
Ent er pas sphra s e : . . . zde uivatel vlo heslo . . .
1 8 plnou stovou bezpenost si lze jen velmi tko pedstavit. Samotn software je vytven lov
kem - tvorem chybujcm. Nelze tedy vylouit ppadn chyby v kryptografickch programech ani jejich
zmrn naruen. Rovn vyvstvaj jaksi otzky dvry: "Je protjek skuten tm, za kterho jej
povauji ? "
7.4. Elektronick pota a Network News 205

Nen-li pouit argument - - output, vsledn data jsou vypsna na standardn


vstup. Pi vytven elektronickho podpisu se postupuje analogicky. Podpis je vy
tvoen privtnm klem a ovit jej lze veejnm klem - data mohou bt podepsna
pouze jednm lovkem, ale pravost podpisu me ovit libovoln vlastnk veej
nho kle. Pokud je poteba podepsat neifrovan textov data, lze pout argument
- - c l ears i gn. K oven podpisu slou - - ve r i fy. Nsledujc pklad ukazuje
pouit obou argument.

$ gpg - - c l ears ign supertaj ne . dat


. . . n a jinm potai . . .
$ gpg - - always - trus t - -veri fy / tmp/ supertaj ne . dat . asc
gpg : S i gnature ma de Tue Nov 7 2 : 4 5 : 1 3 2 0 0 1 CET , key I D 7 7 9 F 8 C 0 5
gpg : Good s i gnature f rom " Jan Novak < novakj @ne znam . c z > "

Pokud j e poteba vytvoit digitln podpis v nezvislm souboru, lze vyut ar


gument - - de t a ch - s i gn. Argument - - s i gn slou tak k podpisovn, pouv
se hlavn v souinnosti s argumentem - - encryp t . Tm lze doshnout zakdovn
a zrove podepsn dat.

Elektronick konference
Jednou z aplikac elektronick poty ke hromadnmu rozesln dopis jsou dis
kusn listy. Jedn se o druh elektronickch konferenc, sdruujcch lidi zajmajc se o ur
it problematiky. Kad diskusn list m svou "hromadnou adresu". Je-li na tuto
adresu zasln dopis, je zpracovn pslunm programem, kter provede rozesln
dopisu vem lenm v konferenci.
Charakterem zasln dopis se diskusn listy dl na dv skupiny moderovan -

a nemoderovan. V nemoderovanch diskusnch listech je rozesln pspvk ui


vatelm zcela automatick. V moderovanch listech je pspvek nejprve zasln
modertorovi, ten po jeho peten rozhodne, zdali bude pspvek rozesln dle. Mo
derovan diskusn listy maj nespornou vhodu v tom, e neobsahuj nedouc
pspvky. Na druhou stranu odezva z konference nen zpravidla tak rychl. Pro
voz konferenc obstarvaj speciln servery list servery. Jejich kolem je pijmat
-

poadavky na registraci do konference a rozeslat pspvky.


Konference mohou bt buto uzavfen, nebo otevfen. Do uzavench konferenc
se uivatel nemohou pmo pihlsit nebo odhlsit. Jedn se napklad o konference
pro firemn zamstnance. Do otevench diskusnch list se lze pihlsit zaslnm
poadavku na jeho list server. V tuto chvli je dobr uvdomit si, e poadavek mus
bt zasln na list server, nikoliv do konference. Jeden list server zpravidla obstarv
nkolik konferenc a jeho kolem je starat se mimo jin o jejich administraci. Kdyby
byl poadavek na pihlen zasln do konference, msto pihlen by se poadavek
zaslal vem astnkm, co by vedlo pouze k jejich rozarovn.
Proces pihlen je zvisl na softwaru, kter obstarv diskusn list. List server
komunikuje s uivatelem potou, uivatel sv poadavky formuluje pkazem zasla
nm v dopise. Pkazy jsou zaslny v dopisech pmo na list server. Tyto dopisy maj
206 Kapitola 7. Sov prosted

obvykle przdn subjekt a ve svm tle obsahuj pouze pkazy pro list server. Do dis
kusnho listu se lze ve vtin ppad pihlsit pkazem sub s c ribe. Mezi dal
zkladn pkazy pat he lp a l i s t s . Na pkaz he lp odpov list server dopisem,
v nm je uivateli popsn zpsob pihlen a odhlen z konference. Pokud ko
munikujete s neznmm list serverem, je dobr nejprve pout pkaz he lp a pest
si zkladn informace. Na pkaz l i s t s list server odpov seznamem dostupnch
konferenc a jejich strunm popisem. Do jednoho dopisu je mon napsat i nkolik
pkaz, kad mus bt uveden na jednom dku. List server m zpravidla adresu
tvaru l i s t s e rv@<l domna l>. Napklad pkazem

$ cat EOF I mut t - s " l i s tserv@muni . c z


> help

> lists
> EOF

uivatel zale na server muni . cz poadavek na informace a seznam dostupnch


diskusnch list. List server na poadavek odpov zaslnm dvou dopis. Bli po
pis provozu konferenc je k nalezen buto vdy v piloench informacch, nebo
prostednictvm WWW.

Network News
Network News se v mnohm podobaj diskusnm listm. Technologicky se ale
jedn o zcela odlin zpsob een. Tematicky se Network News dl do skupin,
jednotliv skupiny mohou mt podskupiny. Do listovch a nkterch nelistovch
podskupin lze zaslat pspvky a rovn je st. Pkladem jmna diskusn sku
piny Network News je teba e s . comp . l inux . debi an. Jedn se o eskou diskusn
skupinu vnujc se potam, konkrtn operanmu systmu Linux a distribuci
Debian.
Zsadn rozdl mezi Network News a potovnmi diskusnmi listy je ve zpsobu
rozesln a ten zprv. Jednotliv zprvy nejsou rozeslny uivatelm, ale vzjemn
si je vymuj servery. Kad server shromauje urit skupiny zprv. Zprvy ze
zvolench skupin na serveru nezstvaj trvale, star zprvy jsou periodicky mazny.
Uivatel pistupuje k News serveru specilnmi klientskmi programy. Pi ten
pspvk se uivatel nejprve mus napojit na konkrtn server a prostednictvm nj
me st pspvky skupin, kter server zrcadl. Pspvek zaslan serveru je dle
en pomoc protokolu NNTP Network News Transfer Protocol.
-

Pspvky Network News lze st a zaslat z rznch klientskch program. Mezi


nejrozenj News klienty pat programy t rn a nn. Prohlee News jsou integro
vny i v jinch programech a softwarovch balcch. Napklad pro textov editor
GNU Emacs existuje velmi kvalitn News klient Gnus. Rovn v populrnm potov
nm klientu p i ne je integrovn i klient pro Network News. V neposledn ad jsou
News klienti k dispozici v tm kadm WWW prohlei.
Pi zasln pspvk do diskusnch list a Network News by kad uivatel ml
mt neustle na mysli, e jeho pspvek me st i nkolik tisc lid. Ml by pokud
7.5. Sluby vzdlenho pfihlen a pfenosu dat 207

mono smovat k tmatm konference, neml by obsahovat hanliv, urliv nebo


jinak citov zabarven pase. Nkter diskusn listy ve svch pravidlech provozu
rovn zakazuj pouvn pli velkch signatur nebo zahrnovn celch pvodnch
dopis do odpovd. Ped pihlenm do konference a zaslnm pspvk je vdy
vhodn pozorn si pest pravidla jejho provozu.

7.5. Slub y vzdlenho pihlen a penosu dat


Ji od potk ARPANETu bylo jednou ze zkladnch slueb vzdlen pfihlen.
Pomoc vzdlenho pihlen bylo mon vyuvat potencil tehdejch superpo
ta, kter se soustedily hlavn na univerzitch a v armdnch vzkumnch ste
discch. Zkladn princip vzdlenho pihlaovn ji byl popsn v kapitole 2.1.
S umonnm vzdlenho pstupu je tsn spjat i problm penosu dat. M-li ui
vatel monost pracovat vzdlen, ml by mt i monost penet data z loklnho
systmu na vzdlen a obrcen. Napklad ped zahjenm vpotu je nejprve po
teba na clov systm penst vstupn data, po dokonen vpotu jsou vstupn
data penesena zpt a obvykle jsou dodaten zpracovvna na loklnch potach.

Vzdlen pihlaovn
Dnes ji klasickou slubou vzdlenho pihlen je Telnet. Nejedn se pouze
o jeden program, ale o systm komunikujc metodou klienti server. Klientsk pro
gram t e lnet slou k navzn spojen se vzdlenm hostitelskm systmem. Aby
bylo mon pihlsit se k potai vzdlen, mus na nm bet speciln daemon
t e lnetd. Na vtin systm daemon neb trvale, ale je na pchoz dost sputn
superdaemonem inetd zajitujcm spoutn server pro nkter sluby. lohou
daemona t e lnetd je zprostedkovat kontakt s pkazovm interpretem. Zjednodu
en si to lze pedstavit tak, e daemon t e l ne t d po poten domluv s klientem,
jej soust je napklad oven hesla, spust uivatelsk shell a d jeho vstup a v
stup. Vstup shellu je pedvn podle instrukc pichzejcch od uivatele, vstup je
pedvn zpt uivateli pomoc potaov st.
Klient se se serverem spoj pomoc programu t e l ne t . Pi jeho startu je poteba
zadat jeden argument - IP adresu nebo symbolick jmno potae, na kter se chce
uivatel pipojit. Dalm nepovinnm argumentem je slo portu, standardn je da
emon t e lnetd umstn na portu 23. Po kontaktovn potae je uivatel vyzvn
k pihlen.

$ telnet alpha . inf . upol . c z


Trying 1 5 8 . 1 9 4 . 8 0 . 2 0 . . .
Connec t e d t o a lpha . inf . upol . c z .
E s c ape charac t e r i s , A J ' .

D i g i t a l Un ix ( a lpha . inf . upol . c z ) ( t typ 8 )

l ogin :
208 Kapitola 7. Sov prosted

V tomto okamiku se ji prce nim neli od prce na loklnm potai. Po ukon


en shellu se provede odpojen terminlu a program t e lnet ukon svoji innost.
Je-li program t e lnet voln bez argument, spust se v pkazovm reimu a pijm
pkazy na vzdlen pipojen. V pkazovm reimu lze nastavit nkter parametry
chovn programu, napklad znakov nebo dkov reim komunikace. dkov re
im komunikace me bt vhodnj pi komunikaci pes pomalou linku, na druhou
stranu v nm s nejvt pravdpodobnost nebudou dobe fungovat nkter aplikace,
jeliko nebudou schopny zobrazovat svj vstup. Jedn se pedevm o interaktivn
programy. Jednotliv reimy komunikace lze zapnout pkazem mode <J reim r>, kde
<J reim r> je chara c t e r nebo l ine. Ke spojen se vzdlenm systmem slou pkaz
open <J hostitel r> <Jport r>, kde <J hostitel r> je IP adresa nebo symbolick jmno hostitele
a <Jport r> je nepovinn specifikace portu. Pi navzn spojen je uivateli vypsna
nikov klvesa escape character, zpravidla se jedn o " A ] " .
-

E s cape chara c t e r i s , A J ' .

Znak " A " v tto notaci pedstavuje klvesu 1 CTRL I. Po stisku C - ] je uivatel pe
pnut zpt do pkazovho reimu. Zde me zmnit nastaven komunikace a opt
se pepnout na vzdlen systm. Mezi dal pouvan pkazy pat c l ose, jen
ukon spojen se vzdlenm systmem, a qui t ukonujc pkazov reim celho
programu. Do pkazovho reimu je mon vejt, i kdy je program t e lnet sputn
s argumenty. Pouit vnitnch pkaz programu t e lnet demonstruje pklad.
$ telnet
t e l ne t > open hos t i tel . nekde . c z
. . . navzni spojeni . . .
. . . perueni nikovou klvesou
t e l ne t > c l o s e
t e l ne t > qui t

Program t e lnet m proti svm konkurentm jednu velkou vhodu, lze pomoc
nj pistupovat i k jinm operanm systmm, nebo dokonce i jinm slubm.
Platformov nezvislost z programu in dobr nstroj v ppadech, kdy ostatn
klientsk programy selhvaj teba pi sten havrii systmu. Napklad pkazem
$ telnet www . debian . org 1 3
Trying 2 1 6 . 1 3 6 . 1 7 1 . 1 9 5 . . .
Conne c t e d to www . debian . org .
E s c ape chara c t e r i s , A J ' .
Sun Sep 1 6 1 2 : 2 3 : 4 8 2 0 0 1
Conne c t i on c l osed by fore i gn hos t .

se uivatel spoj se slubou OayTime na potai www . deb i an . org. Tato sluba
ek spojen na portu 13. Po spojen je uivateli zobrazen aktuln as na serveru a spo
jen je ukoneno. Obdobnm zpsobem je mon komunikovat napklad i s WWW
serverem. Vyaduje to ovem znalost protokolu HTTP. Akoliv tento zpsob pro
hlen WWW nen pli ast, v nkterch kritickch situacch me bt jedin
mon.
Penos dat pomoc FTP
FTP - File Transfer Protocol je slubou umoujc penet data mezi potai.
Penosu dat se opt zastuj dv strany - FTP server a klient pouvajc speciln
klientsk program. Pi komunikaci je nejprve vydna uivatelsk autentizace pro
stednictvm jmna a hesla. FTP servery se dl na anonymn a neveejn. Anonymn
servery jsou ureny k uloen dat, kter jsou uivatelm veejn k dispozici. Uiva
tel jsou oprvnni provst download - penos dat ze vzdlenho serveru na lokln
pota. V drtiv vtin je vak zakzn upload - penos dat z loklnho potae na
vzdlen systm. Pstup k anonymnm serverm nen a na vjimky omezen. Pro
pihlen na anonymn server se pouv zpravidla uivatelsk et anonymous,
heslem je potovn adresa pihlaovanho uivatele. Heslo me bt v podstat libo
voln, nkter servery ale kontroluj, zdali obsahuje vskyty znak ,,@ " a " . ". Pokud
tomu tak nen, spojen je odmtnuto.
Neveejn FTP servery slou k penosu uivatelskch dat. V tomto ppad je
nutn mt na vzdlenm potai zzen uivatelsk et a autentizovat se svm
vlastnm uivatelskm jmnem a heslem. FTP server lze vyut k penosu dat mezi
rznmi operanmi systmy, svoje implementace FTP server maj napklad i sys
tmy MS Windows. Pro manipulaci se vzdlenm souborovm systmem existuje
nkolik zkladnch pkaz, kter jsou shrnuty v nsledujc tabulce.

pkaz vznam
cd zmna pracovnho adrese na vzdlenm potai
get download jednoho souboru
ha sh po kadm penesenm bloku je zobrazen znak ,, # "
he lp npovda
l ed zmna pracovnho adrese na loklnm potai
ls vpis soubor na vzdlenm potai
mge t download vce soubor
mput upload vce soubor
pa s s ive pechod do pasivnho reimu, viz dal paragraf
prompt zapnut reimu "bez ptan"
put upload jednoho souboru
pwd vype pracovn adres na vzdlenm potai

Na zatku prce se uivatel nejprve mus pihlsit na server. Zkladn klient


sk program f t p pracuje podobn jako klient t e l ne t . M vlastn pkazov reim
slouc ke spojen se vzdlenm systmem a prci se soubory. Pkaz me bt vo
ln buto s argumentem f t p <J host c>, kde <J host c> je hostitelsk pota, nebo bez
argumentu. Je-li voln bez argumentu, je poteba navzat spojen vnitnm pkazem
open <J hostc>.

$ f tp alpha . inf . upol . c z


Conne c t e d to a lpha . inf . upol . c z .
Name ( a lpha . inf . upol . c z : novakj ) : anonymous
210 Kapitola 7 . Sov prostfed

3 3 1 Gue s t login ok , send your e - ma i l addre s s as pas sword .


Pas sword : . zde uivatel vlo adresu . . .
. .

2 3 0 Gue s t l ogin ok , aeee s s re s t r i e t i ons apply .


Remote sys t em type i s Unix .
Us ing b i nary mode to t rans f e r f i l e s .
ftp>

V pedchzejcm pkladu bhem pihlen f tp klient uivateli automaticky


nabdl pihlen pod jho vlastnm uivatelskm jmnem. Uivatel vak zadal jmno
anonymous . Po pihlen systm konstatoval, e pro penos je pouvn binrn md.
Data lze penet ve dvou zkladnch reimech binrnm a textovm. Textov penos
-

se hod pouze pro penos soubor obsahujcch sedmibitov znaky, lze jm napklad
penet soubory obsahujc elektronickou potu. Horn bit je pi penosu vynulovn.
Mezi transportnmi reimy se lze pepnat pkazy b i nary a t ext .
Po spnm phlen k FTP serveru me uivatel pomoc vnitnch pkaz
FTP penet data. Obecn lze ct, e pkazy s prefixem ,, 1 " maj lokln charakter,
pkazy bez prefixu ovlivuj hostitelsk pota. Pkazy put, mput a get, mge t
s e o d sebe li monost provst upload / download vce soubor. Pkazm zana
jcm "m" je mon jako argument pedat nepln jmno souboru, kter je na stran
hostitele expandovno. Zde je poteba vnovat pozornost operanmu systmu na
hostitelskm potai. Pokud se nejedn o Unix, me mt nepln jmno ponkud
neoekvan vznam. Pi hromadnm penosu soubor je uivatel pro kad soubor
zvl tzn, zdali si jej peje penst. Pkazem prompt se toto chovn potlauje
a bez ptan jsou peneny vechny soubory. Penos soubor demonstruje pklad.
$ f tp a1pha . inf . upo1 . c z
Conne e t e d to alpha . inf . upol . e z .
Name ( a lpha . inf . upol . e z : novakj ) : novakj
Pas sword : . zde uivatel vlo heslo . . .
. .

Remote sys t em type i s Unix .


Us ing b i nary mode t o t rans f e r f i l e s .
f t p > cd data/ zdroj aky
f t p > l s * . scm
- rw - r - - r - - 1 novakj s tudent 62 Jul I I 1 2 : 3 2 f 1 . s em
- rw - r - - r - - 1 novakj s tudent 7 1 Jul I I 1 2 : 3 6 f 2 . s em
f t p > promp t
f t p > mge t * . scm
Opening B I NARY mode dat a eonne e t i on for f 1 . s em ( 6 2 byt e s ) .
Trans f e r eomp l e t e . 6 2 byt e s reee ived in 0 . 0 2 s e e s ( 3 . 6 kB / s )
Opening B I NARY mode dat a eonne e t i on for f 2 . s em ( 7 1 byt e s ) .
Tran s f e r eomp l e t e . 7 1 byt e s reee ived in 0 . 0 2 s e e s ( 4 . 2 kB / s )
f t p > bye

V ukzce uivatel provedl download penesen soubor ze vzdlenho potae


-

na lokln, upload lze provst analogicky, pouze je pouit pkaz mput . Pokud by
uivatel del dobu nezadal dn pkaz, vzdlen server by s nm ukonil spojen.
V takovm ppad je poteba znovu se k serveru pihlsit pkazem open. Krom
penosu soubor je mon na vzdlenm potai mazat soubory a adrese pomoc
pkaz de l e t e a rm, pro detaily viz manulovou strnku programu nebo vestavn
pkaz he lp.
7.5. Sluby vzdlenho pihlen a penosu dat 211

Pihlaovn na servery lze sten automatizovat. V konfiguranm souboru


- / . ne t r c lze zapsat pravidla pro automatick pihlaovn na FTP servery. Tento
konfiguran soubor by v dnm ppad neml bt veejn iteln. Obecn se
doporuuje mt v souboru nanejv jeden zznam, a to zznam automatickho pi
hlaovn na anonymn FTP servery. Pi pidvn jakchkoliv jinch zznam se
uivatel vystavuje nebezpe - mus do souboru zapsat heslo v neifrovanm tvaru.
Automatick pihlaovn na anonymn servery lze zajistit napklad nastavenm

$ cat - / . netrc
de f au l t l og i n anonymous pas sword novakj @phoenix . inf . upol . c z

Krom standardnho klienta f t p lze pout i vysplej programy umoujc


uivateli vt monosti pi manipulaci se soubory nebo vt stupe interakce. Mezi
nejznmj pat c f tp a l f tp.

Aktivn a pasivn FTP


Sluba FTP me bet v aktivnm nebo v pasivnm reimu. V pedchozm textu
jsme, ani bychom to zdrazovali, pouvali FTP v aktivnm reimu. Aktivn FTP
lze bez problmu pouvat v oteven sti, komplikace ale nastvaj v okamiku,
kdy se klient vyuvajc FTP nalz za datagramovou hradbou. Typickm ppadem
jsou teba potae umstn v privtnch stch. Problm pouit aktivnho FTP je
pedevm v zahjen komunikace obou stran. Pojme si problm rozebrat o nco
podrobnji.
Sluba FTP pouv pi komunikaci dva TCP porty. Prvn z nich slou k zasln
FTP pkaz, druh slou k penen samotnch dat. Komunikaci s FTP serverem
zahajuje vdy klient. Klient si ped zahjenm komunikace oteve dva porty, jednm
z nich se spoj se serverem a zale mu poadavek na spojen. Server informaci pebere
a mimo jin v n nalezne slo druhho portu, kter si klient otevel. Server zale
klientovi potvrzovac zprvu a pokus se o spojen na jeho datov port. A zde je prv
ono skal. Pokud se klient nachz za datagramovou hradbou, serveru se obvykle
nepoda navzat spojen s klientem, kter le ve vnitn sti, protoe pota nebo
zazen provdjc filtraci pchozch datagram "nevpust poadavek o spojen"
do vnitn st. Schma nespnho navzn spojen je na nsledujcm obrzku.

dost o spojen
............. .. . .....
"'. j---------------------------------

__
potvrzen T'" privtn
= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. potaov s
-- ,

.......
. ....
.
....................
... .
. 'l!t hostllel
-. "
nespBn pokus :
FTP server ,_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ . .
o spojen

U pasivnho FTP probh navzn spojen jinak. Server se nesna spojit se s por
tem klientskho potae, dky tomu me bt FTP pouvno i potai v privtnch
stch. Klient nejprve opt oteve dva porty, spoj se s FTP serverem, ale msto sla
212 Kapitola 7 . Siov prostfedi

svho portu mu oznm, e d o spojen v pasivnm reimu. FTP server tento poa
davek zaregistruje a vytvo nov datov port, jeho slo pole zpt klientovi. Klient
se potom spoj s datovm portem serveru. Hlavn rozdl pi zahjen komunikace
spov prv v tom, e server se nesna napojit na klienta, msto toho vytv nov
datov port a jeho slo zasl klientovi.
Z uivatelskho hlediska je prce s pasivnm FTP podobn jako prce s aktiv
nm FTP. Klient vak mus zadat o spojen v pasivnm reimu. K tomuto elu
slou napklad vnitn pkaz pas s ive, kterm jsou vybaveni tm vichni FTP
klienti. U nkterch FTP klient je zapnut pasivnho reimu eeno dodatenm ar
gumentem, kter je poteba uvst pi sputn programu. Nsledujc pklad ukazuje
pouit FTP v pasivnm reimu.

$ f tp temne . mi s to . c z
Conne e t e d to t emne . mi s t o . e z .
Name ( t emne . mi s t o . e z : novakj ) : novakj
Pas sword : . . .
zde uivatel vlo heslo
Remo t e sys t em type i s Unix .
Us ing b i nary mode to t rans f e r f i l e s .
f t p > pass ive
P a s s ive mode on .
f t p > l s data/ z droj aky/ * . scm
- rw - r - - r - - 1 novakj s t udent 62 Ju l I I 1 2 : 3 2 f 1 . s em
- rw - r - - r - - 1 novakj s t udent 7 1 Ju l I I 1 2 : 3 6 f 2 . s em
f t p > . . dle uivatel pracuje klasickm zpsobem . . .
.

Pkaz pas s ive byl v FTP klientovi zadn a po pihlen. V tom nen nic
patologickho. Ped uvedenm prvnho pkazu pro penos dat jet nen provedeno
spojen dvou datovch port. Navzn datovch port je v pedchozm pklad
provedeno a po vloen pkazu l s .

Sluba Secure Shell


Hlavn nevhodou slueb Telnet a FTP je jejich neifrovan charakter. Hesla jsou
mezi klientem a serverem zaslna nezaifrovan, navc v jednom datagramu. Na
sv cest mohou bt datagramy zachyceny tet stranou a informace o uivatelskm
heslu me bt zneuita. Rovn samotn data jsou penena v neifrovan po
dob. Tento fakt pli nevadil v potcch ARPANETu, s roziovnm st se zaal
nekontrolovateln zvtovat i poet ,,(h)rznch uivatel". To vedlo k vytvoen
ifrovanch slueb vzdlenho pstupu a penosu dat.
V Unixu je v souasnosti bn dostupn sluba SSH Secure Shell. Sluba je
-

opt rozdlena na klientskou a serverovou st. Secure Shell se neomezuje pouze na


vzdlen pihlaovn, jak by se z jeho nzvu dalo usoudit. Je to komplexn sluba
umoujc rovn penet data a obecn zajistit komunikaci pes ifrovan ka
nl. Ke vzdlenmu pihlen se pouv klient s sh. Program s s h nem na rozdl
od programu t e lnet pkazov reim. Vechny pkazy je teba zadat jako argu
menty. Nejastji se pouv argument ve tvaru potovn adresy urujc hostitelsk
pota a uivatelsk jmno .
7.5. Sluby vzdlenho pihlen a penosu dat 213

$ s sh novakj @phoenix . inf . upol . c z


Warning : Pe rmanent ly added ' phoenix ' t o t h e l i s t o f known hos t s .
novakj @phoenix . inf . upo l . c z ' s pas sword : . . zde uivatel vloi heslo
. . . .

Last l ogin : Wed Jul 2 5 1 5 : 2 1 : 1 6 2 0 0 1 f rom t i t an on p t s / 2


L i nux phoenix 2 . 4 . 7 # 3 SMP Mon Jul 2 3 1 2 : 1 5 : 2 7 CEST 2 0 0 1 i 6 8 6
$

Pihlen do systmu probh ponkud jinm zpsobem ne u programu


t e lne t . Pomineme-li technologii, na prvn pohled je zejm, e s sh nevyuv
vzdlen pihlaovac dialog, ale pihlaovac nabdka je v reii klienta. Pokud je
v clov adrese vynechno uivatelsk jmno, je msto nj dosazeno jmno loklnho
uivatele. Varovn o zpisu do souboru znmch hostitel je zobrazeno pouze pi
prvnm pihlen k serveru. Klient si v souboru - / . s sh/known_hos t s udruje
seznam znmch hostitelskch pota. Krom jejich jmen si ukld rovn otisky -
- jingerprints. Jedn se o uniktn etzce identifikujc SSH server. Pokud se otisk
potae zmn, uivatel je na tuto skutenost upozornn ji pi pihlaovn. Jedn
se o prvotn bezpenostn mechanismus.
Krom autentizace vyuvajc heslo je mon pouvat i jin mechanismy. Bn
je autentizace na zklad tajnho kle. Uivatel si nejprve mus vytvoit kl pro
gramem s s h - keygen a pot jej zaregistruje na vzdlenm potai. Pokud se chce
uivatel pihlaovat bez hesla, pouze na zklad vlastnictv kle, je poteba pi ge
nerovn kle uvst przdn heslo.
$ s s h - keygen
Gene rat ing RSA keys : . . 000 . . 000 Key generat i on comp l e t e .
Ent e r f i l e to save the key ( -novakj / . s sh/ i dent i t y ) : I ENTER I
Ent e r pas sphrase ( empty for no pas sphrase ) : I ENTER I
Ent er s ame pas sphra s e aga in : I ENTER I
Your i dent i f i cat ion has been saved in -novakj / . s sh/ i dent i t y .
Your pub l i c key has been saved in -novakj / . s sh/ i dent i ty . pub .
The key f i ngerprint i s :
1 0 2 4 5 5 : 5 e : b 3 : 8 d : . . . : 0 2 : 0 3 : e O : d 9 novakj @phoenix . inf . upol . c z

Veejn identifikan kl je uloen v souboru - / . s sh/ i dent i ty . pub. Pokud


je vygenerovn kl bez hesla, sta na konec souboru - / . s s h / authori z ed_keys
na vzdlenm potai pipojit obsah souboru -/ . s sh/ i dent i ty . pub. Veejn
identifikan kl je tvoen jednm dkem obsahujcm velk slo. V souboru
-<J uivatel r>/ . s sh/ authori z ed_keys me bt uvedeno nkolik takovch z
znam.
Pokud se potom uivatel chce pihlsit do systmu, je nejprve porovnn jeho kl
s uvedenmi polokami v souboru autorizovanch kl. Pokud se kl v nkterm
ppad shoduje, je navc ovena jeho pravost. Pokud i touto kontrolou uivatel
projde, je vputn do systmu bez dalho ovovn. Pokud nkter z kontrol sele,
uivatel je obvykle dotzn na heslo.
Pihlaovn bez nutnosti zadvat heslo m sv vhody i pi jednorzovm sputn
vzdlench procesu. Program s sh lze spustit ve tvaru s s h <J hostitel r> <Jpkaz r>, pitom
<Jpkaz r> je proveden bezprostedn po pihlen do systmu a po jeho dokonen
je spojen ukoneno. Vzdlen spoutnm procesm lze dokonce pedvat vstupn
214 Kapitola 7 . Sov prosted

data z loklnho hostitele prostednictvm roury. Pouit s sh pi jednorzovm spu


tn proces demonstruje nsledujc pklad.
$ ssh novaknekde . c z ls ' . b * '
. bash_h i s t ory . bash_l ogout . ba sh-pro f i l e . bashrc
$ echo ' Ahoj sve t e ' I s sh novak@nekde . c z sed ' s / e /x/g '
Aho j svxtx

V prvnm ppad byl spoutn program l s na potai nekde . c z , programu


byl pedn jeden argument. V ukzce bylo nepln jmno uvedeno v apostrofech,
abychom pedeli nechtn expanzi neplnho jmna na loklnm hostiteli. V dru
hm ppad byl sputn program s e d rovn s jednm argumentem. Programu
s e d byl pedn vstupn etzec "Ahoj sve t e " , kter byl programem s s h penesen
na vzdlen pota. V obou ppadech byl vstup sputnch program zobra
zen na loklnm hostiteli. Ve uvedenm zpsobem lze spoutt vzdlen procesy
i v neinteraktivnch skriptech.
Pro penos dat slou klient s cp. Program ke sv innosti potebuje aktivn SSH
server a program s cp nainstalovan na vzdlenm systmu. Program scp se pouv
obdobnm zpsobem jako program cp, pi specifikaci soubor je vak mon zadat
i vzdlenou cestu. Vzdlen cesta m tvar
<J uivatel f>@<Jhostitel f> : <J cesta f>
kde <J uivatel f> i se znakem ,,@ " je nepovinn, hostitelsk pota je od zbytku cesty
oddlen dvojtekou II : " . Za specifikac hostitele nsleduje samotn cesta, nejedn se
ale o lokln cestu, nbr o cestu na vzdlenm potai. Program s cp je mon volat
i s argumentem r pepnajcm program do rekurzivnho reimu. Pouit programu
- ,

demonstruje pklad.
$ scp phoenix : - /data/ z droj aky/ * . s cm .
$ scp souborl . txt dal s i . txt j enik@poc i tac . nekde . c z : - /data
$ scp -r dal s i j enik@poc i tac . nekde . c z : - /data

V prvnm ppad dolo ke zkoprovn vzdlench dat na lokln pota. Nebylo


specifikovno uivatelsk jmno, proto bylo pouito implicitn jmno novakj . V dru
hm ppad byly peneseny dva soubory na vzdlen pota. V posledn ukzce
dolo ke zkoprovn obsahu adrese dat a na clov pota. Pokud by koprovn
soubor trvalo dlouho, proces lze urychlit pidnm argumentu - c b l owf i sh. Tm
bude implicitn ifrovac algoritmus 3DES nahrazen rychlejm algoritmem Blow Fish.
Autentizace je pln v reii SSH. V praxi to znamen, e m-li uivatel na vzdlench
potach zazen pstup bez hesla, nebude jej potebovat ani pi koprovn sou
bor. Vyuvn s cp m krom bezpenostnch vhod i dal pednosti. Je to velmi
flexibiln nstroj, lze jej snadno pouvat v neinteraktivnch skriptech.
Pomoc s sh lze vytvet ifrovan kanly. Pi vzdlenm pihlen lze ifrovanm
kanlem smrovat libovoln port. To lze vyut k ifrovanmu penosu dat z aplikac,
kter v sob teba podporu ifrovn vbec nemaj. K pesmrovn portu slou
argument L. Problematiku demonstrujme pkladem. Pedpokldejme, e uivatel
-

chce zadat citliv data do WWW formule, ale WWW server na vzdlenm potai
7. 6. Komunikan a informan sluby 215

nepodporuje ifrovn. Natst uivatel m na tomto potai zzen et. Sta se na


pota nahlsit pkazem
$ s sh j enik@poc i tac . nekde . c z - L B O B O : poci tac . nekde . c z : B O

kter provede pesmrovn portu 80 z potae poc i t a c . nekde . c z do ifrova


nho kanlu. Na druh konec kanlu je navzn lokln port 8080. Pokud chce nyn
uivatel vyut ifrovan pstup k WWW strnkm, mus se odkazovat na adresu
http : // l oc a l ho s t : 8 0 8 0 . Strun popis sluby WWW je k nalezen v dal kapi
tole. Zde bylo elem pouze naznait zpsob penen dat po ifrovanm kanlu.
Do problematiky penen soubor spad rovn penos soubor v heterogenn
potaov sti. Jedn se zejmna o zpsob komunikace Unixu se systmy MS Win
dows. Pro unixov systmy je vyvjen balk Samba umoujc zprostedkovat dis
kov prostor a periferie MS Windows stanicm. Existuj i snahy opan. V souasnosti
je mon penet soubory pomoc slueb FTP a SSH. FTP klient je standardn soust
stovho vybaven obou operanch systm a pro MS Windows ji byly vyvinuty
i klientsk nstroje SSH. Mezi nejznmj z nich pat PuTTY a WinSCP.
Ve uveden sluby nejsou jedin, kter lze k penosu dat vyut. V poslednch
nkolika letech se rozvinulo nkolik novch slueb urench mimo jin i k penosu
a sdlen dat. Mezi n pat napklad Oirect Connect a Gnutella.

7.6. Komunikan a informan slub y


V souasnosti je potaov s vyuvna hodn ke komunikaci uivatel. Krom
elektronick poty, je m charakter dopisn komunikace, existuje ada slueb umo
ujcch pmou komunikaci dvou uivatel. Nkter z tchto slueb nejsou vzny
pouze na Unix - napklad sluba ICQ. V kapitole 2.2. byl popsn program f inger.
Jedn se o klientsk program sluby Finger, poskytujc informace o uivateli. Krom
uivatelskho jmna zobrazuje informace o poslednm asu pihlen a o poslednm
vyzvednut poty.
Pouit programu f i nge r ji bylo rozebrno, proto mu nebude vnovn podrob
nj popis. Mezi informace zobrazovan programem f i nger pat i pln. Pln je
textov soubor, zobrazovan za vpisem standardnch informac. Zpravidla je vyu
vn k oznmen dostupnosti uivatele nebo jako signatura. Pln lze mnit editac
textovho souboru / . p l an. Viz pklad.
-

$ echo ' Jsem na obede . & : - 0 ' > - / . plan


. . . na jinm potai . . .
$ finger novakj @phoenix . in f . upol . c z
[phoenix . inf . upol . c z ]
Log i n : novakj Name : Jan Novak
D i r e c t ory : / home / s tudent / i nf 9 7 / novakj She l l : Ibin/bash
On s ince Thu Jul 26 0 9 : 3 4 ( CE S T ) on pt s / l f rom t i tan
1 hour 2 0 minut e s i d l e
N o ma i l .
P I an :
Jsem na obede . & : - 0
216 Kapitola 7 . Sov prosted

Pedchoz vpis uivatele informuje o dob prodlevy na terminlu. Uivatel


novakj podle daje tm hodinu a pl nepracoval s pkazovm interpretem.
V Unixu pat mezi nejbnji pouvan sluby uren pro komunikaci dvou
uivatel sluba Talk. Jedn se opt o slubu klient/server umoujc simultnn
komunikaci dvou uivatel. Princip komunikace je jednoduch a svm zpsobem
pipomn telefonn hovor. Oba uivatel maj pi komunikaci rozdleno okno ter
minlu na dv poloviny. V jedn sti je zobrazen jejich vstup, v druh polovin je
postupn zobrazovn vstup druhho uivatele. Pi komunikaci vyuvaj ob dv
strany klientsk program t a l k. Komunikaci zahajuje vdy jedna strana pkazem
t a l k <l uivatel r>@<l hostitel r>, kde <l uivatel r> je uivatelsk jmno a <l hostitel r> je vzd
len pota, na nm bude uivatel kontaktovn. Pokud se jedn o lokln hovor,
nemus bt hostitel uveden. Po sputn poadavku na rozhovor volajc strana ek
na spojen s volanm uivatelem. Volanmu uivateli je na terminlu zobrazena
vzva k hovoru. Viz pklad.
$ talk novakj @phoenix . in f . upol . c z
. . . mezitm na jinm terminlu . . .
Me s s age f rom Talk_Daemon@phoenix at 1 0 : 1 7 . . .
t a l k : connect i on reque s t e d by mluvka@thude r . upol . c z .
t a l k : re spond w i t h : t a l k mluvka@thuder . upol . c z
Volajc strana ek, dokud volan strana "nezvedne" nebo "nevyvs" hovor.
Pokud chce volan uivatel hovor pijmout, spust rovn program t a l k s adresou
volajc strany. V tomto ppad by pouil pkaz
$ talk mluvka@thuder . upol . c z
Po navzn spojen je uivatelm zobrazen npis "Connection established". Kad
vloen znak je zasln druh stran, tm pdem se vkldan text zobrazuje prbn,
a nikoliv po dcch. Pokud chce libovoln ze stran hovor ukonit, lze tak uinit
stiskem C - c . Ukonen hovoru je vdy oznmeno druh stran npisem "Connection
dosed", do vstupnho bufferu ji pot nen mon pst.
V ppad, e uivatel nechce bt ruen pchozmi zprvami, me jejich zobra
zovn potlait. K tomuto elu slou program me sg. Lze jej zavolat s argumenty "y "
a "n " . Prvn z argument povoluje vpis zprv, druh jej potlauje. Pokud m uiva
tel potlaen vpis zprv, nelze jej kontaktovat prostednictvm sluby Talk. Volajc
stran je pi pokusu o kontakt zobrazeno hlen " Your party is refusing messages ".
Daemon t a l kd pouv pi zasln oznmen dosti o spojen uivateli lokln
zprvy. Lokln zprvy slou k zasln krtkch text v rmci jednoho potae.
Programem me sg je v podstat potlaovno prv jejich zasln. Zprvu lze poslat
programem wri t e . Pouv se ve tvaru wr i t e <l uivatel r>, vstupn zprva je tena
ze standardnho vstupu. Pouit demonstruje pklad.
$ echo ' Jdes na obed? ' I wri te novakj
wr i t e : novakj is l ogged in more t han once i wr i t ing to pt s / 3
. . . v jinm terminlu . . .

Me s s age f rom hl adovyl@phoenix on pt s / 1 at 1 2 : 3 5 . . .


Jde s na obed?
EOF
7.6. Komunikan a informan sluby 217

Pi zasln zprvy bylo vypsno hlen. Uivatel novakj pracuje s nkolika ter
minly zrove, zprva byla zaslna na terminl napojen na zazen / dev /pt s / 3 .
Pi psan zprv je vhodn pedvat vstup pomoc programu e cho. Je-li vstup zadvn
z klvesnice a po sputn programu wri t e , dochz na stran adresta k nep
jemnm prodlevm ve vpisu zprvy. Zprvy nelze zaslat, pokud m pjemce nebo
odeslatel zprvy vypnuty pkazem me sg n.

Informan sluba WWW


Za posledn roky se struktura uivatel Internetu znan zmnila. Potae jsou
ve stle vt me vyuvny uivateli neprogramtory, kte je potebuj pedevm
ke hledn informac. Se zmnami v uivatelskm spektru se zaaly mnit i samotn
informan sluby na Internetu. Ke stle pouvanm, i kdy ustupujcm informa
nm slubm pat potovn informan systmy. Ty jsou postaveny na podobnm
softwaru jako elektronick konference. Umouj uivateli zskvat informace pro
stednictvm elektronick poty. Mezi hlavn nevhody pat zejmna doba odezvy
a nzk interaktivita prce.
Jinm smrem ly systmy BBS - Bulletin Board System. Jedn se o provzan
aplikace umstn zpravidla na jednom serveru. K BBS se pistupuje pomoc sluby
Telnet. BBS obvykle integruj sluby zasln zprv a pspvk a elektronickch kon
ferenc. Mezi sluby dnes ji historick pat Gopher. Mezi hlavn pednosti Gopheru
patila hypertextov navigace. Navigace ovem byla oddlena od samotnch doku
ment. Prce s Gopherem byla velmi pehledn, uivatel nebyl ruen pebytenm
designem.
WWW - World Wide Web je v souasnosti nejvyuvanj slubou Internetu. Jedn
se o jednu z nejmladch a nejkontroverznj slueb vbec. Dky WWW byla zp
stupnna potaov st velkmu mnostv potaovch laik. Na druhou stranu
ada odbornk poukazuje fakt, e prv dky slub WWW je chod potaov
st velmi zpomalovn. Hlavn pinou jsou gigabajty leckdy zbyten penench
multimedilnch dat. Potky sluby sahaj k zatkm 90. let. V evropskm stavu
pro jadern vzkum CERN Conseil Europen paur la Recherche Nuclaire byl roku
-

1989 vytvoen jednoduch hypertextov systm. Ve svch potcch byl uren k vy


budovn informanho systmu umoujcho prezentovat data uvnit organizace.
Mylenka dokument provzanch odkazy byla natolik progresivn, e netrvalo
dlouho a WWW se rozil i mimo stav. V jnu 1994 bylo ustanoveno konsorcium
W3C - World Wide Web Consortium. Jeho kolem je dohlet na standardizaci komu
nikanch protokol a datovch formt, kter WWW vyuv.
WWW je sluba odlin od vech ostatnch. Je rovn rozdlena na klientskou
a serverovou st jako ostatn sluby. Klientsk st se nazv nejastji WWW pro
hle, serverov st se nazv WWW server . Server a klient komunikuj pomoc
protokolu HTTP Hypertext Transfer Protocol . Aplikan protokol HTTP slou k zas
-

ln dat a informac s tm spojench. Klientsk software se sm rozhoduje, jak s daty


nalo. V tom je velk rozdl proti ostatnm slubm. Nejastji jsou data tvoena
hypertextovmi dokumenty. V souasnosti existuje nkolik standard hypertexto-
218 Kapitola 7 . Sov prosted

vch dokument, mezi nejpouvanj pat HTML Hypertext Markup Language. -

Jeho nstupcem se s nejvt pravdpodobnost stane XHTML eXtensible HyperText -

Markup Language, co je datov formt zaloen na td jazyk XML eXtensible -

Markup Language. V obou ppadech se jedn o datov soubor doplnn specilnmi


znakami tagy. Znaky jsou interpretovny prohleem pi prezentaci dat.
-

Komunikace klienta se serverem je uniktn svm nestavovm charakterem. Server


si o klientech neponechv dn daje, po dokonen penosu poadovanch dat
je spojen zrueno. Pi dalm poadavku mus bt spojen opt navzno. Tento
zpsob komunikace m sv vhody i nevhody. Mezi nejmarkantnj nevhody
pat obtn eiteln autentizace klient. Zkladn komunikan schma protokolu
HTIP je velmi jednoduch. Klient pole serveru dotaz, server na nj odpovd buto
odmtnutm, nebo zaslnm dat. Zaslan data se dl na hlaviku a tlo. Hlavika pln
podobn kol jako u elektronick poty, mimo jin je v n uveden popis dat pomoc
MIME. Na rozdl od elektronick poty jsou data penena jako osmibitov.

Uniformn loktor zdroj


Prohlee WWW v sob zpravidla integruj klienty nejastji pouvanch slueb,
krom WWW je to i FTP, Telnet a podobn. Na jednom serveru ale me bet nkolik
slueb zrove. Vznik tedy pirozen poteba jednoznan od sebe sluby rozliit.
K tomuto elu slou URL Uniform Resource Locator. Jak ji nzev napovd, jedn
-

se o loktor zdroj. Zjednoduen lze ct, e pomoc URL lze popisovat umstn
jednotlivch informac v Internetu. Zmrn nen pouit pojem soubor, nkter URL
odkazuj pouze na virtuln sluby. Tyto sluby nejsou reprezentovny ani spjaty
s fyzickmi soubory. URL m tvar
<Jprotokol r> : II <J uivatel r> : <J heslo r>@<J hostitel r> : <Jport r> I <J cesta r>

st <Jprotokol r> je povinn, uruje aplikan protokol a tm pdem i typ sluby. Od


ostatn sti je protokol oddlen trojic metaznak " : I/". Argumenty <J uivatel r>,
<J heslo r> identifikuj uivatele na hostitelskm potai. Uivatelsk jmno se pouv
napklad pi specifikaci potovn adresy, heslo se prakticky nepouv. Argumenty
<J hostitel r>:<Jport r> uruj hostitelsk pota a port, na kterm sluba b, nen-li port
uveden, je uvaovn standardn port sluby podle argumentu <Jprotokol r>. Konen
argument <J cesta r> uruje absolutn cestu k souboru. Opt se ale nemus jednat o fy
zick soubor. Jmno souboru se me skldat i z dodatench argument oddlench
specilnmi metaznaky " ? " , ,, & " a ,, = " .
Pi specifikaci URL mohou bt rzn jeho sti vynechny. To zle pedevm
na povaze pouitho protokolu. Napklad v URL pro protokol t e lnet nem smysl
uvdt cestu, kdeto napklad u protokolu f tp je uveden cesty pomrn bn,
i kdy ne nutn. Prakticky nevyuvanou polokou je <J heslo r>, protoe uvdn hesla
pmo do URL nen z bezpenostnch dvod pijateln. Velmi asto bv vynechno
i slo portu, protoe vtina slueb komunikuje na pedem smluvench portech.
Jejich sla lze nalzt v souboru l e t c i s e rvi c e s .
7. 6. Komunikan a informan sluby 219

Nsledujc tabulka shrnuje nejastji pouvan protokoly a typick URL.


protokol typick tvar URL
file f i l e : 11 <J cesta r;,
f tp ftp : // <J hostitel r;, / <J cesta r;,
http http : // <J hostitel r;, / <J cesta r;,
https ht tps : ll <J hostitel r;, I <J cesta r;,
ma i l t o ma i l t o : ll <J uivatel r;,@<Jhostitel r;,
nntp nntp : ll <J skupina r;,
t e lnet t e lnet : ll <J uivatel r;,@<Jhostitel r;,

Protokol f i l e j e vyhrazen pro identifikaci soubor na loklnm souborovm systmu


potae. Napklad URL f i l e : I I l e t e / ho s t s identifikuje soubor l e t e / ho s t s .
Pokud j e pi specifikaci pouit protokol nntp, j e z a nm uvedeno jmno diskusn
skupiny, v dnm ppad nevad, e se jmno nekryje se symbolickm jmnem
potae. Nzev protokolu HTTPS oznauje protokol HTTP penen pes SSL kanl.
SSL Secure Socket Layer je speciln protokol umoujc ifrovat penen data.
-

K nejvtm vhodm pouvn URL pat pedevm jeho dostaten univer


zlnost. URL je velmi obecn, jeho dalmu pouvn a roziovn v budoucnu
nic nestoj v cest. Pokud bude v budoucnu ustanoven nov vznamn aplikan
protokol, s nejvt pravdpodobnost bude mt definovn i tvar svch URL adres.

Poznmky k vyuvn sluby WWW


Prce s WWW prohleem je vce mn intuitivn a nem ji zde smysl rozeb
rat. Mezi nejpouvanj prohlee pat v GNU I Linuxu v souasnosti programy
Galleon, Konqueror, Links a Mozilla. Velkou pozornost zasluhuje projekt Mozilla,
jen se vyvinul pvodn z prohlee Netscape uvolnnm jeho zdrojovch kd.
Mozilla je ale prakticky pln novm softwarovm dlem zaloenm na souasnch
technologich. Velmi oblben je rovn textov prohle Links. Links me bet
v terminlu, ale jeho posledn verze maj i grafick rozhran. I terminlov verze
programu se um vypodat prakticky se vemi bnmi konstrukcemi uvanmi
ve WWW strnkch - napklad i s rmci a tabulkami. Program 1 inks je navc velmi
nenron na zdroje a lze jej provozovat i na slabch potach. To je deviza, kterou
prakticky dn jin WWW prohle nedisponuje.
V nkterch ppadech vak nen vhodn pouvat ani ten nejthlej textov
prohle. Typickm ppadem je napklad download vtho mnostv dat pomoc
protokol HTTP nebo FTP. Uivateli jsou v Unixu k dispozici dkov nstroje na
rekurzivn download. Mezi nejznmj pat dnes ji klasick program wge t . Pro
gram wge t m irok konfiguran monosti. Pomoc nj lze jednodue zrcadlit cel
servery nebo provdt download iroce rozvtven hierarchie WWW strnek. Jeliko
je program wge t neinteraktivn, me bet zcela bez uivatelskho zsahu a jeho
sputn je mon pomoc programu a t naplnovat na vhodnou dobu - napklad
na dobu, kdy je mal stov provoz a tak dle. Nejastji pouvan argumenty
programu wge t shrnuje nsledujc tabulka.
220 Kapitola 7. Sov prostfed

argument vznam
- A <J seznam r> seznam povolench zakonen soubor
- R <J seznam r> seznam vyazench zakonen soubor
- 1 <J max r> maximln hloubka rekurze
-m zapne pepnae vhodn pro zrcadlen dat
- np nesestupuje do rodiovskho adrese
-r rekurzivn download

Pedchoz seznam obsahuje pouze zlomek argument. Download lze rznmi zp


soby omezovat, napklad maximln velikost uloench dat a podobn. Zjemce
odkazuji na manulovou strnku programu. Pro demonstraci je uveden pklad po
uit programu.
$ wge t - r - np -A png http : / /phoenix/proj ects

Pedchozm pkazem bude proveden download soubor zakonench png


z URL http : / /phoenix/proj e c t s . Uveden adresa bude prohledvna do
hloubky, program wge t vak nebude v hierarchii sestupovat do rodiovskch adre
s.
M-li uivatel zzen et na unixovm serveru, me na nj umstit sv uivatel
sk WWW strnky. Zveejovn uivatelskch strnek mus bt povoleno sprvcem
systmu. Uivatelsk strnky jsou zpravidla umstny v adresi - /pub l i c_html .
WWW server na podn zasl jednotliv strnky klientskm programm. Ped
samotnm odeslnm mohou bt strnky serverem dodaten zpracovvny. V ka
dm podadresi - /pub l i c_html by uivatel ml mt vytvoen indexov soubor.
Jedn se o soubor, jen je zasln klientovi v ppad, e zad URL pouze ve
tvaru adrese, a nikoliv ve tvaru konkrtnho souboru. Nzvy indexovch sou
bor se nastavuj pi konfiguraci WWW serveru, standardn se pouvaj jmna
i ndex . html nebo we l come . html . Na uivatelsk strnky se lze odkazovat po
moc URL http : // <J hostitel r> I -<J uivatel r>.
Uivatel by se ml pi vytven obsahu WWW strnek dret nkolika zsad. Vdy
se vyplat dbt na zkladn pravidla pracovn hygieny a dobrho vkusu. Strnky
hc pemrou barev tene zhy odrad.
Z hlediska bezpenosti a pstupnosti je rovn nutn dt pozor na pstu
pov prva k souborm. WWW server je zpravidla sputn pod systmovm ui
vatelem s velmi omezenmi prvy. Pokud nebude schopen st data v adresi
-<J uivatel r>/pub l i c_html, nebude je ani schopen poskytovat klientm. Uivatel
neme nic zkazit tm, kdy nastav adresi - I pub l i c _h t ml pstupov prva 71 1
a HTML souborm 644.
X Window System, jednodueji " X " nebo "Xl l ", je hodnocen jako
jeden z nejspnjch open-source projekt vech dob. Jedn se
o de facto standard grafickho rozhran operanch systm Unix
a Linux, zrove je to zatm asi jedin grafick rozhran poui
teln v heterogennm prosted, kter je tolik typick pro soudob
nron aplikace. Systm X Window je nezvisl na operanm sys
tmu a hardwaru potae, jeho sov transparentnost a podpora
velkho mnostv pracovnch stanic zpsobuje jeho vzrstajc popu-
laritu a dal en.
http : //www.x.org, Introduction: About the X Window System.

Grafick stuv rozhran

Operan systm Unix vznikl v dob, kdy se teprve zanaly prosazovat alfanume
rick terminly. Z tohoto dvodu v Unixu nebylo po dlouhou dobu krom textovho
uivatelskho rozhran k dispozici dn jin. S rozvojem pracovnch a grafickch
stanic bylo nutn aplikacm umonit grafick vstup. Standardn znakov terminl
umouje pracovat pouze s omezenou mnoinou znak, jejich tvar je pevn dn.
Mimo tyto znaky nen mon na obrazovku nic zapisovat. Pi prci s alfanumeric
km terminlem je pstup dlen obrazovky na znaky vhodn, vrazn et pamt
Grafick aplikace si ale pouze se znaky nevysta. Pi vykreslovn i tch nejjedno
duch geometrickch objekt je poteba manipulovat s obrazovkou jako s rastrovm
zafzenm na rovni jednotlivch bod.
Zaveden grafickho uivatelskho rozhran nebylo motivovno pouze pouv
nm grafickch aplikac. Na vkonnch pracovnch stanicch bylo poteba efektivn
pepnat mezi vce lohami. Alfanumerick terminl standardn neumouje provo
zovat nkolik aplikac na poped. V grafickm rozhran je tento problm odstrann
rozdlenm pracovn plochy do oken . Dalm zkladnm poadavkem na grafick roz
hran je monost pracovat s aplikacemi pomoc sovho rozhran. V praxi to znamen,
e uivatel by ml mt monost spustit aplikaci na vzdlenm hostiteli, ale pracovat
s jejm rozhranm na loklnm hostiteli.
Standardnm grafickm rozhranm operanho systmu Unix je X Window System .
X Window System zaal bt vyvjen v rmci projektu Athena na Massachusetts
Institute of Technology (MIT) v roce 1984. Na vvoji se podleli pracovnci institutu,
ale i studenti. Po roce se objevila prvn funkn verze, nesla oznaen 9. Za dal
rok byla k dispozici verze 10 penesen na nkolik pracovnch stanic. V roce 1987
byla dokonena verze 11, kter se stala de facto standardem pro grafick rozhran
systmu Unix. Na smr vvoje celho systmu m vliv pedevm X Consortium -
- skupina sdruujc vznamn vrobce pracovnch stanic a unixovch systm.
Verze 1 1 bhem let vvoje dospla k nkolika revizm, v souasnosti je za standard
povaovn systm oznaovan X11R6.
222 Kapitola 8. Grafick sov rozhran

V operanm systmu Linux je nejastji pouvanou implementac XllR6 balk


XFree86. slo 86 napovd, e pvodn lo o implementaci X Window pro potae
zaloen na platform Intel 386. Dnes je vak XFree86 peneseno na nkolik hard
warovch i softwarovch platforem a m implementovnu vkonnou infrastrukturu
pmho renderovn DRl a mnoho dalch rozen.

8.1. Architektura X
Grafick stov systm X Window System se skld ze sady uivatelskch program,
kter pirozen nejsou soust jdra Unixu. U implementace XFree86 je jedinou v
jimkou infrastruktura pmho renderovn DRl, nkter jej sti jsou z dvodu
rychlosti zahrnuty pmo v jde systmu. XFree86 vak nen na DRl ivotn zvisl
a me bet jako mnoina uivatelskch proces. Vtinu Unix je mon nain
stalovat bez grafickho rozhran. Pi tvorb X Window byl kladen maximln draz
na konzervativnost rozhran. Rozhran X Window je dostaten konzervativn - im
plementace X Window je nezvisl na konkrtn implementaci Unixu. Architektura
systmu X Window je natolik platformov nezvisl, e jej mohou implementovat
i jin operan systmy. Jin operan systmu pak mohou umonit svm uivatelm
vzdlen spoutt grafick aplikace na unixovch systmech.

X server, X klient a X protokol


X Window maj architekturu klient/server. Serverem je grafick rozhran posky
tujc zkladn sadu slueb. Mezi nejdleitj sluby pat sprva udlost, zobrazo
vn primitiv a komunikace s klientskmi programy. Server poskytujc ve uveden
sluby se nazv X server. Zjednoduen eeno, X server b na stanici, kde uivatel
pracuje s grafickm rozhranm. Pi sputn systmu X Window jde v podstat nej
prve o inicializaci X serveru, potom jsou spoutny aplikace vyuvajc jeho slueb.
K X serveru se ve nkolik dalch zkladnch pojm. Pojmem display se souhrnn
oznauje zobrazovac zafzen potae. K zobrazovacmu zazen pat obrazovky, kl
vesnice a polohovac zazen pipojen k potai. Jeden pota me bt vybaven
vce fyzickmi nebo logickmi obrazovkami. Kad rastrov vstupn zazen dis
playe se nazv obrazovka - screen. Rastrov zazen se skld z mky nedlitelnch
jednotek zobrazovn pixel .
-

Architektura X serveru j e zpravidla dvouvrstv. Ni vrstva obstarv komunikaci


s hardwarem potae. Jedn se zejmna o grafickou kartu, monitor, klvesnici a po
lohovac zazen. Kad grafick karta m zpravidla svou implementaci tto vrstvy
umoujc maximln vyut jej vkon. Nkter verze X server navc umouj
pouvat i akcelerovanch grafickch karet, podpora se tk zejmna monosti ren
derovn. Vy vrstva je ji nezvisl na grafickm hardwaru a zajiuje simultnn
pstup k displeji pro klienty, informuje klienty o vstupnch udlostech a spravuje
rastrovou vykreslovac plochu. Mezi nejdleitj koly X serveru pat sprva zdroj.
Vechny primitivy, se ktermi manipuluje X server, maj pidleno uniktn slo
a X server si o nich uchovv informace ve specilnch datovch strukturch. Tento
8. 1 . Architektura X 223

postup byl zvolen z dvodu men stov zte a tm pdem vt rychlosti odezvy.
Aplikanm zdrojm a jejich atributm je vnovna dal kapitola.
Uivatelsk programy vyuvajc slueb X serveru se nazvaj X klienti . Klienti
komunikuj s X serverem pomoc X protokolu. Jeliko je prce na rovni X proto
kolu komplikovan a nzkorovov, programy zpravidla vyuvaj knihoven im
plementujcch komplexnj nstroje pro prci s okny. Zkladn schma komunikace
X klienta s X serverem je zachyceno na nsledujcm obrzku.
udlosti, zprvy

X
server [_-_-_-_-_-_--i!iT_-_-_-_-_-] X
klient

poadavky

X klient zasl X serveru poadavky, napklad poadavek otevfen okna. X server


na splnn poadavky odpovd zaslnm identifiktoru objektu. X server rovn
klientskmu programu zasl zprvy o udlostech. Mezi udlosti pat napklad
vstup uivatele z klvesnice, pohyb myi, odkryt okna aplikace a podobn. Na
udlost klient reaguje novmi poadavky. Napklad pi odkryt okna zasl klient
poadavek o optovn vykreslen jeho sti.
Komunikace pomoc X protokolu me mt lokln nebo vzdlen charakter. Odd
len klienta od serveru pomoc X protokolu umouje spoutn vzdlench aplikac
komunikujcch s loklnm X serverem. Uivatel napklad me spustit vdeckou
aplikaci na vkonnm serveru, kter se fyzicky nachz mimo pracovit. Pokud je
tto klientsk aplikaci nastaven lokln X server, budou veker poadavky na X ser
ver zaslny na loklnho hostitele. Zprvy zaslan X protokolem lze rozdlit do t
zkladnch skupin.
Klientsk poadavky - client requests. Klienti zaslaj serveru poadavky na vytv
en a zmnu stavu jednotlivch primitiv. Primitivy obstarvaj rzn innosti.
Nkter slou pro zen geometrie oken, jin pro vykreslovn objekt a po
dobn.
Odpovdi Serveru - server replies. Pchoz poadavky se na stran serveru ad
do fronty. Pokud server zareaguje na poadavek, zpravidla zale klientovi od
pov s dodatenmi informacemi. Na nkter poadavky server odpovdi
nezasl.
Udlosti - events . Udlosti jsou zaslny serverem klientovi a zahrnuj pedev
m vstupn udlosti z klvesnice a polohovacho zazen. Specilnm typem
udlost jsou chyby . Na klientsk stran jsou chyby zpracovvny specilnmi
funkcemi. Funkce vypisuj chybov hlen na standardn chybov vstup apli
kace. Chyby vznikaj nejastji jako reakce na nesprvn uivatelsk poadavky.

Sprvce oken
Systm X Window zahrnuje pouze zkladn mechanismy komunikace mezi X ser
verem a X klientem. X server v sob napklad neobsahuje dn nstroj vhodn pro
224 Kapitola 8. Grafick sov rozhran

uivatelskou prci s okny. Tuto innost obstarv klientsk program zvan sprvce
oken - window manager. Sprvce oken je speciln program spoutn zpravidla ihned
po inicializaci X serveru, nejedn se vak o pmou soust X serveru. Pro kad dis
play me bt sputn nejv jeden sprvce oken. Sprvce oken umouje uivateli
komfortn prci s grafickm rozhranm. Jednotliv sprvci oken se od sebe li rznou
mrou uivatelskho komfortu. A na vjimky poskytuj nsledujc sluby.
Sprva geometrie oken. Pi prci s nkolika aplikacemi je nutn organizovat jejich
okna na pracovn ploe. Struktura oken v systmu X je hierarchick. Okno nej
ve v hierarchii se nazv koenov okno. Koenov okno zabr celou pracovn
plochu. Jednotliv sputn programy jsou zobrazovny v oknech, kter jsou
potomky koenovho okna. V dnm ppad nen dobr ztotoovat pojmy
okno a X klient. Okno je pouze virtuln obdlnkov oblast, kdeto X klient je
program vyuvajc jednotliv okna. Sprvce oken pidv hlavnm oknm
aplikac litu. Lita sestv zpravidla z nzvu okna a pomocnch tlatek, ob
vykle je lita umstna na vrcholu okna. Pomoc lity je mon pesouvat okna
a mnit jejich tvar. Mezi zkladn lohy sprvy oken pat i monost mnit po
ad oken. Poadm oken se ovlivuje jejich vzjemn pekrvn. Sprvce oken je
nezvisl na X klientovi vyuvajcm dan okno. V ppad, e nkter X klient
pestane reagovat na vstupy uivatele, neformln eeno "zatuhne", je stle
mon manipulovat s jeho oknem, napklad jej ikonifikovat.

Sprva virtuln plochy. Vtina sprvc oken umouje pracovat na vce pra
covnch plochch. Pi pepnut jednotlivch ploch je nutn zajistit vykreslen
prv tch oken, kter se na ploe maj zrovna nalzat. Sprvci oken zpravidla
nabzej pomocnou aplikaci - pager, jen umouje snadno pechzet mezi okny
zpravidla pomoc myi.

Uivatelsk nabdka. Soust sprvce oken bv i uivatelsk nabdka, obvykle


se jedn o jednoduch menu. Menu obsahuje pkazy pro manipulaci s okny
a umouje spoutt extern programy.

Vzhled ani chovn sprvc oken nepodlh dnmu pevnmu standardu. V sys
tmu X Window pvodn existovaly dv skupiny vyvjejc sprvce oken. Sprvce
oken Motif Window Manager patil k produktm OSF, sdruen Unix International
podporovalo vvoj rozhran OpenLook. Oba dva produkty jsou komern, Motif je
velmi podobn prosted systmu MS Windows 3.1, OpenLook je svm vzhledem
i ovldnm ponkud exotick, v souasnosti je vyuvn hlavn v systmech Solaris.
V systmu Linux existuje velk mnostv voln dostupnch sprvc oken. Mezi
nejznmj pat fvwm - Feeble Virtual Window Manager. Jeho autoi chtli p
vodn vytvoit voln dostupn klon rozhran Motif, jen by byl nenron na syst
mov zdroje. Bhem vvoje se objevily dal klony sprvce fvwm, napklad fvwm2
a fvwm9 5. Posledn jmenovan se sna napodobit uivatelsk rozhran Windows 95.
Velk mnostv sprvc oken s sebou pin velkou vhodu - uivatel si me
zvolit sprvce dle chuti a nakonfigurovat si jej pln podle svch pedstav. Na druhou
stranu, Unix dky tomu postrd jednotn uivatelsk rozhran. Tohoto faktu se dr
8.2. Sputn X serveru a lokln pihlen 225

i nsledujc text. ten zde nalezne pouze obecn popis chovn systmu, nem
smysl rozepisovat se nad tm, jak jednotliv sprvce oken ovldat. To zle pln na
uivateli a na konfiguraci jeho oblbenho sprvce oken.
Uivatelsk nejednotnosti si ped nkolika lety vimly skupiny vvoj a zaaly
pracovat na integrovanch uivatelskch rozhranch. Mezi dv hlavn integrovan uiva
telsk prosted vyvjen pro voln iiteln operan systmy pat KDE - K Desktop
Environment a jeho rival GNOME - GNU Network Object Model Environment. Oba
konkurenn projekty se sna vytvoit kompletn dokumentocentrick uivatelsk
rozhran. Nejde tedy pouze o dal sprvce oken, oba projekty disponuj i vlastnmi
knihovnami a komponentnmi modely vvoje aplikac. Na nsledujcm obrzku je
zobrazena pracovn plocha integrovanho prosted GNOME, spolu se sprvcem
oken Sawfish.

-------------------------- L-__________________________________ 'I


="":::;::!..,';::::;::;";::....1=:;::":=:::"o."..-J
: 3 i:i.!: uin
ta'PI' soo.n;es bol inQ:
tl.
: " ======;;-r;:=:jc:rta
lIwI asI<..cI fcr 8 Pi1$'Swcrd , jJst hLt ..,ttr . A d1r'tor\I .......:! ... 1n .. U l be
Vou CM teu.r
ill,::
: l
II.p:",::".:'i "'='
m,
--:O
:c--==..o...,:O
'==="---"-::::-"-'-'===::=iI(ro. .. lthin thilt dlf'9Ctcry.

17 po1ohk 17 pololi'k
DeskLop Oe$lo.lOpl

tf \Pl '" usinQ: an <)frkl,l (tN)o-elMSe,


sj.lp thls sUp, dra official
....IMS8$ 1ncll.dll
""... lU.1ICOCIK
O libeYccdIc . To __ Hy If \pu do CI" nol. ct.o. tf U. llba...codac
llbeYcodac . CVS sa.ralS .-.d CVS sn.pshols do not lrcll.dll

Sl.bd1r'tor'\I ln thII lf' layll" 10.l'OI u. 1s uptw er not .


"","","'. .. n. ff llPli DrO Jloct 1da$ Ji.tJe,\QIdK, ......,
53 S K
U. Sl.IJPOI"'tI ferNu Is l'F'EGot/Oh)()
"lUl -.::e l*'t lIt\l rd ,thIt h
PQr'lIbla cocMc col1acticn (.1ICq

U. rr.d IFEGI/Oiv)( eociIoe ol "'1..,... . Yo.I ha ..


to ,.t llbt...c:odllc direct/.lj
ft"Oll thll FT..-.t CVS __
. "

ra Nastit"e!'ll "l Ma
"" "'" README

Ej
c....4
.......
stB - l hcS
.11 0 1( 8K ..
lest.&t.est, ( l 5 : 49 ; 27 ) tOUl

IlO
celk
I t.est.
10

.:...o Q.oI Hl--. Halur . 1lp3


71" 13 15:47 lvlen_OO t . ltv l

: :: ,.., IQ Tl_ Af't.er Ti ..


12ft 13 1 2 : 52

(Jno 08 Tutu. lllp3


9.1" (,1'10 13 1 2 : 52 . ..,)

(no
1 t.est. lest. 8 . 1" 13 1 2 : 52

oo
-rw---- 1 leDL 4 . 0PI 13 1 2 : 52 I<:: OsX . lltr . g z

.n,png
1 t.&Bl
256K .:...o
lesl 5531< 13 1 2 : 52 OLAcko_e . pdf
snimek4 png
25311: no
t._t. Bn{lH)k2 . flr'fJ
246 7 to: 241' 1 K t laSl
I lesL 13 1 4 : 58

no
-nt-rw-r- lest. 13 15: 10 sn i _ k 3 . pI,\&

tl(>
I lest. lest. 2"'71( 13 15:12 onI_k4 . P<"8
-no-rw-r- 1 t.esl 247K 13 15:13 fln ( _ k5 . pne:

C : no
213K no 13 1 2 : 52 soI_k7 ,flf18

:: oo
195K 13 1 2 : 52 BII' i _ k 6 . po""

eZmCm 1 Q.J-6d1b 01 Adlo aJldl .. I1.o


Ooar'Sel08
-r_r -r- 1 lGSl lest.
53K 13 12:57

13.1 K <;'>3 1 K I\o XBzel __ 1 . 0 . 3-6 . deb


2711: 13 1 3 : 07 .c.poa

OlO MEAOI1E
1 test. tesl 131( 13 . 4 : 33

ec 26
1 lest. 8 . 2K 13 1 2 : 57

ec 26
drwxr",xr-x 3 t.est. 4 . 0IC 2002 Oaa ktop

::
= EF-: l :: 4 . 0IC 6..ob 29 t.s
4 . 0IC 2002 De&kt..o pt
2002

.... ec
4 . OK k.,,' 17
x----
2002 GHUatep

I 1 0 Torne AII. Tome l h-I.YI


d
i :: :: O OlO 1 3 pokua.t.lIt.
4 . 0IC 4 2002 11& 1 1

71 4 t.tB o <no 1 3
1 5 : 48

I'--.!-.
' .::::
".'-_- r. -
1 4 : 57 t.ell t. . t.lIt-
_ _-I :!l:,: -1 -. .
-rw-r--r- 1 test. lost.

r. : rvo ' te x L , tNt- ' ? lol


x
tes1.@t.esl ( 1 5 : 55 : 29 ) test sl

.. e!TlIC.,: README Onom!! Contral


II test@test/home/. OO p, 1 I:

8.2. Sputn X serveru a lokln pihlen


Pokud chce uivatel pracovat s X Window, mus mt k dispozici stanici s dosta
tenm grafickm vybavenm a nainstalovanm systmem X Window. Samotnou
prci s X Window lze zahjit v zsad dvojm zpsobem. V prvnm ppad se uiva
tel mus nejprve lokln pihlsit, nyn vak z pochopitelnch dvod nelze pout
hardwarov textov terminl. Uivatel se mus pihlsit pmo z textov konzoly po
tae. V konzole pak me spustit X server, kter provede inicializaci grafickho roz
hran. Druhou monost je pihlsit se do systmu pmo pomoc grafickho rozhran.
226 Kapitola 8. Grafick sov rozhran

V tomto ppad je poteba, aby byl na potai sputn speciln program - display
manager, viz dle.

Start X serveru z textov konzoly


Nejprve bude rozebrna problematika sputn X Window z textov konzoly.
Nejjednodum zpsobem je spustit X server pomoc systmovho skriptu s t artx.
Skript s tartx provd potebn inicializace a obvykle se pokou interpretovat obsah
souboru - / . xs e s s i on. V nm uivatel zpravidla specifikuje jmno sprvce oken,
jen bude sputn okamit po startu X serveru. Pokud nen soubor - / . xs e s s i on
nalezen, po startu X serveru bude sputn implicitn nastaven sprvce oken. Skript
s t artx ped startem X serveru provd vtinu potebnch nastaven. X server lze
tedy rychle spustit nsledujcm pkazem.
$ s tartx

Skript s t artx vyuv dalch program. Pojme si sputn X serveru rozebrat


podrobnji. O start X serveru se star program xini t . Jeho kolem je spustit X server
a podle zadanch argument spustit dal klientsk programy. Zkladn syntaxe
sputn programu xini t je
xini t <J klient r> - - <J server r> <Jdisplay r> <Jargumentyr>
Pi lokln prci s X Window je nutn spustit adekvtn X server a rovn zkladnho
X klienta. Tm je zpravidla sprvce oken. Kdyby nebyl X klient sputn, server by
okamit ukonil prci. Pokud nen <Jserverr> uveden, je msto nj implicitn brn
program / u s r /bin/X l l /X. Ve vtin ppad nen nutn server specifikovat. Ar
gument <J display r> uruje display, jen bude X server obsluhovat. Kad sputn
X server obsluhuje jeden display. Display mus bt vdy jednoznan identifikova
teln, a to nejen v rmci jednoho potae, ale v rmci cel st. X Window je pln
stov systm. Z uivatelskho pohledu lze kad X server identifikovat pomoc
etzce
<J hos t r> : <J display r> <J screen r>

kde <J host r> je jmno hostitele potae, <J display r> je seln hodnota displaye a <J screen r>
je slo obrazovky. Argument <J screen r> je i s tekou nepovinn, jedn se o slo obrazovky
v rmci jednoho displaye. Pi specifikaci loklnho displaye se neuvd hostitelsk
pota. Pi sputn loklnho X serveru m display standardn oznaen : o . Pokud
by uivatel chtl spustit dal X server souasn, mus pi sputn specifikovat jin
slo, aby nedolo ke kolizi, napklad : 1 . Pokud je pi startu X Window pomoc
xini t vynechna serverov st pkazovho dku, program xini t se pokus
interpretovat shellem soubor - / . x s e rve rrc. Pokud soubor v domovskm adresi
uivatele nen, je sputn implicitn server / u s r /bin/X l l / X a display : o .
Po inicializaci X serveru j e sputn program <Jklient r> vetn specifikovanch ar
gument. Jeliko je mon specifikovat sputn klientskho programu vetn argu
ment, je poteba oddlit klientskou a serverovou st pkazu pomoc ,, - _ " . Odd
lova ,, - - " slou programu xini t k rozpoznn konce klientskho pkazu. Pokud
8.2. Sputn X serveru a lokln pihlen 227

nen klientsk program uveden, xini t se pokus interpretovat soubor / . xini t rc


-

pomoc shellu. Nen-li soubor nalezen, je sputn program xt e rm. Program xt e rm


je emultor alfanumerickho terminlu, popis jeho ovldn naleznete v kapitole 8.5.
Emultory terminlu slou k nahrazen textovho terminlu v systmu X Window.
I pi prci v grafickm rozhran me uivatel vyuvat slu shellu a dalch nstroj
Unixu. Sputn X serveru pomoc xini t ukazuje pklad.

$ xini t
- -
$ xini t :1
$ xini t /usr/bin/X1 1 / twm
- -
$ xinit /usr/bin/X1 1 / twm :1

V prvnch dvou ppadech xi ni t spust / . xi ni trc nebo implicitnho klienta,


-

protoe klientsk program nen pi startu specifikovn. V dalch dvou ppadech


je sputn sprvce oken t wm. Z pkladu je rovn vidt, jak explicitn zadat slo
loklnho displaye.
Pi startu X serveru pomoc xini t je mon specifikovat dodaten argumenty
ovlivujc chovn a nastaven X serveru. Mezi nejpouvanj pat argument
- depth <J rovinyr>, kde hodnota <J roviny r> vyjaduje poet bitovch rovin pouvanch
pro uchovn informace o kadm pixelu19. Pokud je bitovch rovin 8, pi zobra
zovn me bt pouito nanejv 28 256 rznch barev souasn. Je-li bitovch
=

rovin 16, je mon pouvat 216 65 536 rznch barev souasn. V souasnosti jsou
=

nejvce pouvan 16, 24 a 32bitov barevn hloubky.


Argument - dp i <J slo r> slou k nastaven fyzickho rozlien obrazovky mo
nitoru. daje se zadvaj v bodech na palec. Argument je poteba pout pouze
vjimen, kdy X server neme detekovat rozlien z hardwaru. Argumentem
- l a you t <J nzev r> lze dodaten specifikovat konfiguraci serveru podle jejho jmna.
Systm XFree86 ped startem X serveru nat soubor / e t c /X l l /XF 8 6 Conf i g,
v nm jsou uvedeny konfiguran daje. Pokud uivatel std rzn hardware,
me mt ve svm konfiguranm souboru specifikovno nkolik hardwarovch za
zen a pi sputn me vybrat aktuln konfiguraci pomoc argumentu - l ayout.
Dal argumenty budou rozebrny v kapitole 8.3.
Pokud chce uivatel pizpsobit start X Window svm poadavkm, mus si
napsat vlastn soubor / . xini t r c . V tomto souboru by ml provst zkladn ini
-

cializan kroky, napklad zavst databzi uivatelskch atribut a podobn. Pi


sputn X serveru pomoc skriptu s t artx je zpracovvn i soubor / . x s e s s i on.
-

Pouit souboru / . xs e s s i on msto / . xini t rc lze jen doporuit, pouvaj jej


- -

toti i display managery.

Pihlen pomoc display manageru


Druhou monost loklnho pihlen je vyut display manager. Display manager
je speciln X klient umoujc uivateli pihlsit se pmo pomoc grafickho roz
hran. V ppad, e je uivatelsk prce orientovna pevn na grafick rozhran, je
1 9Ve starch verzch XFree86 se argument jmenoval - bpp.
228 Kapitola 8. Grafick sov rozhran

vhodn odstnit uivatele od textovho terminlu pomoc display manageru. Display


managery funguj jako systmov procesy sputn na konci startu systmu. Pot,
co je display manager sputn, pokus se spustit X server a zobraz pihlaovac na
bdku. Krom samotnho pihlen obstarv display manager navc bezpenostn
mechanismy, jimi d pstup k X serveru. Vtina display manager umouje
i vzdlen pihlen do systmu, viz kapitolu 8.3.
Standardn soust X Window je display manager xdm. Je velmi jednoduch, ale
implementuje vechny potebn sluby. Existuj vak i jin display managery. Sou
st implementace integrovanho prosted KDE je i display manager kdm. V rmci
projektu GNOME byl vyvinut robustn display manager gdm. Oproti xdm umouje
uivateli ped pihlenm nastavit jazykov prosted, ppadn typ sezen. Volbou ja
zykovho prosted se nastav lokalizan promnn, pi prci se systmem je potom
pouvn specifikovan jazyk. Pojmem sezen - session je mylena doba prce uiva
tele, to jest doba mezi jeho pihlenm a odhlenm ze systmu. Jednotliv typy
sezen se odliuj v pouvanch sprvcch oken. V systmu m kad typ sezen
vlastn inicializan skript. Skript je sputn po pihlen, pi dokonen skriptu je
uivatel odhlen. Poslednm pkazem v inicializanm skriptu je zpravidla sputn
sprvce oken. Display managery kdm a gdm obvykle obsahuj nsledujc typy sezen.

Pedchoz. Tato volba je implicitn zapnuta a znamen pouit pedelho typu


sezen. Informace o poslednm sezen se nalzaj v uivatelskch konfigura
nch souborech. Napklad display manager gdm ukld informace do souboru
- / . gnome / gdm. Do souboru - / . gnome / gdm se ihned po pihlen gdm za
pisuje posledn nastaven sezen.
Failsafe. Sezen Failsafe je velmi jednoduch mlo by vdy fungovat. Po pihl
en se nespust dn sprvce oken, pouze se spust jeden emultor terminlu.
Akoliv je sezen Failsafe uivatelsky dost nepvtiv, umouje opravovat
chyby v kritickch situacch. Typicky v ppad, kdy m uivatel pekroenu
kvtu a neme vytvet soubory, je nutn pout sezen Failsafe a nkter sou
bory smazat. Jeliko se pi sezen Failsafe nespout dn sprvce oken, me
bt z terminlu dodaten sputn libovoln sprvce.
Xsession je klasick typ sezen. Po inicializaci aplikanch atribut je sputn
skript - / . xs e s s i on. V nm si uivatel explicitn ur, kter sprvce oken bude
pouvat, napklad twm, fvwm, fvwm2 , Window Maker, Icewm, Sawfish nebo
jin. Standardn do tohoto souboru sta napsat jmno spustitelnho souboru
sprvce oken, napklad wmaker pro Window Maker. Pi prci v heterogennm
prosted je dobr vytvet v souboru - / . xs e s s i on podmnn provdn
sekce.
GNOME je projekt snac se vytvoit kompaktn desktop prosted pro pra
covn stanice, zaloen na XML a komponentnm systmu postavenm na mi
ddlewaru CORBA. GNOME je nezvisl na sprvci oken. Na zatku sezen
se provede inicializace nkterch komponent, spust se pednastaven sprvce
oken, panely a sprvce plochy. Tm vechna nastaven GNOME se nedlaj
8.2. Sputn X serveru a lokln pfihlen 229

runm zpisem do soubor, ale pomoc intuitivnch konfiguranch nstroj


spustitelnch z uivatelsk nabdky.
KDE. K Desktop Environment je konkurenn desktop projekt pro Linux. Ako
liv nepouv tak modern technologie a nvrh jako GNOME, je kompaktnj
a uivatel zvykl na MS Windows se s nm mohou nauit rychle pracovat.
Nevhodou je velk nronost na systmov zdroje. KDE je dobrou volbou
pro uivatele, kte maj rdi vysok uivatelsk komfort a jednotn vypadajc
aplikace.

Prce po loklnm pihlen


Pi prci v X Window je dobr znt nkolik zkladnch klvesovch zkratek zabra
nch X serverem k dcm elm. Tyto klvesov zkratky nejsou dle postupovny
aplikacm jako udlosti. V ppad "zamrznut " X Window je mon pokusit se
ukonit jejich innost klvesami C - M - B S P, kde B S P zna klvesu zptn mezery
- backspace. Tato siln kombinace klves v drtiv vtin ppad okamit ukon
grafick reim. Pokud se uivatel pihlaoval pomoc display manageru, po chvli
je X server znovu sputn a je zobrazena pihlaovac nabdka. Pokud X Window
nereaguj ani na tuto kombinaci klves, je poteba pihlsit se k systmu vzdlen
a pomoc programu ki I I ukonit bh procesu, kter zpsobil zamrznut X serveru.
Pokud dojde k zamrznut samotnho X serveru, je poteba podat o pomoc adminis
trtora systmu, protoe efektivnm uivatelem X serveru je obvykle superuivatel
root, viz kapitolu 3.6.
Bhem prce lze rovn pepnat grafick rozlien, to jest rozmry zobrazova
nho vezu rastru. V souasnosti je za pracovn minimum povaovno rozlien
1 280 x 1 024 bod. Pokud m uivatel nastaveno jist rozlien, napklad 1 024 x 768
bod, pi snen rozlien, eknme na 640 x 480, na obrazovce uvid pouze zvt
en vez sti koenovho okna plochy. Pokud by uivatel chtl vidt i zbytek plo
chy, mus ji "odrolovat" pomoc myi. Rozlien lze mnit kombinac klves C - M - +,
C - M - - , kde + a - zna klvesy na numerick sti klvesnice. V konfiguranch sou
borech X serveru lze zmnu rozlien zakzat, to jest v nkterch ppadech mohou
mt obyejn uivatel systmu pepnn rozlien zablokovan.
Pi prci s X Window nejsou obecn konzoly potae blokovny. Pomoc kl
ves C - M - F l a C - M - F 1 2 nebo M - F 1 a M - F 1 2 se lze pepnat po textovch kon
zolch potae. O inicializaci konzol se star program / sbin/ ini t, v souboru
/ e t c / ini t t ab jsou uloeny pkazy pro jejich sputn. innost nkterch konzol
bv zena programem get ty, ten se star o spoutn pihlaovacho mechanismu.
Pi sputn X serveru je vdy zabrna jedna z konzol. Napklad pokud je prvnch
est konzol vyhrazeno pro textov pihlaovn do systmu a zrove je sputn dae
mon gdm, potom je na sedm konzole umstna pihlaovac obrazovka gdm. Pomoc
C - M - Fn se lze pepnat nejen mezi textovmi konzolami, ale i z grafickho rozhran
na konzole a obrcen. Uivatel me mt dokonce sputno nkolik nezvislch
X server, z nich kad reprezentuje jeden display. Mezi vce sputnmi X servery
se lze pepnat opt kombinac klves C - M - Fn.
230 Kapitola 8. Grafick sov rozhran

8.3. Prce se vzdlenmi klienty


v prosted X Window v podstat nezle na tom, zdali jsou aplikace sputny
na stejnm potai jako X server. Kad aplikace m monost komunikovat s li
bovolnm displayem, pokud na to m patin oprvnn. Vhody tohoto systmu
jsou zejm. Ji od potku bylo v Unixu mon provozovat grafick aplikace vzd
len. Systmy zaloen na Unixu leckdy pracuj zpsobem, pi kterm jsou lokln
stanice vyuvny pouze jako X servery a aplikan software je spoutn z jednoho
vkonnho potae. Pi tomto pstupu jednak odpadaj problmy s administrac, ale
dochz i k dalm pjemnm vedlejm efektm, v mnohem men me se projevuje
napklad nekonzistence dat. Pi prci se vzdlenm systmem je poteba rozliovat
dv situace. Prvn je monost pihlen se do vzdlenho systmu pomoc display
manageru, druh problm je zobrazen vzdlenho X klienta na loklnm X serveru.

Vzdlen display manager


V prvnm ppad se uivatel me pihlsit pomoc vzdlenho display manageru.
Samotn pihlen probh identicky, jako by se jednalo o display manager pracujc
na loklnm hostiteli. Display managery nejsou omezeny pouze na prci s loklnm
X serverem, mohou bt dokonce sputny, ani by automaticky startoval lokln
X server. Pi vzdlenm pihlen nejprve uivatel spust nov X server, kter pro
vede dost o spojen se vzdlenm display managerem. Display manager spojen
buto povol, nebo zamtne. Pokud je spojen povoleno, display manager pracuje
stejn jako v ppad loklnho pihlen - pouze pracuje s displayem, jen mu byl
pedn bhem dosti o pihlen. Pro vzdlen pihlaovn byl navren protokol
XDMCP X Display Manager Control Protocol. Do protokolu bylo zejmna nutn zahr
-

nout autentizan mechanismy a mechanismy omezen veejn dostupnosti displaye.


Pokud se chce uivatel pihlsit pomoc vzdlenho display manageru, mus
spustit nov X server s argumentem - que ry <J host r>, kde <J host r> je jmno hostitel
skho potae. Viz pklad.
$ xini t - - : 1 - query phoenix . in f . upo1 . c z

Po spnm spojen se objev pihlaovac obrazovka a uivatel me na potai


pracovat bnm zpsobem. Prce se bude liit jedin v rychlosti odezvy. Vzdlen
prce s potaem nen pln vhodn pro nkter typy aplikac, teba promtn
digitlnho videa. Na druhou stranu, pihlaovac protokol XDMCP je podporovn
i nktermi emultory X Window z jinch operanch systm. Bez vtch problm
lze pracovat s unixovm systmem teba z MS Windows.

Spoutn vzdlench klient


Ponkud jinou situac je spoutn individulnch vzdlench aplikac. Tato situace
nastv v ppad, kdy chce uivatel pracujc s loklnm displayem spustit vzd
lenho X klienta. Jednm z een by bylo pepnout se na jinou konzolu a provst
pihlen pomoc vzdlenho display manageru. Z uivatelskho hlediska je ale
8.3. Prce se vzdlenmi klienty 231

mnohem jednodu pracovat s jednm X serverem a vechna okna mt zena jednm


sprvcem oken. Na potai, ze kterho bude program sputn, navc nemus bet
display manager.
Pi sputn vzdlen aplikace je nutn zajistit ti vci.
Pihlen do systmu pomoc slueb, jako jsou s s h, t e lnet a jin.
Pedn displaye spoutn aplikaci zaru smrovn komunikace na display.
Autorizace pstupu. Aplikace mus mt povolen pstup na display.
V nsledujcm textu budou vechny ti aspekty sputn aplikace rozebrny. Vzd
len pihlen do systmu je nutn - uivatel mus spustit X klienta. Na druhou
stranu, samotn pihlaovac proces ji dl neovlivuje prci s programem. Po spu
tn klientsk aplikace na pozad se lze od systmu opt odhlsit. Pokud je program
v terminlu sputn na pozad, v dnm ppad to neovlivuje chovn jeho roz
hran. Ve skutenosti je vtina X klient spoutna na pozad, uivatel s nimi me
interagovat, a navc nebude mt blokovan terminl. Pro pihlen je vhodn pou
vat program s sh, protoe doke komunikaci mezi klientem a serverem ifrovat.
Uvaujme situaci, kdy uivatel novakj sed za potaem l inux 0 2 a chtl by
vzdlen spustit program xman z potae poc i tac . nekde . c z . Oba dva potae
nesdl dn souborov systm. Uivatel se nahls na pota a spust xman.
[ novakj @l inux0 2 ] $ s sh j eni k@poci tac . nekde . c z
j enik@poc i t a c . nekde . c z ' s pas sword :
Last l og i n : Tue Jul 1 7 1 5 : 2 4 : 2 4 2 0 0 1 f rom l inux 0 3 on pt s / 3
L i nux poc i t ac 2 . 4 . 6 # 1 SMP Wed Jul 4 1 3 : 3 3 : 0 5 CEST 2 0 0 1 i 6 8 6
[ j enik@poc i t ac ] $ xman &
[1] 8728
Error : Can ' t open d i s p l ay :
[ 1 ] + Exi t 1 xman

Uivatel se zcela sprvn pihlsil do vzdlenho systmu, avak pi pokusu


o sputn X klienta obdrel hlen o nemonosti otevt display. Na vzdlenm
potai je poteba oznmit klientovi, na jak display se m obracet. To lze udlat
dvojm zpsobem. Buto je mon nastavit promnnou prosted D I S PLAY na hod
notu identifiktoru poadovanho displaye, nebo lze spustit program s argumentem
- d i sp l ay <J display r>. V obou ppadech je poteba specifikovat vzdlen display
pomoc jeho identifiktoru. Kad shell sputn z emultoru terminlu m nasta
venu promnnou D I S PLAY na aktuln display. Pokud si uivatel nen jist slem
displaye, me si v loklnm shellu vypsat obsah promnn D I S PLAY. Viz pklad.
[ novakj @l inux0 2 ] $ echo $DISPLAY
:0.0
[ novakj @l inux0 2 ] $ s sh j eni k@poci tac . nekde . c z
j eni k@poc i t ac . nekde . c z ' s pas sword :
Last l og i n : Tue Jul 1 7 1 5 : 2 4 : 2 4 2 0 0 1 f rom l inux 0 3 on pt s / 3
L i nux poc i t ac 2 . 4 . 6 # 1 SMP Wed Jul 4 1 3 : 3 3 : 0 5 CEST 2 0 0 1 i 6 8 6
[ j enik@poc i t ac ] $ export DISPLAY= l inux0 2 . inf . upol . c z : O
[ j enik@poc i t ac ] $ xman &
232 Kapitola 8. Grafick sov rozhran

[ 1 ] 8 7 92
Xl ib : conne c t ion t o li nux0 2 . inf . upol . c z : O re fused by s e rver
Xl ib : C l i ent is not authori z ed t o conne c t t o S e rver
Error : Can ' t open d i s p l ay : l inux 0 2 . inf . upol . c z : O
[ 1 ] + Exi t 1 xman

V tomto ppad sice klient vdl, s kterm displayem se m spojit, ale X server
spojen odmtl. Klient nebyl pro spojen autorizovn. Klient me bt autorizovn
na nkolika rovnch. Systm X Window obsahuje programy xhos t a xauth umo
ujc autorizaci na rovni celch pota nebo autorizanm klem. Autorizace
je nezbytn pro zajitn bezpenho pstupu na display.

Autorizan mechanismy
Mechanismus xho s t je velmi primitivn. Umouje pstup k X serveru omezo
vat na jednotliv stanice. Standardn je povolen pouze pstup na lokln X server.
Argumenty programu xho s t maj nsledujc syntaxi.
xho s t + <lpotat>
xho s t - <lpotat>
Prvn pkaz povol potai <lpotat> pstup k X serveru. V druhm ppad pstup
k X serveru zake. Je-li sputn program bez argument, je vypsn seznam vech
pota s povolenm pstupem k X serveru.
[ novakj @l inux0 2 ] S xho s t +poc i tac . nekde . c z
poc i t ac . nekde . c z being added to a c c e s s cont rol l i s t
[ novakj @ l i nux0 2 ] S xho s t
acce s s cont rol enab l e d , only authori zed c l i ent s c an conne c t
INET : l ocalhost
INET : po c i t a c . nekde . c z

Po tomto kroku me uivatel spoutt klienty z potae poc i tac . ne kde . c z,


a budou-li mt sprvn nastaven display, jejich okna budou zobrazovna na potai
l inux 0 2 . Tento zpsob autorizace s sebou pin jedno obrovsk bezpenostn
riziko. Umouje omezit pouze potae, nikoliv uivatele. Pokud by byl na potai
poc i tac . ne kde . c z nahlen jin uivatel, mohl by voln manipulovat s displayem
uivatele novakj , napklad by mohl odezrat obsah jeho obrazovky. Na nsledujcm
obrzku je schematicky zobrazen cel postup sputn vzdlenho X klienta.

" \ /- st' " \,


\'-
/
display nastaven pstup povolen
x
na l i nux 0 2 : O pomoc xho s t

poc i t ac . nekde . c z l i nux 0 2

Program xauth e nejvt problmy programu xhos t . Pokud je uivatel pihl


en do systmu pomoc manageru displaye, m ve svm adresi vytvoen soubor
8.3. Prce se vzdlenmi klienty 233

- / . Xauthori ty. Do nj zape manager displaye autorizan kl displaye. Na z


klad jeho znalosti je dalm klientm povolen pstup k X serveru. Pokud uivatel
spout X Window pomoc xini t nebo s t a rtx, me si autorizan kl displaye
pomoc programu xauth vygenerovat. V souboru / . Xauthori ty je udrovna
-

databze autorizanch kl, program xauth slou k modifikaci daj v tto da


tabzi. Program je mon spoutt buto bez argument, v tom ppad pejde do
interaktivnho reimu, nebo je mon pedat mu vnitn pkazy jako argumenty.
Mezi zkladn vnitn pkazy xauth pat
xauth add <l displayr> <lprotokol r> <lklr>
xauth gene rate <l display r> <lprotokol r> t imeout <lprodleva r>
xauth l i s t <l display r>
xauth merge <l souborr>
xauth remove <l display r>
Pkaz l i s t slou k vypsn kl ptomnch v databzi. Pokud nen uveden argu
ment <l display r>, jsou vypsny vechny kle. Pokud je poteba kl z databze odstra
nit, pouije se pkaz remove se jmnem displaye. Pkaz me rge slou ke "slit infor
mac " z jin databze. Pedpokldejme, e uivatel penese soubor - / Xauthori ty .

z jednoho potae na druh a chce pipojit informace v nm obsaen ke stvajc


databzi. Potom pouije prv pkaz me rge .
Pi generovn a pedvn kl jsou nejdleitj pkazy add a generat e .
Znovu zdraznme, e pokud uivatel k pihlen d o loklnho systmu pouv
display manager, bude mt autorizan kl ji vygenerovn. V opanm ppad
je nutn vygenerovat jej manuln. Pkazu gene rate je pedno jmno loklnho
displaye, pstupov protokol a as vypren kle. Nejpouvanj pstupov protokol
je M I T - MAGI C - COOKI E - l, msto tohoto dlouhho nzvu me bt pouita pouze
teka " . " . as uveden za slovem t imeout se vyjaduje v sekundch a zna maxi
mln dobu, bhem kter se mus klient pipojit. V opanm ppad autorizan kl
expiruje. Implicitn hodnota je jedna minuta.
Na klientsk stran je poteba pidat vygenerovan kl do databze. Potom
kad klient nejprve zale autentizan etzec a server jej pijme. Jeliko nen soubor
- / . Xauthori ty veejn iteln, zneuit ostatnmi uivateli je vrazn sneno.
Kl je do databze pidn pkazem add. Vygenerovn a pedn kle demonstruje
nsledujc pklad.
[ novakj @ l i nux0 2 l $ xauth generate l i nux0 2 : 0 . 0 timeout 6 0 0
[ novakj @ l i nux0 2 l $ xauth l i s t l inux02 : 0 . 0
l inux 0 2 : 0 M I T - MAG I C - COOKI E - l 3 5 6 e 6 0 . . 4 e 3 f 7 2
[ novakj @ l i nux0 2 l $ s s h j enik@poc i tac . nekde . c z
j enik@poc i t ac . nekde . c z ' s pas sword :
Last login : Tue Jul 1 7 1 5 : 2 4 : 2 4 2 0 0 1 f rom l inux 0 3 on pt s / 3
Linux poc i t ac 2 . 4 . 6 # 1 SMP Wed Jul 4 1 3 : 3 3 : 0 5 CEST 2 0 0 1 i 6 8 6
[ j eni k@poc i t ac l $ xauth
Us ing autho r i t y f i l e /home / j enik/ . Xautho r i t y
xauth> add l inux0 2 . in f . upol . c z : 0 356e60 . . 4e3f72
xauth> exi t
Wr i t i ng authori ty f i l e /home / j enik/ . Xautho r i t y
234 Kapitola 8. Grafick sov rozhran

[ j eni k@poc i t ac ] $ export DISPLAY=l inux0 2 . in f . upol . c z : O


[ j eni k@po c i tac ] $ xman &
[1] 8792

V praxi samozejm nen poteba kl opisovat run, lze vyut clipboard pe -

chodnou pam pro prci s vezy textu. Na zvr kapitoly zdraznme, e penos
kle by ml bt maximln bezpen. Pokud je pi vzdlenm pihlen pouita ne
ifrovan sluba, napklad Telnet, kl putuje nechrnnou st a me bt zachycen
tet stranou.

8.4. Atributy X klient


X server si pi komunikaci s X klientem udruje databzi zdroj. Napklad pokud
klient zad o nov okno, server si o novm oknu udruje informace ve speciln
datov struktue. X klient me mnit jistou st poloek tto struktury atributy -

zdroj. Napklad okno aplikace m atributy barvy pozad, velikosti, typu okna a tak
dle. Pomoc atribut lze mnit chovn a vzhled X klient. V nsledujcm textu
bude pod pojmem aplikace mylen libovoln X klient.
Nkter typy X klient maj nastaven atribut pevn zabudovno ve svm kdu.
Tento pstup ale nen ast, protoe uivateli znemouje atribut zmnit. Mnohem
astji jsou atributy aplikanch zdroj uvedeny v textov databzi. Databzi si kli
ent pi svm startu nat a provede podle n nastaven svch aplikanch zdroj. Pi
specifikaci atributu je dleit jednak jeho hodnota, jednak jeho vymezen uren, kte
-

rch atribut se zmna hodnoty tk. Jist by bylo nepraktick, kdyby napklad pi
zmn barvy pozad musel uivatel specifikovat hodnotu barvy pro kad grafick
objekt zvlr

Struktura obj ekt a jmna atribut


Pi vymezen atribut hraje dleitou roli hierarchick struktura objekt X klienta.
Veker objekty vytven pomoc knihovny X Toolkit maj hierarchickou strukturu.
Kad objekt, vyjma samotn aplikace, m svho rodie neboli nadfazen objekt. Na
pklad X klient obsahujc pouze jedno tlatko sestv jednak z objektu aplikace
a jednak z vlastnho tlatka, je je potomkem objektu aplikace. Jednotliv objekty ne
mus bt pouze " viditeln". Nkter jsou ureny napklad pro zen geometrie okna,
jin slou jako kontejnery na objekty umoujc dit polohu a rozmry ostatnch
objekt. Jeliko je struktura objekt hierarchick, zavd se pro identifikaci objektu
apart podobn absolutn cest.
V pedchozm odstavci bylo eeno, e rozhran X klienta je tvoeno hierarchicky
uspodanmi objekty. Pojmem tfda se oznauje kategorie, do kter dan objekt
spad. Napklad vechna tlatka aplikace spadaj do tdy Command. Jmna td
zanaj velkm psmenem. Pro vechny objekty jedn tdy jsou charakteristick
i stejn mnoiny atribut. Aby bylo mon rozliit jednotliv objekty v rmci jedn
tdy, jsou jim zavedena jmna . Jmna objekt zanaj malm psmenem, jmna ale
nemus bt obecn uniktn. Obsahuje-li objekt a dal objekty, nazvaj se podobjekty .
8.4. Atributy X klient 235

Nkter objekty, napklad textov npis, ji dn podobjekty obsahovat nemohou.


Naproti tomu objekty dc rozloen okna obsahuj podobjekty, jejich geometrii
d. Pklad hierarchie objekt je na nsledujcm obrzku.

objekt tdy Form


- - - - - - .. I The current file is modified.
objekt tdy Label _______
_ . Do you want to save it before quitting? I
objekty tdy Command .;;: - - - -
.. ..:::::::::::: _ . - . .. .. .. .. .. .. .. ..

Objektem stojcm v hierarchii nejve je objekt aplikace. Jmno objektu aplikace


je shodn se jmnem aplikace, jmno tdy aplikace takt, pouze zan velkm
psmenem. Napklad objekt aplikace xman se nazv xman a nle td Xman.
Kad objekt v rmci aplikace je specifikovn pomoc cesty. Cestu k objektu lze
definovat induktivn .
Je-li n nzev objektu aplikace, pak je . n cesta k objektu aplikace .
Nechp je cesta k objektu o a o obsahuje podobjekt q.
Pak je p.q cesta k podobjektu q.
Definice je v podstat podobn jako u absolutn cesty k souboru. Atributy jsou v rmci
jedn tdy rozliovny pomoc jmen atribut. Pokud je p cesta k objektu o a zrove a
je atributem o, pak p.a jednoznan uruje atribut v rmci aplikace. Napklad cestami
_ xt e rm . vt 1 0 0 . background a . xt e rm . vt 1 0 0 . f ont jsou jednoznan ureny
atributy barvy pozad a fontu objektu vt 1 O O, jeho rodiem je objekt aplikace xt e rm.
vodn teka me bt bez jmy vynechna.
Jednoznan specifikace objektu podle jmna by pi hromadn zmn atribut
objekt mohla init problmy. V cest lze specifikovat msto jmna objektu jmno
tfdy objektu. V tomto ppad me jedna cesta reprezentovat vc objekt. Uvedenm
jmna tdy lze kvantifikovat objekty jedn tdy, kter jsou potomky tho rodie.
Jmno tdy objektu lze v cest pout i vcekrt. Pro demonstraci uveme jednoduch
pklad.
xap l . okno . l i s t a . konec . background
xap l . okno . l i s t a . Command . background

V prvnm ppad cesta specifikuje atribut barvy pozad tlatka kone c . V druhm
ppad je specifikovna cesta zahrnujc atribut barvy pozad vech tlatek na lit.
Mezi n pat i tlatko kone c . Pi specifikaci atribut plat jednoduch pravidlo -
- obecnji vyjdfeni cesty maj meni prioritu. Pokud by tedy uivatel pi nastavovn
atribut pouil pedchoz dv cesty, nedolo by k "zakryt" hodnoty atributu tlatka
konec, jeliko druh pouit cesta je obecnj ne prvn.
Dalm mechanismem zjednoduen zpisu cesty je vynechn jej libovoln sti
a nahrazen symbolem ,, * " . Tento zpsob specifikace m nejmen prioritu. Sym
bol " * " reprezentuje libovolnou st cesty. Notac * <Jatribut r> se nastav hodnota
atributu vem objektm. Uvedeme-li cesty z pedchozho pklaau ve tvaru
236 Kapitola 8. Grafick sov rozhran

* kone c . background
* Command . background

potom prvn zpis specifikuje vechna tlatka jmnem kone c a druh tvar speci
fikuje vechna tlatka v aplikaci. Druh zpis m men prioritu ne prvn, protoe
je krom symbolu ,, * /1 pouit navc nzev tdy objektu.

Typy atribut
Kad atribut m dn krom svho jmna i datov typ. Datov typ atributu definuje
domnu hodnot ppustnch pro dan atribut. V nsledujc tabulce jsou uvedeny
zkladn datov typy atribut, nkter z nich budou podrobn rozebrny.

datov typ pouit


barva hodnoty barvy poped a pozad objekt, barva pera
boolean logick hodnoty
slo numerick hodnota, celoseln nebo racionln
font identifiktor fontu uruje ez psma poadovanch vlastnost
geometrie velikost a pozice okna
kurzor tvar kurzoru myi
pixmapa rastrov obrzky
etzec etzec znak
translace vazba mezi udlost a akc

Datov typ atributu boolean zna pravdivostn hodnotu a me nabvat buto hod
noty t rue pravda, nebo f a l s e nepravda. Atributy typu boolean se zpravidla
- -

pouvaj jako dvoustavov pepnae, buto je dan vlastnost v objektu zapnuta,


nebo nen. Cseln a etzcov hodnoty atribut se specifikuj tradinm zpsobem.
Posledn jmenovan datov typy jsou pouvny pedevm atributy, kter jsou tsn
vzny ke konkrtnm X klientm.

Barvy
Pi zmnch vzhledu X klienta uivatel nejastji pizpsobuj barvy. Hodnoty
atribut datovho typu barva lze specifikovat nkolika zpsoby. V systmu exis
tuje veejn databze nzv barev, nachz se v souboru / e t c /x l l / rgb . txt. Na
kadm dku souboru je specifikovna jedna barva. V systmu X Window jsou
barvy reprezentovny temi slokami ervenou, zelenou a modrou. Aditivnm skl
-

dnm rzn intenzivnch barevnch sloek je mon pi hloubce 24 bitovch rovin


zskat pes 16 milion barev. V souboru / e t c /X l l / rgb . txt je intenzita jednotli
vch sloek vyjdena sly a 255. ern barva m sloky O, O, O, bl 255, 255,
255. Akoliv aditivn skldn barev nen pro lovka zvyklho mchat barvy ttcem
pli pirozen, pouvaj jej prakticky vechny druhy monitor. Jednm ze zp
sob specifikace barvy je tedy pout symbolick nzev barvy. Nzvy barev mohu bt
8.4. Atributy X klient 237

i vceslovn. Typickmi nzvy barev jsou napklad Dark S l a t e Gray, Nava j o


Whi t e, B l anehed Almond, B l ue l a podobn. Pokud je v nzvu barvy uvedena
cifra, obvykle reprezentuje zesvtlen - barvy s menmi ciframi jsou svtlej.
V databzi barev / e t e /X l l / rgb . txt jsou symbolick nzvy definovny pouze
pro zlomek vech zobrazitelnch barev. Barvu lze natst specifikovat pmo zada
nou intenzitou jednotlivch barevnch sloek. K tomuto elu slou tyi notace
#RGB
#RRGGBB
#RRRGGGBBB
#RRRRGGGGBBBB

kde R, G, B pedstavuj jednu cifru v hexadecimln soustav, to jest O , , 9, A, . . . , F.


. . .

Notace se li potem bit, kter jsou vyhrazeny pro specifikaci jednotliv barevn
sloky. V prvnm ppad jsou kad sloce vyhrazeny pouze tyi bity, to jest jedna
estnctkov cifra. Touto notac lze vyjdit pouze 4 096 rznch barev. Druh notace
je nejpouvanj, umouje vyjdit 16 milion barev a byla pevzata i standardy
jazyk urench pro publikaci na WWW. Zbyl dv notace se bn nepouvaj.

Fonty
Atributy typu font slou ke specifikaci fontu pouitho pro vykreslovn textu.
Fonty jsou obstarvny kompletn X serverem. X server m soubory s fonty uloeny
buto lokln, nebo me vyuvat slubyfont serveru na dost mu fonty poskytuje
-

jin pota. Implementace XFree86 v souasnosti podporuje adu formt font,


bitmapov fonty, PostScript fonty, TrueType fonty a jin.
Pokud chce klient manipulovat s fonty, nezasl X serveru cel jejich definice, to by
bylo z hlediska stovho provozu velmi nron. Jednotliv fonty jsou specifikovny
pomoc logickho popisu. Jednm ze standard X Window je i standard pro logick
popis font XLFD X Logical Font Description. Klient serveru zasl pouze informace
-

typu "pouij sklonn, polotun a bezpatkov psmo velikosti 12 bod", X server se


sna vyhovt klientovi v maximln me a pouije font nejblich vlastnost.
Clem logickho popisu fontu je mt k dispozici jednoznan identifiktor fontu,
jen by ml navc vypovdac hodnotu. Jmno fontu se skld z etzc, kter jsou
mezi sebou oddleny znakem ,, - ". Na jednotlivch pozicch jsou nsledujc infor
mace. Nzvy pol jsou uvedeny v jejich originln a zait podob.

f oundry Nzev autorsk firmy nebo organizace. Oznauje pvod cel skupiny
font, napklad adobe, b &h, bi t s t ream. Pro nezaazen fonty se
obvykle pouv nzev mi s e .
f ami ly Nzev ezu psma, napklad t i m e s nebo 1 ue i da. Pro fonty s pevnou
kou znaku se pouv oznaen f ixed.
we i ght Hodnota udv slovn oznaen pro duktus psma. Napklad bold,
book, demi, demibo l d, l ight, medium, norma l , regu l a r a po
dobn. Hodnota je pouze doplujc.
238 Kapitola 8. Grafick sov rozhran

s l ant etzec udvajc variantu psma. Symbol me nabvat hodnot R -

- kolm psmo, I italika, O sklonn psmo, Rl - italika s opanm


- -

sklonem, RO sklonn psmo s opanm sklonem.


-

s e t width Popisuje standardn velikost rozestupu mezi psmeny fontu. Bn


hodnoty jsou c ondensed, semicondensed, narrow a norma ! .
Ve vtin ppad m font nastavenu hodnotu norma ! .
add s t y l e Dodaten popis fontu, hodnota je pouze doplujc. Zpravidla s e zde
rozliuj patkov a bezpatkov psma hodnotami s e r i f a sans.
p i xe l s Velikost fontu v obrazovkovch bodech.
point s Velikost fontu v desetinch typografickho bodu. Jeden typografick
bod odpovd 1 /72 palce. Pi specifikaci velikosti v typografickch
bodech nen klient vzn na vstupn hardware.
hre s Horizontln rozlien v bodech na palec.
vre s Vertikln rozlien v bodech na palec.
spac ing Symbol specifikujc rozestupy mezi jednotlivmi znaky. Me nab
vat hodnot M - mezi znaky je pevn rozchod, P psmo je proporcio -

nln, jednotliv znaky maj rzn rozestupy, C - vechny znaky jsou


uzaveny do box pevn dan velikosti. Napklad pro emultory
terminl se hod psma uzaven do box, naopak se pro n vbec
nehod proporcionln psma.
avg width Prmrn ka fontu udvan v desetinch obrazovkovch bod.
char s e t Znakov sada.
encoding Kdovac strnka.

Pomoc horizontlnho a vertiklnho rozlien font oznamuje, pro jak druh v


stupnho zazen je uren. Tradin jsou fonty dostupn ve velikosti 75 OPI a 100 OPI.
Fonty s velikost 75 OPI jsou ureny pro mal monitory nebo notebooky. Samozejm,
e rozlien fontu je pouze orientan, nijak neomezuje klienta v jeho pouit. Pomoc
znakov sady a kdovac strnky se rozliuj fonty uren pro specifick nrodn pro
sted. V centrln Evrop se pouv znakov sada i s 0 8 8 5 9 a kdovac strnka 2 .
Pokud chce uivatel v X Window pst napklad esky, je poteba, aby ml v emul
toru terminlu nebo textovm editoru zapnut font konc na - i s 0 8 8 5 9 - 2 . V sou
asnosti se zanaj prosazovat i fonty pouvajc Unicode, v tom ppad budou
zakoneny nejsp na - ut f - 8 . Nsledujc pklad ukazuje logick nzvy nkterch
font.

- adobe - cour i e r - medium - r - normal - - 1 4 - 1 0 0 - 1 0 0 - 1 0 0 - p - 7 8 - i s0 8 8 5 9 - 2


- m i s c - f ixed - bo l d - r - semi condens e d - - 1 7 - 1 2 0 - 1 0 0 - 1 0 0 - c - O - i s0 8 8 5 9 - 2
- dec - t e rminal - medium- r - norma l - - 1 4 - 1 4 0 - 7 5 - 7 5 - c - 8 0 - i s0 8 8 5 9 - 1
- b &h - l uc i da - bo l d - i - norma l - s ans - 1 4 - 1 4 0 - 7 5 - 7 5 - p - 9 2 - i s0 8 8 5 9 - 2

V ukzkch byla u prvnch t font vynechna hodnota add s t y l e . Logick


oznaen font nejsou zabudovna pmo v defininch souborech font, nbr jsou
8.4. Atributy X klient 239

obvykle dodvna spolu s fonty ve specilnm piloenm defininm souboru.


V tomto souboru je kadmu fontu piazen jeho logick popis. Mechanismus pi
dlovn jmen je natolik prun, e umouje kdykoliv pidat nov font a logicky
jej oddlit od ostatnch. Pesto jsou logick jmna font ponkud sloit. Pi jejich
zadvn si lze pomoci X klientem xfont s e l . Klient umouje interaktivn za
dvat jmno fontu a pitom prohlet, jak psmo mu odpovd. Dalm zpsobem
zjednoduen zadvn jmen font je nahrazen souvisl sti jmna zstupnm sym
bolem " * " . Jmno prvnho z pedchozch font lze zkrtit napklad na
- adobe cour i e r * r * 1 4 * 2
- - - - - - -

Pi zkracovn je ale nutn dbt jist obezetnosti. X server se pi rozhodovn


o fontu d posloupnost, ve kter byly fonty registrovny. Pokud bude existovat vc
font vyhovujc zadanmu jmnu, X server bude implicitn pouvat prvn z nich. Pi
dodaten zmn banky font by mohlo dojt k namapovn neplnch logickch
jmen na jin fonty. Jmna asto pouvanch font bvaj rovn zkracovna na
jednoslovn nzvy pomoc alias, nejedn se ovem o aliasy v shellu.
Kurzory myi jsou rovn speciln fonty. Hodnoty atribut typu kurzor se ale ne
specifikuj pomoc jmen font, ale pomoc svch symbolickch nzv. Symbolick
nzvy jsou uvedeny v souboru / u s r /X l l R 6 / inc lude /X l l / cursorfont . h. Z
kladn kurzor v X Window se jmenuje X_cursor. Jmna kurzor se pi specifikaci
hodnoty atribut uvdj bez prefix xc_. V kurzorovch fontech jsou krom sa
motn bitov mapy uvedeny i relativn souadnice aktivnho bodu kurzoru.

Ostatn typy atribut


Hodnota atributu typu geometrie uruje velikost objektu a jeho umstn, typicky
se pouv u aplikanch oken. Syntaxe vrazu popisujcho geometrii okna je
<J fka C>X<J vka C>+<J h-pos C>+<J v-pos C>
kde <J fka c> a <J vka c> jsou rozmry okna, obvykle bvaj zadvny v pixelech. N
kter typy aplikac, teba emultory terminl, si stanovuj vlastn vnitn jednotky.
U emultor terminlu je logick, aby svou velikost udvaly ve znacch, nikoliv
v bodech. Hodnoty +<J h-pos C>+<J v-pos c> vyjaduj pozici v rmci rodiovskho okna.
Jedn-li se o aplikan okno, pak je pozice potna relativn ke koenovmu oknu.
Souadn systm X Window m bod [O, O] v levm hornm rohu obrazovky, osa x
roste smrem doprava, osa y smrem dol. Velikost nebo posunut mohou bt pi
specifikaci geometrie vynechny. Napklad 1 0 Ox 2 O O znamen velikost 100 x 200,
kdeto + 1 0 0 + 2 0 0 je pozice [100, 200] .
Atributy datovho typu pixmapa jsou ureny pro specifikaci rastrovch obrzk.
Jejich hodnotou je nzev souboru obsahujc data ve formtu XPM - X Pixmap. Tento
datov formt je siln nesporn, byl navren ve tvaru umoujcm snadno vloit
obrzek do zdrojovho kdu programu v jazyku C.
Translace je datov typ uren pro sputn klientsk akce pi vzniku urit ud
losti. Translace jsou zpravidla vzny na atribut t rans l a t i ons. Hodnotou atributu
240 Kapitola 8. Grafick sov rozhran

je tabulka sestvajc z poloek tvaru <J udlost r>:<Jakce r>, jednotliv poloky mohou bt
oddleny znakem " \ n " symbolizujcm nov dek. Zjemce o bli popis proble
matiky odkazuji na literaturu.

Nastaven hodnot atribut


Hodnotu atribut lze klientovi pedvat rzn. Buto seznamem dvojic
<Jatribut r> : <J hodnota r>
zapsanch ve zvltnch souborech. Dal monost je pout speciln argumenty
X klienta. Speciln argumenty umouj mnit pouze speciln atributy, nebo nao
pak atributy spolen vem aplikacm, napklad implicitn font, barvu pozad nebo
poten geometrii okna aplikace. Pokud chce uivatel pln pizpsobit chovn
X klienta svm potebm, pouv zpravidla prvn zpsob.
Po startu se X klient pokou v adresi j e t c jX l l j app - de f aul t s naleznout
soubor se jmnem sv tdy aplikace. Napklad X klient xedi t se pokus najt
soubor Xedi t . Pokud soubor existuje, klient z nj nate dvojice atribut a hodnot.
Tyto soubory ale nebvaj veejn zapisovateln, slou jako databze zkladnch
atribut X klient. Hodnoty atribut ve form dvojic lze klientovi pedat rovn
pomoc argumentu - xrm <Jatribu t r> : <Jhodnota r>. Viz pklady.
$ xman - xrm * font : 7x14 \
> - xrm * forground : red - xrm *background : ye l l ow

$ xfont s e l - xrm * s ampl eText : ' Ahoj sve te I ! ! '

V prvnm ppad byl program xman sputn s pozmnnmi barvami a fontem.


Jmno fontu 7 x 1 4 je aliasem pro font fixovan velikosti 7 x 14 bod. V druhm
ppad byl sputn program x f ont s e l a byl mu pedn etzec, jen bude pouit
pi zobrazovn ez psma. Jedn se o speciln logick atribut aplikace. Popisy
specilnch atribut jsou k nalezen v manulovch strnkch X klient.

Sprva databze atribut


Bhem ivota X serveru je v pamti udrovna databze atribut skldajc se
z dvojic <Jatribut r>:<J hodnota r>. Uivatel m monost manipulovat s touto databz
pomoc X klienta xrdb. X klienta lze zavolat s argumenty
xrdb - l oad <J soubor r>
xrdb - me rge <Jsoubor r>
xrdb - que ry
xrdb - remove

kde <J souborr> specifikuje soubor s atributy. Argumentem - l oad se provede nahra
zen dosavadn databze atributy ze souboru <Jsoubor r>. Volba - me rge pouze pid
k dosavadnm dajm nov ze souboru <J souborr>. Pkazem xrdb - remove se ob
sah databze vyprzdn. Argument - query je uren pro vypsn obsahu databze
8.4. Atributy X klient 241

ve tvaru vstupnho souboru. Databze je v pamti X serveru uloena efektivnji


ne v souboru na disku, argument - query slou pro jej zptn pevod do textov
reprezentace.
Prvn sputn programu xrdb se provd buto automaticky po pihlen ui
vatele do systmu - je soust inicializanho skriptu sezen, nebo jej mus uivatel
provst sm, napklad v souboru / xs e s s i on. Ve vtin systm je automaticky
- .

tena databze ze souboru / Xde faul t s, ppadn ze souboru / Xre sourc e s .


- . - .

Vechny zmny, kter jsou v souboru provedeny, se ihned promtnou d o nov spu
tnch aplikac.
Vstupn soubor pro program xrdb me bt pomoc direktiv rozlenn do pod
mnn vykonvanch sekc. Direktivy maj podobn tvar, jako direktivy # i f de f,
# i fnde f, # e l s e a # endi f jazyka C. Nsledujc pklad ukazuje typick soubor
definujc hodnoty atribut, jsou v nm pouity i tyto direktivy.

# i fde f COLOR
XTe rm*background : dark s l a t e gray
XTerm* foreground : wheat4
XTerm* cursorCo l o r : dark turquo i s e
#else
XTe rm*background : whi t e
XTerm* f oreground : bl ack
# endi f
Emac s * f ont : - * - * - medium - r - norma l - * - 1 4 - * - * - * - * - * - i so 8 8 5 9 - 2
XTe rm . vt l O O . t rans l a t i ons : #rep l a c e \
<BtnlDown > : i coni fy ( ) \ n \
< Btn2 Down > : maximi z e ( ) \ n

Program xrdb poskytuje nkolik peddefinovanch symbol, v pkladu byl po


uit symbol CDLDR. Symbol je definovn, prv kdy je display barevn. Posledn
polokou v databzi je definice akc sputnch pi udlostech stisku prvnho a dru
hho tlatka na myi. Pslun akce bvaj popsny zpravidla v manulov strnce
konkrtnho X klienta.
Pokud je pro jeden program poteba vytvoit nkolik rznch konfigurac atri
but, situaci lze eit pejmenovnm objektu aplikace pi startu X klienta. Pomoc
argumentu - name lze pojmenovat sputnou instanci X klienta. Pedpokldejme, e
uivatel m ve sv databzi dva zznamy o atributech

Xman *background : ye l l ow
napoveda * background : p i nk

Pi sputn bude mt program xman lut pozad, pokud jej vak uivatel spust
pkazem xman - name napoveda, pozad bude rov. Je to tm, e jmno apli
kace je mn obecn ne nzev tdy aplikace a argumentem - name bylo nastaveno
jmno napoveda. Na zvr dodejme, e nastavovn atribut X klientm je mon,
pokud vyuvaj slueb X Toolkitu, pvodn sady knihoven vyvinut na MIT. Nov
knihovny, napklad GTK + , maj vlastn mechanismy konfigurace klient, jejich popis
vak pesahuje tento text.
242 Kapitola 8. Grafick sov rozhran

8.5. Standardn X klienti


Tato kapitola obsahuje strun popis zkladnch X klient. Zkladn X klienti
jsou jednou ze soust X Window. Nkter atributy standardnch X klient je mon
mnit argumenty uvedenmi pi jejich sputn. Zmny v atributech proveden z p
kazovho dku maj vy prioritu ne vechny ostatn zmny. Nsledujc tabulka
obsahuje pehled zkladnch argument.

argument vznam
- geome t ry <Jgeometrie l> nastaven geometrie okna
- bd <J barva l> barva okraj oken
- bg <J barva I> barva pozad
- fg <J barva l> barva poped
- di s p l ay <J displaY I> pouvan display
- fn <ifon t l> implicitn font
- name <Jjmno l> jmno objektu aplikace
- t i t l e <Jjmno l> jmno aplikace
- xrm <Jatribu t l> : <J hodnota l> nastaven hodnoty atributu

Msto zkrcench nzv pepna - bd, - bg, - fg a - fn lze pouvat i jejich dlouh
varianty - bordercol or, - background, - f oreground a - f ont . Za povimnut
stoj rozdl mezi argumenty - name a - t i t l e . Prvn z nich nastavuje jmno objektu
aplikace, slou pedevm k rozlien rznch instanc stejnho programu. V tomto
ppad je mon pro jeden program definovat rzn sady atribut, sady se budou
uplatovat podle aktulnho nzvu objektu aplikace. Argumentem - t i t 1 e se zmn
pouze jmno programu, jmno objektu aplikace zstane stejn. Jmno programu bv
zobrazeno zpravidla na lit okna aplikace.

Emultory terminlu
Mezi nejdleitj X klienty pat emultory terminl . I pi prci v grafickm re
imu je vhodn vyuvat shellu jako nstroje pro spoutn program a vytven
skript. Emultor terminlu provd emulaci znakovho zazen terminlu. Zpravi
dla se jedn o X klienta, jeoo okno, rozdlen do 80 x 24 pol, pedstavuje virtuln
obrazovku terminlu. Pi spoutn X klient z emultoru terminlu bv uiten
spoutt je na pozad. X klient interaguje s uivatelem prostednictvm svho okna
a nen tedy eln, ale blokoval pkazov dek v shellu.
Standardn soust X Window je emultor terminlu xt e rm, dalm rozenm
emultorem je rxvt . Emultor rxvt vychz z programu xte rm, je vak mnohem
thlej a v nkterch ppadech lpe manipuluje s barvami. Pi prci s terminlem
je asto vyuvn clipboard. Jedn se o pechodnou pam urenou pro prci s vezy
textu. V terminlu lze pomoc myi oznait souvislou oblast. Nejprve je nutn pesu
nout kurzor myi na potek oblasti, potom stisknout lev tlatko na myi a thnout
my na konec oblasti. Bhem operace je oznaovan oblast vysvcena. Po uvolnn
8.5. Standardn X klienti 243

myi je automaticky zkoprovn text v oznaen oblasti do clipboardu. Dalm zp


sobem oznaen oblasti je kliknout na jejm zatku levm tlatkem myi a na konci
oblasti pravm tlatkem. Pokud je v terminlu sputn program definujc vlastn
chovn myi, pak oznaovn oblasti nelze pout. Emultor terminlu rxvt um
potlait nastaven chovn myi, pi oznaovn oblasti sta pidret klvesu I SHIFT I.
Po stisku prostfednho tlatka na myi dojde ke vloen textu z clipboardu na aktuln
pozici kurzoru.
Ve uvedenm zpsobem lze snadno penet text mezi X klienty, nejen mezi
emultory terminl. Pi koprovn textovch oblast si uivatel vysta pouze
s my. Emultory terminlu rovn umouj strnkovat obrazovku. Pomoc posuvn
lity nebo klves I PGUP I PG DN I stisknutch souasn s klvesou I SHIFT l Ize prohlet text,
kter ji byl z obrazovky odrolovn. Emultory xt e rm a rxvt maj spolen n
kter atributy. Napklad pi nastaven nsledujcch atribut zmn uivatel chovn
emultoru terminlu.

XTerm* s aveLine s : 1500


XTerm* scrol lBar : t rue
XTerm* cursorColor : dark gol denrod
XTe rm*vi sua l Be l l : t rue

Prvn atribut slou k nastaven potu dk, kter si terminl uchovv v pamti.
Druhm atributem byla zapnuta rolovac lita. Lita bude zobrazena pi levm okraji
terminlu. Dal atribut nastavuje barvu kurzoru. Poslednm atributem je nastaven
"vizuln zvonek", msto klasickho ppnut terminl "blikne".

Klienti pro nastaven X serveru


X klienti x s e t a x s e t root slou k nastaven chovn X serveru a koenovho
okna. X klientem x s e t lze nastavit jednak chovn monitoru, napklad power manage
ment, jednak lze napklad ovlivnit cesty k fontm, nastavit citlivost myi a podobn.
Pepnaem -b lze vypnout zvonek. Pomoc argument + dpms, - dpms lze zapnout
nebo vypnout zapnn ekonomickho mdu monitoru. Navc lze pomoc argumentu
dpms <lstandby l> <l suspend l> <l Offl> nastavit ti asov intervaly, po kterch se bude
vkon monitoru postupn sniovat. asov daje se zadvaj v sekundch. Monitor
lze pepnout okamit do spornho reimu argumentem dpms f orce <l m6d l>, kde
<l m6d l> je buto s t andby, suspend, nebo o f f .
Citlivost myi lze nastavit pomoc argumentu m <l slo l>. m vt slo j e na
staveno, tm bude my citlivj. Vhodn rozpt hodnot je 1 a 5. Argumentem
fp+ <l cesta l> lze X serveru zaregistrovat novou cestu k adresi s fonty. Po registraci
pkazem x s e t mohou bt fonty pouvny. Pro detaily viz manulovou strnku
programu x s e t . Pkazy

$ xset m 3
$ xset + fp - / e tc /X1 1R6 / fonts
$ xset dpms 6 0 0 1 2 0 0 3 6 0 0
244 Kapitola 8. Grafick sov rozhran

uivatel nastav akceleraci myi na 3, pid novou cestu k fontm do podadrese


svho domovskho adrese a nastav sporn reim monitoru. Jednotliv reimy se
budou zapnat po 10 minutch, 20 minutch a po jedn hodin.
X klient xs e t root slou k nastaven koenovho okna. Pokud je program vo
ln bez argument, nastav koenov okno na standardn hodnoty. Argumentem
- cursor <l nzev t> lze mnit tvar implicitnho kurzoru myi stojcho na koenovm
oknu. Argumentem s o l i d <l barva t> lze zmnit barvu pozad. Na pozad koeno
-

vho okna je mon umstit tak vzorek, jm bude okno vyplnno. K tomu slou
argument - b i tmap <l soubort>. Vzorek mus bt umstn v souboru . xbm - standard
nm datovm formtu pro uloen bitov mapy. Soubor lze vyrobit buto konverz
z jinho datovho formtu napklad, pomoc programu c onve rt, nebo pomoc
kreslicho programu bi tmap.
K vlastnostem obrazovky pat i gama korekce. X klientem xgamma lze mnit
gama korekce monitoru. Pokud je klient zavoln bez argumentu, vype souasn
nastaven. Pomoc argument - gamma, - rgamma, - ggamma, - bgamma nsledova
nmi hodnotou v rozpt 0.1 a 10 lze mnit gama korekci pro vechny barevn
sloky narz nebo po jednotlivch barevnch slokch.

Klienti pro nastaven mapy klves


Pi zpracovn dokument obsahujcch diakritiku uivatel pirozen naraz
na potebu mt k dispozici eskou klvesnici. Problmy s pouvnm nrodnch kl
vesovch map maj v systmu X Window ji dlouhou historii. Bhem vvoje systmu
a nkterch voln iitelnch implementac se zaala objevovat rzn een. Vtina
z een nebyla uivatelsky pijateln - ke zmn nastaven klvesov mapy bylo
zapoteb privilegi superuivatele, nebo alespo prvo zpisu do konfiguranch
soubor X serveru.
Sada X klient sdruench do balku xkb s e l vytv relativn nezvisl systm
nastaven uivatelskch klvesovch map fungujc v implementaci XFree86. Jdrem
balku jsou programy xkb s e l db a xkb s e l . Prvn z dvojice slou k udrovn data
bze klvesovch map. Z pohledu uivatele systmu jej lze pedevm pout k nalezen
potebnch klvesovch map. Naproti tomu program xkb s e l slou k aktivaci zvo
len klvesov mapy. Jmna dostupnch klvesovch map lze zobrazit klientem
xkb s e l db zavolanm s argumenty - - l i s t - us e r a - - br i e f . Viz pklad.
$ xkbseldb - - l i s t -user - -bri e f I grep c s . * qwerty
c s s k ( c s_qwe rty)
c s s k ( c s_us_qwe rty)
c s s k ( us_c s_qwe rty)

Argumentem - - l i s t - us e r jsou vypsny vechny mapy dostupn uivateli.


Dodaten argument - - b r i e f zapn strun reim, v tomto reimu je zobrazovn
pouze nzev mapy bez dodatench informac. V pedchoz ukzce byly z vpisu
vyfiltrovny mapy obsahujc definici esk amatrsk klvesnice. Klvesovou mapu
je mon okamit aktivovat pomoc klienta xkb s e l . K aktivaci eskch klvesnic je
vak zapoteb mt sprvn nastavenu lokalizan promnnou LC_ CTYPE, pro detaily
8.5. Standardn X klienti 245

o lokalizanch promnnch viz kapitolu 6.5. Pi aktivaci je klientovi xkb s e l poteba


zadat pouze jmno mapy, viz ukzku.

$ xkbs e l - s ' c ssk ( c s_qwerty) '

Zpsob pmho nastaven klvesov mapy z pkazovho dku nen pli ob


vykl a nen ani dostaten prun. Mnohem lep je peddefinovat nkolik klve
sovch map v souboru / . xkb s e l /xkb s e l . conf a klienta xkb s e l spoutt jako
-

reakci na stisk zvolen kombinace klves. Nejpohodlnj je nadefinovat v konfigu


ranm souboru sprvce oken speciln klvesov zkratky, pi jejich stisku se bude
program xkb s e l spoutt.
Obsahem souboru - / . xkb s e l /xkbs e l . c onf je jednak sekce pro definovn
klvesovch map, jednak sekce umoujc pro klvesov mapy definovat zkratky.
Zkratky klvesovch map jsou pouvny napklad i grafickmi X klienty k pehled
nmu zobrazen dostupnch map. V neposledn ad lze pomoc zkratek vytvet
v souboru / . xkb s e l / xkb s e l . conf seznamy dostupnch klvesovch map. Uva
-

ujme napklad soubor - / . xkbs e l /xkb s e l . conf obsahujc nsledujc dky.


$ cat - j . xkbsel /xkbs e l . conf
[ short eut ]
CZ = e s s k ( e s )
CZ_Y = e s s k ( e s_qwe rt
US = x f re e 8 6 ( u s )

[map s e t ]
map [ e s ] = us CZ
map = US cz CZ_Y

dkem [ short cut ] je uvozena sekce zkratek. Zkratky jsou definovny na sa


mostatnch dcch ve tvaru <Jzkratka r> <J mapa r>, kde <J zkratka r> je zstupn nzev
=

definovan pro danou mapu. Druh sekce je uvozena dkem [map s e t ] . Zde jsou
pro jednotliv jazykov prosted nastaveny dostupn klvesov mapy. Na kadm
dku je uvedena definice ve tvaru map<Jjazykr> <J zkratkyr>, kde <Jjazykr> je nepovinn
=

argument uvdn v hranatch zvorkch specifikujc jazykov prosted. Nen-li


argument <Jjazykr> uveden, specifikovan seznam se pouije, pokud aktuln jazykov
prosted neodpovd dnmu z definovanch. Dostupn mapy jsou definovny se
znamem zkratek. Na poad zkratek v seznamu zle - poad ovlivuje cyklick
pepnn klvesovch map.
Nastaven lokalizanch promnnch ovlivuje vbr konkrtn sady klveso
vch map. Poet definovanch klvesovch sad nen nijak omezen, bez problm
lze pouvat i pouze jednu implicitn sadu. V rmci sady lze klvesov mapy
rychle pepnat programem xkb s e l volanm s argumenty - - next dal klve
-

sov mapa a - - previ ous pedchzejc klvesov mapa. Tmto zpsobem lze
-

program xkb s e l spoutt napklad ze sprvce oken pi stisku speciln klvesy


uren k pepnn klvesovch map. Dal alternativou pro pohodln pepnn kl
ves je pouit grafickho X klienta xkb s e l - aw nebo applet urench pro grafick
desktopy GNOME a KDE.
246 Kapitola 8. Grafick siov rozhran

Nkter typy klvesovch map v sob definuj rozloen pro dv klvesnice, pri
mrn a sekundrn klvesnici. Primrn klvesnice me bt napklad standardn
americk klvesnice, sekundrn me bt esk klvesnice. V tomto ppad se kl
vesnice pepnaj soubnm stiskem lev a prav klvesy 1 SHIFT 1 nebo stiskem klvesy
1 SCROLL LOCK I. Svt-li na klvesnici kontrolka SeroU Lock, klvesnice je zapnuta ve svm
druhm reimu. Pokud chce uivatel vloit pouze nkter znaky, me tak uinit
se stisknutou klvesou prav 1 ALT I. Po uvolnn klvesy dojde k obnoven pvodnho
nastaven klvesnice.

Ostatn X klienti
Pi vbru barev me uivateli pomoci X klient xco lors e l umoujc inter
aktivn prohledvn databze barev. Jednotliv barvy jsou bhem vyhledvn zob
razovny, program rovn umouje informovat uivatele o barvch z oken jinch
X klient. Obdobnm programem, zamenm na fonty, je ji uveden xfont s e l .
Po vybrn fontu me uivatel provst zkoprovn jeho logickho jmna d o clip
boardu. To vrazn usnaduje pedvn font jinm aplikacm. X klient xev slou
pro vpis udlost. Jeho slueb lze vyut hlavn pi vyvjen vlastnch X aplikac.
K vvoji jednoduchch aplikac pro X Window lze pout jazyk Tcl/Tk. Jeho autorem
je John K. Ousterhout. Akoliv je tento jazyk ponkud kontroverzn, nelze mu upt
jednoduchost, s jakou se v nm daj vyvjet aplikace. Knihovna Tk byla penesena i do
jinch programovacch jazyk, napklad do jazyk PERL, Python, Scheme a dalch.
Mezi asto pouvan X klienty dle pat prohle manulovch strnek xman
a jednoduch textov editor xedi t . X klient xmag umouje zvtovat vez ob
razovky. X klient xk i l l slou k zasln signl procesm. Po jeho sputn me
uivatel kliknout na okno procesu, jeho bh chce ukonit. K informanm elm
slou X klienti xb i f f, xc lock a xl oad, po svm sputn jsou umstny na koe
novm okn a podvaj informace o pchoz pot, asu a vyten systmu.
Pedchoz X klienti tvo velmi jednoduch standardn softwarov vybaven
X Window. Systm X Window byl navren ped bezmla 20 lety, proto se dnes
ji nkter typy programu jev zastaral nebo pli jednoduch. Na druhou stranu,
je to prv nenronost na systmov zdroje, je umouje X klientm bet i na
vkonov slabch potach. Pokud uivatel ke sv prci potebuje komplexnj
nstroje, me kdykoliv shnout po jednom z integrovanch uivatelskch rozhran
KDE nebo GNOME.
Literatura 247

Literatura
[AWK88] Aho, A. V. - Kemighan, B. W. - Weinburger, P. J. The AWK Programming Language.
Addison Wesley Longman, Inc., 1988.
[Bac86] Bach, M. J. The Design of the Unix Operating System.
Prentice Hall Software Series, 1986.
[Bou82] Boume, S. R. The Unix System.
Addison Wesley Longman, Inc., 1982.
[DR97] Dougherty, D. - Robbins, A. Sed & Awk.
2nd Edition, O'Reilly & Associates, Inc., 1997.
[Kau96] Kaufman, L. - Welsh, M. Running Linux .
2nd Edition, O'Reilly & Associates, Inc., 1 996.
[Ker84] Kemighan, B. W. - Pi ke, R. The Unix Programming Environment.
Prentice Hall Software Series, 1984.
[LLS88] Lewis, B. - LaLiberte, D. - Stallman, R. M. GNU Emacs Lisp Reference Manual.
Edition 2.5, Free Software Foundation, 1998.
f t p : # f tp . l inux . c z / pub/ gnu/manua l s / e l i sp / index . html .
[Mik92] Mikes, S. X Window System. Program Design and Development .
Addison Wesley Longman, Inc., 1992.
[New92] Newham, C. Rosenblatt, B. Learning the Bash Shell
-

2nd Edition, O'Reilly & Associates, Inc., 1992.


[Ope99] Bradner, S. - DiBona, C. - Hamerly, J. McKusick, M. K. - Ockman S. -
-

O'Reilly, T. - Paquin, T. - Perens, B. - Raymond, E. S. - Stallman, R. M. -


Stone, M. - Tiemann, R. - Torvalds, L. - Vixie, P. - Wall, L. - Walton, S. -
Young, R. - Voices from the Open Source Revolution .
O'Reilly & Associates, Inc., 1999.
[Que89] Quercia, V. - O'Reilly, T. X Window System - User's Guide.
O'Reilly & Associates, Inc., 1989.
[Sat02] Satrapa, P. IPv6 .
Neocortex, Praha, 2002.
[Sko98] Skoovsk, L. Unix, POSIX, Pian 9.
Vydal Ludk Skoovsk, Brno, 1998.
[Sob97] Sobell, M. G. A Practical Guide to Linux.
Addison Wesley Longman, Inc., 1997.
[Sta81 ] . Stallman, R. M. The Extensible, Customizable, Self-Documenting Display Editor.
MIT AI Memo, 519a. 1981 .
f tp : #pub l i cat i ons . a i . mi t . edu/ c l a s s i c - hi t s / a i m - 5 1 9 a . p s .
[Sta88] Stallman, R. M. GNU Emacs Manual .
13 th Edition, Free Software Foundation, 1998.
f tp : # f tp . l inux . c z /pub / gnu/manua l s / emac s / index . html .
248 Literatura
Rejstffk soubor 249

Rej stk soubor


Nsledujc pehled soubor slou ke snaz orientaci a vyhledvn informac o d
leitch souborech a adresch v systmu GNU / Linux. Jmna systmovch soubor
jsou uvedena vetn absolutn cesty. V nkterch distribucch GNU / Linuxu se me
umstn soubor mrn odliovat. Pokud jmno souboru zan dvojic znak " / " , -

pedpokldme, e soubor me bt umstn v domovskm adresi kadho uiva


tele. Je-li na t soubor uvedeno vce odkaz, tunm psmem je zvraznna hlavn
strana, na kter je popsn jeho vznam a el.

/bin, 62, 86, 1 1 2 / home, 42, 62, 62


/boot, 62, 62 / l ib /modu l e s, 63
/ dev/ f u l l , 42, 42 / l ib, 63
/ dev / nu l l, 42, 42, 93 /mnt, 63
/ dev / random, 42 / opt, 63, 63
/ dev / z e ro, 42, 42 /proc, 44, 63
/ dev, 42, 62, 62 / root, 63
/ e t c / envi ronment, 169 / sb i n, 63
/ e t c / export s, 194 / tmp, 63, 63
/ e t c / f s t ab, 43, 63, 63 /usr /bin/Xl l / X, 226, 226
/ e t c /group, 49, 64, 194 / u s r / b i n /X 1 1 , 112
/ e t c / hos t . conf, 190 / u s r / b i n, 65, 112
/ e t c / ho s t name, 64 / u s r / doc, 43
/ e t c / ho s t s, 64, 187, 190, 219 / u s r / inc Iude / ne t db . h, 184
/ e t c / i n i t . d, 64, 64 / u s r / inc Iude, 65
/ e t c / i n i t t ab, 64, 64, 229 / u s r / info, 65
/ e t c / i s sue, 64 / u s r / I ib / i sp e l l , 171
/ e t c / Iocal e . a l i as, 169 /usr / l ib, 65, 65
/ e t c /mime . type s, 197 / u s r / Iocal / b i n, 112
/ e t c /motd, 64 / u s r / l ocal, 65, 65
/ e t c /mt ab, 64 / u s r /man/mann, 65, 65
/ e t c /ne twork/ int e rfaces, 182 / u s r / man, 65, 65
/ e t c / n s s w i t c h . conf, 194 / u s r / sb in, 65, 193
/ e t c /pas swd, 49, 51, 64, 147, 194 / u s r / share / d i c t , 144
/ e t c /pro f i l e, 64, 108, 128, 195 / u s r / share / doc, 65
/ e t c / rc S . d, 64 / u s r / share / I o c a l e, 169
/ e t c / rcn . d, 64, 64 / u s r / share, 65, 65
/ e t c / re solv . conf, 190 / u s r / X l l R6, 65
/ e t c / s e rv i c e s , 64, 64, 184, 218 / u s r, 63, 63, 65
/ e t c / shadow, 49, 64 /var / l ib, 65, 65
/ e t c / she l l s, 65 /var / I ock, 65
/ e t c / t e rminfo, 65 /var / I og, 66
/ e t c / X 1 1 / app - de f auI t s, 240 /var/ run, 66
/ e t c /X1 1 / rgb . txt, 236, 236, 237 /var/ spoo l /ma i l, 1 1 1, 199
/ e t c / X 1 1 /XF8 6 Conf ig, 227 /var / spool, 66, 66
/ e t c /X l 1, 65 /va r / tmp, 63
/ e t c, 62, 63 /var, 43, 63, 63, 65
250 Rejstffk soubor

- / . bash_h i s tory, lll


- / . bash_Iogin, 128
- / . bash_I ogout, 129
- / . bash-pro f i l e, 108, 128, 169, 195
- / . ba shrc, 129, 130
- / . caI endar, 84, 84
- / . emac s - us e r, 165, 165
- / . emacs, 165, 165, 167
-/ . forward, 201, 201, 202
- / . gnome / gdm, 228, 228
- / . gnupg, 203
- / . net rc, 211
- / . p I an, 215
- / . procma i l rc, 202, 202
- / . pro f i le, 108, 195
- / . s ignature, 200
- / . s sh/ author i z ed_keys, 213
- / . s sh/ i dent i ty . pub, 213, 213
- / . s sh/ known_ho s t s, 213
- / . Xauthori ty, 233, 233
- / . Xde f au I t s, 241
- / . xini t rc, 227, 227
- / . xkbs e l / xkb s e l . conf, 245, 245
- / . Xre sources, 241
- / . xserverrc, 226
- / . xse s s i on, 226, 226-228, 241
- / b in, 87
- /ma i l, 201
- /pub I i c_html, 220, 220
core, 77, 77, 78, 129
index . html, 220
nohup . out, 81, 81, 95
we I come . html, 220
Rejstk pojm 251

Rej stk pojm


V tomto rejstku jsou uvedeny odkazy na dleit pojmy. Nkter frze zde nalez
nete hned v nkolika tvarech, tato organizace rejstku umouje snaz vyhledvn
v knize. Rejstk obsahuje i seznam zdokumentovanch obslunch program, p
kaz a promnnch shellu, znmch voln jdra a bn pouvanch signl.

A -- promnn, 105 c1ipboard, 234, 242


-- translace, 239 cyklus, 1 13, 1 1 7
absolutn cesta, 30, 87, 121
-- vymezen, 234
account, 14
-- zdroje, 234
ACL, 56
autentizace, 6, 14, 209
aditivn skldn, 236
autoritativn odpov, 1 89

adresa, 145, 1 83
autorizace, 231, 232 asov psmo, 20
-- podst, 181
autorizan kl, 233 asov
-- potovn, 196
-- drift, 192
-- rozhran, 1 80
-- posun, 81
-- st, 1 80
adres, 29
B esk klvesnice, 244
slo
-- domovsk, 32 background, 73
-- displaye, 226
-- exportovan, 194 backtrace, 77
-- GID, 48
-- pracovn, 31, 32 balek, 10
-- jdra, 8
-- przdn, 36 balk, l O
-- obrazovky, 226
-- rodiovsk, 30 bang notace, 196
-- PID, 68, 72, 109
-- speciln, 32 barva, 236
-- PPID, 72
adrest, 196 bc proces, 72-74
bn uivatel, 14 -- dku, 145
agregovan pkaz, 91
binrn reim, 210 -- signlu, 77
aktivn reim, 21 1
bitov rovina, 227 -- UID, 48
aktuln shell, 91
blok, 41 len skupiny, 50
alias, 129, 239
alternativa, 141 blokov zazen, 41
alternativn vtev, 1 1 6, 1 1 7 boolean, 236
analyztor, 140 bootloader, 42 D
anonymn FTP, 209 broken link, 45 daemon, 16, 69
aplikan log, 66 buffer, 157 data
apostrofy, 103 -- binrn, 132
argument, 19, 86, 1 23, 126 -- textov, 132
-- pepna, 19 C -- vstupn, 92
-- vstupn, 126 cache server, 1 89 -- vstupn, 92
archivace, 1 72 celoobrazovkov editor, 133, databze
ASCII kd, 132 151 -- atribut, 240
atomick pkaz, 91 cesta -- map, 244
atribut, 234 -- absolutn, 30, 87, 121 datagram, 1 79, 183
-- barva, 236 -- prohledvac, 86, 106, 121 datov
-- font, 237 -- prohledvan, 88 -- soubor, 26, 27
-- geometrie, 239 -- relativn, 32, 87, 121 -- tok, 96
-- hodnota, 234 -- stov, 195 -- typ, 236
-- pixmapa, 239 -- vzdlen, 214 -- -- barva, 236
252 Rejstfk pojm

- - boolean, 236 E - stnov, 49, 64


- - font, 237 heterogenn prosted, 195
editor, 122, 131
debugger, 77 hierarchick struktura, 28, 68,
- celoobrazovkov, 133, 151
decentralizace, 1 77 1 87
- proudov, 1 33
deklarace, 1 05 hlavika
efekt
dekomprese, 1 75 - dopisu, 196
- frustrace, 4
dereference promnn, 105 - skriptu, 121
- zakryt, 42
deskriptor, 92 hlavn md, 157
efektivn uivatel, 69, 71
desktop, 225 hledn soubor, 88
elektronick
diakritika, 197 hodnota
- konference, 205
diferenciace dat, 25 - atributu, 234
- pota, 196
digitln podpis, 203 - promnn, 1 06
elektronick dopis, 196
diskov horizontln rozdlen, 161
emultor terminlu, 6, 228
- kvta, 27, 61 hostitel, 16, 1 77
escape character, 208
- oblast, 26 - lokln, 181, 221
expanze jmen, 99
- vzdlen, 221
- - diskov, 26 expirace, 233
hostitelsk jmno, 1 87
- - statick, 26 export
hostitelsk uzel, 1 77
diskusn listy, 205 - adrese, 194
- moderovan, 205 - promnn, 1 08
- nemoderovan, 205
- oteven, 205 CH
- uzaven, 205 F charakter
display, 222, 226 - plohy, 198
fileserver, 194
- manager, 226, 227, 230 - zmny, 136
filtr, 92
distribuce, 1 0 chyba, 223
fingerprint, 213
- nativn, 1 1
font, 237
- nestabiln, 1 1 - server, 237
- stabiln, 1 1 foreground, 73 I
- testovac, 1 1 formt XPM, 239 i-node, 27
- zmrazen, 1 1 frame, 157 identifikace
doba odezvy, 1 82 funkce, 126 - displaye, 226
dodaten informace, 86
- procesu, 68
dokonen spojen, 1 86
identifiktor
domna G - procesu, 74
- generick, 1 88, 191
generace jdra, 8 - lohy, 82
- koenov, 1 88
generick domna, 1 88, 191 inbox, 198
- prvnho du, 1 88, 191 indexov soubor, 220
- reverzn, 190 geometrie, 239
- oken, 224 informace dodaten, 86
- sttnho zem, 1 88 inicializan skript, 128
globln promnn, 1 1 8
domnov jmno, 187 - systmov, 1 28
grafick rozlien, 229
domovsk adres, 32 - uivatelsk, 128
group, 50
dopis, 196 instance programu, 242
doplnk, 100 instrukce, 145
download, 209 interaktivn
- rekurzivn, 219 H - program, 98
drift, 192 hard link, 45 - reim, 40
driver, 2 heslo, 14, 203 - shell, 129
Rejstfk pojm 253

interpret klvesa libovoln posloupnost, 144


- pkaz, 6 - nikov, 208 limit, 62, 78, 1 29
- skriptu, 121 klvesnicov makro, 1 64 limitn podmnka, 1 1 7
I P adresa, 1 80 klvesov mapa, 244 link, 34
- privtn, 181 kl, 233 list, 29
- speciln, 181 - privtn, 203 local
iterace, 1 1 8 - veejn, 203 - broadcast, 181
klient, 1 87, 194, 223 - login, 14
klientsk poadavek, 223 log, 66
J kdov strnka, 132, 167, 1 69,
1 70
- aplikan, 66
- systmov, 66
jdro, 6, 7 kdovn, 158, 167, 197 logick
- generace, 8 - plohy, 197 - popis, 237, 239
- nestabiln, 8 kolona, 96 - souet, 1 1 0
- poadov slo, 8 - uzaven, 97 - souin, 57, 59, 1 1 0
- stabiln, 8 koment, 121 login shell, 1 7, 85, 128
- subgenerace, 8 komprese, 1 72 lokalizace, 1 68
jazyk, 1 69 - dat, 1 74 lokalizan kategorie, 1 68
jazykov prosted, 228 - neztrtov, 1 74 lokln
jednorzov sputn, 82 - ztrtov, 1 74 - hostitel, 221
jednotka vykonvn, 68 komunikace, 222 - oznmen, 181
jmno - lokln, 223 - pihlen, 14
- atributu, 235, 236 - meziprocesov, 1 85 loopback, 181
- displaye, 233 - nelokln, 1 85
- domnov, 1 87 - vzdlen, 223
- hostitelsk, 1 87 komunikan pod st: 1 77 M
- mdu, 158 konec dku, 144
- nepln, 99 major
konkatenace, 141
- objektu, 234 - mode, 157
kontext, 67, 68, 150
- przdn, 188 - number, 42
kontextov reim, 136
- promnn, l OS, 1 06 makro, 164
konzument 96, 1 85
- souboru, 27 - klvesnicov, 1 64
koprovn soubor, 39
- symbolick, 187 - pojmenovan, 165
korekturn program, 171
journaling, 27 manulov strnka, 21
koen, 28-30
mapa klvesov, 244
koenov domna, 188
mark, 154
koenov okno, 224
maska, 55, 60
K koenov
- podst, 181
- adres, 30
katalog zprv, 1 68 mtoha, 78
- souborov systm, 42
kategorie, 1 68 merge, 134
kryptografie, 203
- lokalizan, 1 68 metadata, 27
kurzor, 239
- uivatel, 50, 56 meziprocesov komunikace,
kvantifikace jmen, 99
- - ostatn, 50 95
kvta, 27, 61
- - skupina, 50 minibuffer, 158
- - vlastnk, 50 minor
- znak, 142 - mode, 158
kernel, 6
L - number, 42
- thread, 69 ladic reim, 1 1 3 mra komprese, 1 74
killring, 1 62 lhta, 62 mnoina znak, 1 00
254 Rejstk pojm

mnoinov doplnk, 100 odeslatel dopisu, 197 podst: 181


md pstupu, 52 odkaz, 34 pojmenovan roura, 98, 185
modifikace textu, 154 - pevn, 45 pojmenovan makro, 165
modul, 63 - symbolick, 45, 56 popis font, 237
- jdra, 63 odpov port, 1 79, 184, 1 85
- autoritativn, 1 89 poad oken, 224
- neautoritativn, 189 posloupnost znak, 100, 132
N - serveru, 223 pota, 196
odstavec, 153 potovn
nabdka, 125, 224 okno, 157, 221, 224 - adresa, 196
nhodn pstup, 41 opakovan proveden p- - klient, 198
nahrazovn, 155 kazu, 165 - server, 198
naruen odkaz, 45 operan systm, 1 potlaen
nslednk, 29 oprava textu, 154 - expanze, 101, 143
naslouchn, 1 86 opravn soubor, 136 - vstupu, 92
nvratov hodnota, 126 organizace dat, 67 pozastaven proces, 72-74
nzev ostatn, 50, 57 pozice zmny, 136
- bufferu, 158 oteven soubor, 92 poadavek klientsk, 223
- zstupn, 245 others, 50, 57 pracovn adres, 31, 32
neautoritativn odpov, 1 89 otisk, 213 pravda, 236
neinteraktivn shell, 129 ovlada, 2 prvo
nepravda, 236 owner, 50 - ten, 50
nerekurzivn peklad, 1 89
- execute, 50-52
nestabiln srie, 8
- maska, 55
nestavov charakter, 218 p - read, 50, 51
network
package, lO - SGID, 51
- address, 181
pager, 224 - spoutn, 50
- broadcast, 181
pam sdlen, 78 - SUID, 51
- mask, 181
pasivn reim, 2 1 1 - write, 50, 51
nepln jmno, 99
patch, 136 - zpisu, 50
neveejn FTP, 209
periodick sputn, 83 przdn
neviditeln soubor, 31
pevn odkaz, 45 - adres, 36
neztrtov komprese, 1 74
pipe, 96 - pkaz, 151
nosi dat, 25
pixel, 222 - dek, 144
notace
pixmapa, 239 - etzec, 132, 141
- modern, 141
plain text, 132 primrn
- star, 141
pln, 215 - prompt, 1 1 2
plnova, 67 - server, 1 89
plnovan spoutn, 81 - skupina, 48, 49
o primitivum, 222
poet
objekt, 234, 235 - blok, 61 priorita, 76, 90, 235
- aplikace, 235, 242 - soubor, 61 - procesu, 76
oblast, 163 potaov st: 15 - snen, 76
obrazovka, 222 podadres, 30 privtn kl, 203
obsah promnn, 105 podmnn pkaz, 1 13, 1 1 6 privilegovan reim, 2
obslun program, 6, 86 podobjekt, 234 proces, 2, 5, 67
oddlova, 91, 137 podpis, 200, 203 - identifiktor, 74
- pkaz, 1 1 0 podzen shell, 91 - na poped, 73
Rejstfk pojm 255

- na pozad, 73 - dd, 42, 138, 138, 139 - ln, 45, 45, 46


- nezvisl, 80 - de compre s s, 174 - loca l e, 169
- priorita, 76 - df, 61, 64 - l ocate, 89, 89
- pesunut, 74 - di f f, 136, 136, 167 - l s, 31, 34, 34, 35, 47, 51, 54,
- rodiovsk, 68 - di rcolors, 130 55, 57, 67-69, 86, 90-92,
- stavy, 72 - do s 2 unix, 170 101, 109, 130, 214
- - bc, 72-74 - du, 36, 36, 37 - ma i l, 120, 199, 199
- - pozastaven, 72-74 - ed, 136, 145, 150, 150, 151 - make, 166
- - spc, 72 - egrep, 143, 143, 144, 146 - man, 21, 21, 65, 80
- synovsk, 68 - echo, 101, 101, 104, 106, - me sg, 216, 216
- systmov, 69 1 18, 123, 125, 128, 200, - mkdi r, 35, 35, 36
- uivatelsk, 69 217 - mk f i fo, 98, 98
- vedouc skupiny, 71, 80 - e l m, 199, 199 - mknod, 42, 98
procesorov as, 5 - ex, 151, 151 - more, 38, 38, 112
producent, 96, 185 - f a l s e, 110, 1 1 0 - most, 38, 38
program, 67, 86, 121 - f e t chma i l , 201, 201, 202 - mount, 43, 43, 44
program obslun, 86 - f i l e, 37, 37, 46 - mut t , 75, 199, 199, 200
programy - f i nd, 88, 88-90, 94, 98, 99, - mv, 39, 39, 40
- / sbin/ ini t, 42, 42, 64, 105, 174 - ni ce, 76, 76
70, 76, 79, 229 - f i nger, 20, 20, 215 - nn, 206
- apropos, 21, 21 - f tp, 209, 210, 211 - nohup, 80, 80, 81, 95
- arj , 176 - f2, 224, 228 - n s l ookup, 191, 191
- atd, 81, 82 - f9 5, 224 - ntpda t e, 192, 193
- atq, 82 - fv, 224, 224, 228 - pager, 80, 1 1 2
- at rm, 82 - gdm, 228, 228, 229 - passwd, 21, 21, 51
- at, 81, 81, 82, 219 - ge t f a c l , 57, 57 - pas t e, 137, 138, 144
- awk, 148, 148-150 - get ty, 229 - patch, 136, 136, 137
- bash, 68, 69, 71, 80, 86, - gpg, 203, 203 - pax, 174
107, 128 - grep, 97-99, 143, 143, 146 - p i ne, 206
- bi tmap, 244 - groups, 49 - p i ng, 182, 182
- b z ip2, 174, 174-176 - gz ip, 31, 73, 80, 174, 175, - procma i l, 202, 202
- c a l c, 98, 118, 120 176 - ps, 70, 70-72, 80
- c a l endar, 84, 84 - head, 38, 94, 133 - pwd, 33, 33, 1 1 5
- cal, 84, 84 - hos t name, 104 - quot a, 61
- cat, 38, 38, 94, 95, 97-99, - host, 191, 191 - rar, 176
1 1 0, 1 18, 122, 128, 133, - chgrp, 50, 50, 55 - recode, 171, 171
138 - chmod, 52, 52, 53, 55 - reni c e, 76, 76
- c f tp, 211 - chown, 50, 50, 55 - rmdi r, 36, 36
- cmp, 135, 135 - inetd, 207 - rm, 39, 40, 46
- comm, 135, 135 - info, 23, 23, 24, 167 - rxvt, 242, 242, 243
- compre s s, 174 - i spe l l, 171, 171, 1 72 - s cp, 214, 214
- conve rt, 244 - kdm, 228, 228 - sed, 97, 1 19, 141, 145, 145-
- cp, 39, 39, 40, 46, 56, 214 - k i l l a l l, 78, 79 150, 156, 214
- c ront ab, 83, 83 - k i l 1 , 78, 78, 120, 229 - s e t f ac l , 58, 58, 60
- c ron, 83, 83, 84 - l e s s, 38, 38, 97, 130 - s l eep, 90, 90, 91
- c s t o c s , 170, 170 - l f tp, 211 - socket, 185, 185, 186
- cut, 137, 137, 138, 149 - lha, 176 - sort, 98, 134, 134, 135
- date, 20, 20, 92, 97 - l inks, 219 - sp l i t, 139, 139
256 Rejstfk pojm

- s s h - keygen, 213 - xedi t, 240, 246 - PATH, 106, 122, 195


- s sh, 212, 212-214, 231 - xev, 246 - p S 3 , 125
- s t a rtx, 226, 226, 227, 233 - xfont s e l , 239, 240, 246 - pS4, 113
- s t ty, 125 - xgamma, 244 - PWD, 1 15, 122, 128
- syml inks, 46, 47 - xho s t , 232, 232 - REPLY, 126
- t a i l , 38, 38, 94, 97, 134 - xinit, 226, 226, 227, 233 - RESULT, 119
- t a l kd, 216 - xkb s e l - aw, 245 - SHLVL, 112
- t a l k, 216, 216 - xkb s e l db, 244, 244 - TERM, 18
- t ar, 31, 61, 172, 172-1 76, - xkb s e l , 244, 244, 245 - UID, 128
186 - xki l l, 246 - USER, 128
- tee, 97, 97, 128 - x l oad, 246 - BASH_ENV, 129
- t e lnetd, 207, 207 - xmag, 246 - CDPATH, 111
- t e l net, 207, 207-209, - xman, 231, 235, 240, 241, - D I S PLAY, 231
212, 213, 231 246 - EDI TOR, 111
- t e s t, 114, 114, 1 15 - xrdb, 240, 241 - H I S T F I LES I ZE, 111
- t ime, 71 - x s e t root, 243, 244 - H I ST F I LE, 111
- t op, 72, 73 - xset, 243, 243 - HI STS I ZE, 111
- t ouch, 116, 1 1 6 - xterm, 227, 235, 242, 242, - HOME, 111
- t racepath, 182, 183 243 - HOSTNAME, 111
- t raceroute, 183 - ypcat, 193, 194, 194 - HOSTTYPE, 111
- t ree, 35, 35 - yppa s swd, 21, 193, 194 - LANG, 168
- t rn, 206 - z ip, 176 - LC_ALL, 111
- t rue, 110, 1 10 - z oo, 176 - LC_COLLATE, 168
- t r, 148, 148 prohledvac - LC_ CTYPE, 168
- twm, 227, 228 - cesta, 86, 106, 121 - LC_MES SAGES, 168
- umount, 43, 44 - podmnky, 88 - LC_MONETARY, 168
- uniq, 134, 134, 135 promnn, 105, 168 - LC_NUMERI C, 168
- unix2 dos, 170 - atributy, 105 - LC_T IME, 168
- upt ime, 20, 90 - exportovan, 108 - LD_L IBRARY_PATH, 195
- vim, 152, 156 - globln, 1 1 8 - LS_COLORS, 130
- vi, 151, 151, 152, 154, 156, - hodnota, 106 - MAILCHECK, 111
163 - jmno, 105, 106 - MAI LPATH, 111
- wc, 39, 97-99, 134 - obsah, 105 - MAI L, 111
- wget, 219, 219, 220 - pro ten, 105, 109 - OSTYPE, 111
- what i s , 21, 21 - speciln, 105 - PAGER, 111
- whe re i s, 88, 88 - uivatelsk, 105 - PATH, 112
- whi ch, 88, 88 - vnitn, 105 - P S I , 112
- whoami, 19, 19 promnn shellu, 91, 105 - PS2, 112
- who, 19, 19, 22, 90, 92, 97 promnn shellu - P S 3 , 113
- wmaker, 228 - D I S PLAY, 231 - PS4, 113
- wri t e, 216, 217 - HOME, 115 - PWD, 112
- w, 19 - HOSTNAME, 195 - RANDOM, 112
- xargs, 105, 105 - HOSTTYPE, 195 - RE PLY, 125
- xauth, 232, 232, 233 - LANG, 168, 169 - RESULT, 119
- xb i f f, 246 - LC_ALL, 168, 169 - RUNLEVEL, 112
- x c l ock, 246 - LC _ CTYPE, 168, 244 - SHLVL, 112
- xco l o r s e l , 246 - LS_COLORS, 130 - TERM, 112
- xdm, 228, 228 - MAILCHECK, 1 1 1 - UID, 112
Rejstk pojm 257

- USER, 112 - spolehliv, 185 - return, 125, 126, 126


prompt, 17, 1 1 2 penositelnost, 4 - s e l e c t , 1 1 3, 125, 125, 126
- primrn, 1 1 2 pepna, 19 - s e t , 111
- pro ladn, 1 13 pepnut kontextu, 68 - shi f t , 124, 124
- pkazu s e l e c t , 1 1 3 pesmrovn, 73, 92, 127 - u l i m i t , 129
- sekundrn, 1 1 2 - vstupu, 92 - uma sk, 56, 56, 57, 86
propojovac prvky, 1 77 pesunut - una l i a s, 129
prost text, 132 - na pozad, 74 - uns e t , 106
protokol, 1 79 - souboru, 40 - unt i l, 118, 1 1 9
- FTP, 209 pidlovn - whi l e , 118, 1 19, 120
- HTTP, 1 79, 208, 217 - dynamick, 1 82 ploha, 197
- ICMp, 1 82 - statick, 1 82 piazen hodnoty, 1 05
- IMAp, 199 pihlen, 207 pstup nhodn, 41
- IP, 1 79 - lokln, 14 pstupov prva, 27
- IPng, 1 83 - vzdlen, 14 pstupov protokol, 233
- IPv4, 1 83 pihlaovac
- IPv6, 1 83 - protokol, 16
- NNTP, 206 - shell, 128 R
- NTP, 192 pkaz, 86
rmec, 157
- POP, 199 - agregovan, 91 rastrov zazen, 221
- pihlaovac, 1 6 - atomick, 91 reakce
- pstupov, 233 - cyklu, 1 1 3 - na kontext, 150
- SMTP, 1 79, 196 - kolona, 96 - na signl, 77
- SSH, 16, 212 - podmnn, 1 13, 1 1 6 region, 163
- SSL, 219 - przdn, 1 5 1 registr, 162, 1 63
- TCp, 1 79, 1 85 - pesunu, 154 regulrn vraz, 38, 102, 1 19,
- TCP l IP, 1 78, 1 84 - sputn, 1 8 140, 145, 154, 202
- Telnet, 16, 234 pkazov - modern, 141
- UDp, 1 79, 1 84 - interpret, 6, 85 - rozen, 140
- UUCP, 1 78, 196 - - promnn, 105 - star, 141
- X, 223 - reim, 7, 151, 152 rekurzivn
- XDMCP, 230 pkazy shellu - download, 219
- XLFD, 237 - a l i a s, 129 - peklad, 1 89
proudov editor, 133 - bg, 74, 74, 75, 79, 86 - reim, 214
pedn argumenhl, 86 - bre ak, 119, 1 25 - vpis, 35
pedchdce, 28, 29 - case, 117, 1 1 7 relativn cesta, 32, 87, 121
pejmenovn souboru, 40 - c d, 33, 33, 34, 36, 86, 1 1 1 remote login, 14
peklad - cont i nue, 119 resolver, 1 89
- adres, 1 82 - exit, 18, 1 8, 86, 126 resource, l
- nerekurzivn, 1 89 - exp ort, 108, 108, 127 reverzn
- rekurzivn, 1 89 - f g, 75, 75, 86 - domna, 190
- znak, 148 - for, 118, 1 1 8, 1 19, 125, - peklad, 190
pekrvn oken, 224 148, 149 reim
penos, 1 70 - i f, 116, 1 16-1 18 - aktivn, 2 1 1
- dat, 1 86 - l e t , 120, 1 20 - binrn, 2 1 0
- nespojovan, 1 83 - l ogout, 18, 1 8, 86 - interaktivn, 40
- nespolehliv, 1 83 - readon l y, 109, 109 - jednouivatelsk, 13, 70
- spojovan, 1 85 - read, 125, 1 25 - ladic, 1 1 3
258 Rejstffk pojm

- pasivn, 2 1 1 - cache, 189 skldn barev, 236


- poslednho dku, 1 5 1 - primrn, 189 skript, 85, 121, 147
- pkazov, 7 , 151, 152 - sekundrn, 189 - hlavika, 121
- rekurzivn, 214 - souborov, 194 - inicializan, 1 28
- dkov, 208 session, 5, 228 - tlo, 121
- sputn shellu, 128 sezen, 5, 228 skupina, 48, 57
- textov, 210 - soubn, 5 - primrn, 48
- vceuivatelsk, 13, 70 seznam - proces, 80
- vkldac, 151, 152 - argument, 145 slit, 134
- znakov, 208 - nabdek, 125 slouen dk, 154
rodiovsk proces, 68 - zen pstupu, 56 sluba
root, 14, 30 shell, 6, 7, 85 - 88S, 217
roura, 78, 96, 98, 185, 201 - interaktivn, 129 - DNS, 187
- pojmenovan, 98, 185 - nadzen, 108 - neifrovan, 16
- uzaven, 97 - neinteraktivn, 129 - NFS, 194
rozdlen, 161 - podzen, 1 08 - NIS, 193, 194
rozhran, 1, 3, 225 - pihlaovac, 128 - ifrovan, 16
- stov, 185 - reim sputn, 128 - WWW, 217
- uivatelsk, 3, 225 shutdown, 79 smrovn, 1 77
rozlien, 229 scheduler, 67 snen priority, 76
runlevel, 64 schrnka, 234, 242 socket, 78, 99, 185
- halt, 64 signl, 75, 77 softwarov rozhran, 1
- reboot, 64 signly soubn sezen, 5
- SIGA8RT, 77 soubor, 4, 26, 27
- SIGALRM, 77, 90 - adm. informace, 27
- SIGCONT, 77, 79, 120 - adresov, 29
- SIGFPE, 77 - binrn, 38
dek, 132
- SIGHUP, 77 - data, 27
- stavov, 158
- SIGCHLD, 77, 78 - datov, 26, 27
- ukonovn, 1 70
- SIGILL, 77 - hard link, 45
dkov reim, 208
- SIGINT, 77 - jmno, 27
eitel, 189
- SIGKILL, 77, 78, 79 - kvantifikovan, 99
etzec, 132
- SIGPIPE, 77, 97 - link, 34, 45, 56
- znak, 105
- SIGQUIT, 77 - metadata, 27
zen pstupu, 56
- SIGSEGV, 77 - neviditeln, 31
- SIGSTOP, 77, 78, 79, 162 - obsah, 27
- SIGTERM, 77, 79 - opravn, 136
s - SIGTRAP, 77 - oteven, 92
screen, 222 - SIGUSR1, 77 - reference, 32
sdlen pamt: 78 - SIGUSR2, 77 - sdlen
sdlen t, 193 signatura, 200 - - metadat, 45
sekce dokumentace, 21 s - - obsahu, 45
sekundrn - potaov, 1 77 - speciln, 26, 41, 98
- prompt, 1 1 2 - terminlov, l 77 - spustiteln, 34, 86
- server, 189 stov cesta, 195 - symbolick link, 45, 56
separtor, 91 stov - textov, 37, 132
serializace, 138 - oznmen, 181 - vlastnk, 27
server, 187 - rozhran, 185 - vstupn, 93
Rejstk pojm 259

- vstupn, 93 symbolick - tdn, 134


souborov - link, 45, 56 textov
- server, 194 - nzev, 236 - editor, 122, 131, 133
- systm, 26, 27 - odkaz, 45, 56 - - celoobrazovkov, 131
- - koenov, 42 synchronizace asu, 192 - reim, 21O
- - reln, 28 synovsk proces, 68 - soubor, 132
- - virtuln, 28 systm, 7 thread, 68
souin logick, 57, 59 - distribuovan, 4 timesharing, 5
speciln - interaktivn, 3 tok datov, 96
- adres, 32 - maker, 1 64 translace, 239
- buffer, 155 - makrojdrov, 3 tda objekt, 234, 235
- soubor, 26, 41, 98 - mikrojdrov, 3 tdn, 167
spc proces, 72 - monolitick, 3 - dk, 134
spoje, 1 77 - multiprocesov, 3, 5 tdy adres, 1 80
spojen, 1 86, 230 - multiuivatelsk, 3, 5 typ
sprva - neinteraktivn, 3 - adresy, 1 83
- udlost, 222 - operan, 1 - plohy, 197
- zdroj, 222 - proces, 67 - sezen, 228
sprvce oken, 122, 224, 245 - souborov, 26
sputn programu, 18 - vcelohov, 4, 5
stabiln srie, 8 - vceuivatelsk, 4, 5 U
standard - zdroje, 1
et, 14
- ACL, 56 systmov zdroje, 1
- sdlen, 193
- 150, 1 32 systmov
udlost, 222, 223
- MIME, 1 96, 197 - as, 20
- chyba, 223
- POSIX, 4, 48 - log, 66
loha, 5
- SVID, 4 - proces, 69
uniformn loktor, 218
- UTF, 132 - um, 42
uniktn dky, 134
- XPG3, 4 - uivatel, 14
nikov klvesa, 208
standardn upload, 209
- chybov vstup, 92 v upovdan reim, 41
- vstup, 92, 1 27 S rove startu, 64
- vstup, 92 utilities, 6
ifrovn, 203
stavov dek, 158 uvozovky, 1 03
ifrovan kanl, 214
stnov heslo, 49, 64 uzaven
strnka kdov, 167, 1 69, 1 70 - kolona, 97
stratum, 192 - roura, 97
strom, 29 T uzel, 29
- adres, 29 tabulka deskriptor, 92, 98 - vnitn, 29
struktura adres, 29 tlo uivatel
subdomna, 1 88 - dopisu, 196, 197 - bn, 14
subgenerace jdra, 8 - skriptu, 121 - efektivn, 69, 71
substituce terminl, 3, 5, 6 - root, 14
- podle vzoru, 146 - emultor, 6 - systmov, 14
- etzce, 146 - hard-copy, 7 uivatelsk
superuivatel, 14 text, 132 - funkce, 126
symbolick prva, 52 - prost, 132 - maska, 55, 60
symbolick jmno, 1 87 - slit, l34 - nabdka, 224
260 Rejstfk pojm

uivatelsk vyhledvn, 154 zavad, 42


- jmno, 14, 48 vmaz souboru, 40 zznam, 56
- rozhran, 3, 225 vmna dat, 1 77 - implicitn, 60
uivatelsk vymezen atributu, 234 - nastaven, 58
- limit, 78, 129 vpis rekurzivn, 35 - odejmut, 58
- proces, 69 vypren kle, 233 - operace, 58
- et, 49 vraz regulrn, 38, 102, 1 19, - zmna, 58
140, 145, 154, 202 zdroje, 1, 222
vez textu, 242 zdrojov kd, 9
v vstupn zkratka, 245
- data, 92 zmna obsahu, 105
vedlej md, 158
- soubor, 93 znaka, 154, 155
vedouc skupiny, 71
vytvoen zplaty, 136 znak, 131
verbose mode, 41
vyuit jednotky, 62 - nvrat vozku, 1 70
vertikln rozdlen, 161
vzdlen cesta, 214 - nov dek, 132, 1 70
veejn kl, 203 - okrajov, 137
vzdlen pihlen, 14, 207
vta, 153 - tabultor, 132
vzdlen
virtuln plocha, 224 znakov zazen, 41
- hostitel, 221
vkldac reim, 151, 152 znakov reim, 208
- pstup, 177
vlkno, 68 vzor, 1 1 7, 143 zobrazovac zazen, 222
- jdra, 69 zombie, 78
vlastnick skupina, 57 zptn smyka, 181
vlastnk, 48, 50, 57
w zpracovn sloupc, 137
- souboru, 27, 50, 57 zetzen, 141
vnitn uzel, 29 whitespace, 1 8
ztrtov komprese, 174
voln window, 157
- funkce, 1 27 - manager, 224
- jdra, 7, 70
_c l one ( ) , 68
- - a l a rm ( ) , 90 x dost, 230
- - execve ( ) , 68, 69, 80 ivotn cyklus, 2
X, 222
- - exi t ( ) , 74
- klient, 223
- - f ork ( ) , 68, 68, 69, 80,
- protokol, 223
92
- server, 222
- - mknod ( ) , 98
- - pause ( ) , 90
- - p ipe ( ) , 96
- - setpgrp ( ) , 80, 80 z
- - wa i t ( ) , 78, 78 zatek dku, 144
vrstevn architektura, 25, 1 79, zakryt, 42
222 zplata, 136
vrstva zarovnvn, 159
- aplikan, 1 79 zazen
- stov, 1 79 - blokov, 41
- stovho rozhran, 1 79 - rastrov, 221
- transportn, 179, 184 - znakov, 41
vstupn zasln zprv, 78
- data, 92 zstupn nzev, 245
- soubor, 93 zsuvka, 78, 99, 1 85
Dal knihy z nabdky nakladatelstv Computer Press

K0734 264 stran K0740 96 stran+CD-ROM


Jon Lasser: Su SE:

Rozumme U nixu Linux SuSE 8.1 CZ


249 K CD a Uivatelsk
K n i h a Rozumime U n i x u je urena pruka
ve m , kdo j i maji z k u enosti
145 K
napklad se systmem Windows
Operan systm a vbr a p l i kaci
a c htj pejit na Unix, tedy n a systm s neuvitelnou
pro prci i zbavu. Pro snad nost pouiti ureno pede
flex i b i l itou . K spnmu pechodu na Unix je vak
vm zatenkm ( l ze spoutt pimo z CD!l, neurazi
teba se tento systm nejen nauit, ale zat v nm
vak ani profes i o n l n i u i vate l e . O b s a h uj e mj .
vce i mn uvaovat". A prv do tohoto druhu
" kancelsk balk OpenOffice, esk grafick prosted
uvaov n " vs poutav vth n e Jon Lasser, autor
" KDE 3 , i n ternetov prohl e Kon q ueror, potovn i
Rozumme Unixu. Kniha je vak vhodn pro pokrole
k l ient K M a i l , pl nova KOrganizer, b e z peen fi rewa l l ,
j uvatele, kte dky n mohou pochopt U n x v cel
programy pro zpracov n fotek , h r y a dali.
jeho i, poznat jeho podstatu a zdokonalit se ve
vech i n nostech s Unixem spojench. V jednotlivch
stech k n i hy ten nalezne vod do ..filozofie" U n i x u ,
problematiku soubor a proces, adres, absolut
n c h a re lativnch cest, uivatel a skupin, ps K0819 1 0 1 6 stran *
tupovch prv, interpret pkaz, systmu X Window,
kolektiv a utor:
grafickch uivatelskch prosted atd.
Linux
Dokumentan pro
jekt, 3 . aktua lizo
K0812 552 stran
van vYdn
H u g h E. W i l l i a m s , David Lane:
890 K'
PHP a MySOL
L i n u x Documentation Project ( L D P ) j e z k l a d n i m
Vytvme webov a n ej p o d ro b n j m manulem, zd roj e m n fo r m a c i ,

databzov aplikace praktickch nvod i expertnch tip pro p r c i s ope


ranm systmem Linux a jeho hlavnmi a p l i kacem i ,
=
490 K
kter vznik a vyvj se podobn j a ko systm sm: zs
S k r i ptova c jazyk PHP nachz luhou irokho a utorskho kolektivu pod otevenou
pln uplatnn a v kombinaci s data bzovm sys licenci GPL. Pinme vm j teti vyd n eskho
tmem MySQL. K n i h a prestiniho nakladatelstvi O'Reilly pekladu nejd leitjch st LDP - erstv aktual izo
sez n a m uje zanajc a sten znal tvrce web se van dle stavu ori g i n l u , ale tentokrt i obsahov
z k l a d y obou tec h n o l o g i a s p r i n c i py f u n g ov n vrazn pepracova n v souladu s vvojem Linuxu
dynamick i nternetov a p l i kace. Postupy procvite n a a jeho rozenm do oblasti vyuit vol nho asu
ukzkov a plikaci, dostatek informaci z rote n e b o s poitaem. Krom povinnch" sti o uivatelsk
"
kdykoli doh ledte p i tvorb, zabezpeeni a d rb prci a a d m i n istraci zde najdete nov sti vnova n
vaich a p l i kaci. tisku, tvorb softwa r u , peChodu z W i n d ows,
zabezpee n i , modem m , font m , zvuku, MP3,
pouv n digit l n ich fotoapart nebo DVD.

* Pedbn daje.
K0797 1 68 stran + CD-ROM K0557 1 1 12 stran
SuSE: Neil Matthew,
Richard Stones a kol . :
OpenOffice
Uivatelsk pruka Linux

1 97 K Prog ramujeme
. --

i;;';;.o:,
;; "" Q::. Baliek obsa h uje populrn sadu
profesionln
k a n c e l s k c h prog ra m 990 K
OpenOffice a obs hlou pi ru k u , kter v s n a u
Kniha pro prog ramtory v CI C++, kte si chtj rozit
vytvet a upravovat dokumenty v obsaench pro
sv znalosti v prosted Linuxu. Vysvtl uje pouit CVS,
gramech: texty, t a b u l ky, prezentace a obrz ky.
prci a propojen s Postg reSQL a MySQL, tvorbu
Programy OpenOffice maj dostatek funkc a sta n
rozhra n pod GTK+/ G N O M E a K D E , vod do RPC
d a r d n ovldni, doku menty v nich vytv en t a k
a CORBA, vyuit PHP, XML, zklady skriptov n v jazyce
potebnou kompati b i l itu s Wordem, Excelem a dalmi
Python, profes i o n l n testov n i a p l i kaci, vytv en
bn uva nmi prod u kty. Na piloenm CD je pln
balk pro d i st r i b u c i pomoci Red Hat Package
verze OpenOffice.org v esk lokalizaci pro operan
Manageru ( R P M ) a ad u dalch monosti a nstroj .
systmy Windows, Linux a Solaris.

K0656 646 stran+CD-ROM L Mandrake


K0822 53 stran+3xCD-ROM
Joel Scambray, Stu a rt Vlast i m i l Po m u ra , Ivan Bbr:
McClure, George Kurtz:
Linux Mandrake 9.0
Hacking bez tajem 3xCD a I nstalan
stv, 2. a ktualizo pruka
van vydn 295 K
==
590 K M a n d ra ke je dnes z ej m
N ov vyd n i svtovho bestselleru, kter bez zstrky nejoblibenji l i n uxovou distribuc, snadnou p r o oby
odhaluje plnou vzbroj tec h n i k pouvanch hackery ejn uivatele a spolehl ivou pro serverov een.
pi napadni webovch server a prnicch do firem Obsa h uje mix rznch g rafickch prosted ( K D E ,
nich sti. U kazuje zraniteln m ista Windows, Netwa re GNOME, IceWM, WindowMaker aj . ) , kancelsk balik
a Linuxu, postupy i nstroje, j i m i hackei tyto sys OpenOffice, nejrznj serverov produ kty, vvo
tmy prorej nebo zahlcuj, i co lze u i n i t pro jsk nstroje i multimediln a p l i kace. Doprovodn
odhalen a zamezen jejich tok. Poun teni, kter pruka popisuje krok po kroku i n stalaci, konfiguraci
oteve oi vem sprvc m sit a i nternetovc h i zklady prce.
serve r . A k t u a l izov n o n ej n ovj i m i zkuenostmi
a doplnno CD s m n ostvim bezpenostnch nstroj a
databz hesel do nej rznjich systm .

Vechny tyto a m n o h d a l i zajimav publikace si mete objednat u zsilkov sluby naeho vydavatelstvi. nebo je dejte u vaeho knihku pce.

Zsilkov sluba pro CR: Computer Press. a s .. Nm. 28. dubna 48. 6 3 5 00 Bmo
Ojednvejte na: www.knihy.cpress.cz. distribuce@cpress.cz. bezplatn telefonni linka: 800 5 5 5 513
Zsilkov sluba pro SR: Computer Press Bratislava. Hattalova 12. 831 03 Bratislava. Slovensk republika.
tel. +421 12) 4445 2048. e-mail:distribucia@cpress.sk
Ad resa : I htt p ://www. k n i hy. c p ress .cz Nakupujte pohodln!

MH L E D A N f

I I
... '. ,...

r, v nzvech knih Sledujte aktul n tip dne


(;' v prodejnch kdech Zaj mav ceny
Uette !
r podle autora
r v popisu knih

Najt

edice
PO TAOV LITE RATU RA

E KO N O M I CK LITE RATU RA

P RAXE MANAERA

ROZVOJ O S O B N OSTI .-- anketa


PRVO

AUTO-MOTO Zaj maj ns vae nzory


H lasujte
H O BBY

SPORT

C ESTOV N

P R O DTI

MY A ZD RAV

EVROPSK U N I E

E D I C E STROJAE

VECHNY CESTY
K INFORMACM

You might also like