Professional Documents
Culture Documents
V.Vychodil: Linux - Prirucka Ceskeho Uzivatele Systemu PDF
V.Vychodil: Linux - Prirucka Ceskeho Uzivatele Systemu PDF
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
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
"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."
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
Kniha me obsahovat nzvy produkt, kter mohou bt ochrannmi znmkami nebo zapsanmi
ochrannmi znmkami pslunch vlastnk.
k nihy@cpressocz
Obsah
vod xi
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
Literatura 247
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
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.
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.
/ .. (iloha D
,/
D/oha D
hardware
poi'tae
operan
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
-
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.
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.
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
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
l ogin :
l og i n : novakj I ENTER I
Pas sword : . . tady heslo nen vidt . . .
.
Log i n incorre c t .
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.
potta B pota A
16 Kapitola 2. Zklady prce v systmu
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
-
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 '
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
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
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.
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
$ pas swd
Changing pas sword for novakj
Old pas sword :
New pas sword :
Retype new pas sword :
Pas sword changed .
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
$ 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 . . .
WHO ( 1 ) F SF WHO ( 1 )
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
-q, - -cowrt
Hanua l page who( 1 ) l i ne 3
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
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.
User i nforNat i on
********** ****
* Menu :
Souborov systm
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
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.
jmno - informace r;
/
jmno 2 - -
. ,, /
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
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
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.
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
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
$ cd Ivar/ l I B I I TAB I
l ib local lock l og
$ cd Ivar/ l ibl
$ 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
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
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
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.
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.
$ head -2 - / . fvwmrc
StdForeColor Wheat
S t dBackCo lor DarkS l a t eGray
$ 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
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
$ 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
$ 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/
$ cd - / data
$ rm -r curri culum-vi tae . tex f ibonacci . scm scheme -backup/
$ ls -F
s cheme / t ex/
$ 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
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
-
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 .
$ 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
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
$ 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
$ 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
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.
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.
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
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*
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:
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,
=
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.
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 =
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
=
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.
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
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
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
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
.
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
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
-
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.
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.
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.
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
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
,
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.
$ 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
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
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
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.
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
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.
$ - /data/archivuj
I CTRL-Z I
[1] + S t opped - / da t a / archivuj
$ bg 1
[ 1 ] + . / da t a / archivuj &
$ 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 . . .
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
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.
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.
moc znalosti obsahu pamti provst backtrace zptn prohledn volanch funkc
-
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
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
-
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.
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
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
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
jednotka rozsah
minuta O-59
hodina 0-23
den 1-31
msc 1-12
den v tdnu 0-7
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.
.
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
$ 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.
$ 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
.
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
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
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
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.
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
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
, ,
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.
destabul a
kripktonl
(!roce:: ..
. . .o stdin
1
.......
s t dout
'00 2 / dev/ nul l
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
$ 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
$ 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
$ eat >novy
vytvarim obsah prvn iho souboru
I CTRL-D I
$ eat <novy >kopie
$ eat kopie
vytvarim obsah prvn iho souboru
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
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 ----
.. ..
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,
- -
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-
. . . 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.
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>
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
" _ "
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 "
_
.
kter zastupuje. Metaznak " \ " se pouv k potlaen expanze, jak bude vidt dle.
V nsledujc tabulce jsou uvedeny mon tvary specifikac mnoin znak.
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.
$ echo . * r ?
. bash_h i s t ory . f orward . fvwmrc
$ echo [ a - d] *
bin data
$ echo [ a - d] a*
data
$ echo ? [ a d] *
A _
b i n e t c t odo
adrese / da t a /backup.
-
$ 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
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)
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.
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
-
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
$ PRVNI =obsah
$ echo $PRVNI
obsah
$ PRVNI =
$ echo $ PRVNI
$ 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 : .
$ 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
promnn vznam
$$ PID shellu
$! PID poslednho procesu sputnho na pozad
$? nvratov hodnota poslednho dokonenho procesu
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.
"
Oddlova && a ,, 1 I " lze uvst v pkazu samozejm vc, jednotliv pkazy
,,
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.
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.
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 $
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:
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
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
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
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
raz nepravdiv, protoe / da ta nen symbolick odkaz. Jako posledn byl vytvoen
-
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
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
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
[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
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
-
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
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 .
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
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
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
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
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
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 .
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 .
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 .
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
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".
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
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.
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
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 . -
bor ve tvaru pkaz pro dkov editor ed. Pepna c zapn kontextov vstupn
-
- 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
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
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
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
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
- "
,, /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,
.
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 " \ ( , " \ ) ". "
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
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.
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
/ 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 ;
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
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 .
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.
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
: w haM l et . t xt l
<Jpotekr> , <J konecr>s / <J vzor r>/ <J nhrada r> / <Jpepnaer>
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.
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.
.
rmec
rmec
&J ._-'-"
okna ::: - - -
-
.. .. .. .. .. - - - .
C ------ '--:::::, okna
-----
---
" " " ',,_ B A A ___ -
---
.. .. .......... ::: .... .. .. .
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
-
- - 22 : ** - F 1 *scratcn* ( L i s I nt eract i on ) - - L 5 - - C Q- - A l l - - - - - - - - - - - - -
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 .
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.
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 " "
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.
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 - .
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
- . - .
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.
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.
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.
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
-
$ 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
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
- -
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.
(;J : prograrq
1 : prokrrq
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
- .
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
-
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.
$ 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
souasn.
$ tar c z f data . tar . gz data
$ tar c j f data . tar . bz 2 data
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
hostitel C hostitel D
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.
tacch Unixu maj sv zastoupen i firemn protokoly, kter obvykle nemaj veejn
pstupn specifikace, proto se jimi tak nebudeme zabvat.
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.
.: r
..
...
\ .
.. - . .....
. ----
L.. ... = .K- .... . .
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
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 -
$ 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
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
DNS serve ry
Kadou domnu spravuj alespo dva potae primrn a sekundrn server
-
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.
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
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.
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.
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
-
pouze vype asov daje. Tmto zpsobem jej me pout i obyejn uivatel.
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
# 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
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
-
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.
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.
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
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.
hostitel C
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
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
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.
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
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, . . .
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.
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
$ gpg - - l i s t - keys
/ home / s tudent / inf 9 7 / novakj / . gnupg /pubring . gpg
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
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
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 -
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
> lists
> EOF
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.
-
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.
l ogin :
208 Kapitola 7. Sov prosted
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
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 . . .
. .
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
$ cat - / . netrc
de f au l t l og i n anonymous pas sword novakj @phoenix . inf . upol . c z
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 .
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
chce zadat citliv data do WWW formule, ale WWW server na vzdlenm potai
7. 6. Komunikan a informan sluby 215
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.
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>
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
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
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.
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
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.
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.
17 po1ohk 17 pololi'k
DeskLop Oe$lo.lOpl
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
(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""
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
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.
V tomto ppad je poteba, aby byl na potai sputn speciln program - display
manager, viz dle.
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
$ xini t
- -
$ xini t :1
$ xini t /usr/bin/X1 1 / twm
- -
$ xinit /usr/bin/X1 1 / twm :1
rovin 16, je mon pouvat 216 65 536 rznch barev souasn. V souasnosti jsou
=
[ 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
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.
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
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 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
- -
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
-
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
-
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
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.
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
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
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
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
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".
$ 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
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.
[map s e t ]
map [ e s ] = us CZ
map = US cz CZ_Y
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
=
sov mapa a - - previ ous pedchzejc klvesov mapa. Tmto zpsobem lze
-
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
-
* 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.
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
... '. ,...
Najt
edice
PO TAOV LITE RATU RA
E KO N O M I CK LITE RATU RA
P RAXE MANAERA
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