OBSAH
1
Obsah 1
´ vod a historie Unixovy´ch syste´mu˚ U
2
2
Za´klady pra´ce se syste´mem
4
3
Pra´ce v syste´mu
7
3.1
Za´klady pra´ce v shellu . . . . . . . . . . . . . . . . . . . . . . .
7
3.2
Prˇ´ıkazy pro pra´ci s adresa´rˇi a soubory . . . . . . . . . . . . . . .
9
3.3
Prˇipojova´nı´ svazku˚ . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.4
Typy souboru˚ . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.5
Prˇ´ıstupova´ pra´va . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.6
Za´kladnı´ prˇ´ıkazy pro zpracova´nı´ textu . . . . . . . . . . . . . . .
18
3.7
Za´stupne´ znaky v na´zvu souboru . . . . . . . . . . . . . . . . . .
19
3.8
Prˇesmeˇrova´nı´ a kolona . . . . . . . . . . . . . . . . . . . . . . .
20
4
Pokrocˇilejsˇ´ı konstrukce v shellu
22
4.1
22
4.2
Specia´lnı´ znaky v shellu . . . . . . . . . . . . . . . . . . . . . . ˇ ´ıdı´cı´ konstrukce v shellu . . . . . . . . . . . . . . . . . . . . . R
26
5
Editory
31
6
Aplikace pod Linuxem
35
7
Literatura
37
1
˚ ´ VOD A HISTORIE UNIXOVY´CH SYSTE´MU U
1
´ vod a historie Unixovy´ch syste´mu˚ U
2
Historie OS UNIX • V roce 1969 vznikl v Bell Laboratories operacˇnı´ syste´m Multics • Vzhledem k neˇktery´m nevy´hoda´m tohoto syste´mu dosˇlo k odsˇteˇpenı´ cˇa´sti vy´vojove´ho ty´mu a zacˇal vznikat syste´m UNIX. Poprve´ byl implementova´n na pocˇ´ıtacˇ´ıch PDP firmy DEC. • V roce 1973 byl UNIX prˇepsa´n o jazyka C (ktery´ vznikl soubeˇzˇneˇ s vy´vojem Unixu), pouze nezbytneˇ nutne´ cˇa´sti zu˚staly v assembleru. • Na´sledoval vy´voj 2 hlavnı´ch veˇtvı´ – v Bell Laboratories – oznacˇovana´ aktua´lneˇ System V – na univerziteˇ v Berkeley – oznacˇovana´ BSD • Vznik normy POSIX – pro syste´my odvozene´ od Unixu • V soucˇasnosti neˇkolik desı´tek syste´mu˚ odvozeny´ch prˇeva´zˇneˇ od UNIX System V, naprˇ. AIX od IBM, HP-UX od Hewlett Packard, Solaris od Sun Microsystems, UnixWare od Novellu, Xenix od Microsoftu a dalsˇ´ı. Prˇeva´zˇneˇ se jedna´ o komercˇnı´ syste´my, ktere´ jsou urcˇeny pro pouzˇitı´ ve veˇtsˇ´ıch podnicı´ch. Volneˇ sˇirˇitelne´ verze Unixu • OpenBSD a NetBSD – odvozeny´ch od syste´mu z univerzity v Berkeley • Linux – inspirovany´ syste´mem Minix (varianta UNIX System V) Za´kladnı´ vlastnosti Unixu • interaktivnı´ • podpora multitaskingu – beˇh vı´ce procesu˚ za´rovenˇ • vı´ceuzˇivatelsky´ – rozlisˇenı´ jednotlivy´ch uzˇivatelu˚ a jasna´ specifikace prˇ´ıstupovy´ch pra´v – podpora soucˇasne´ pra´ce vı´ce uzˇivatelu˚ najednou • prˇenositelny´ (jedna´ se o prvnı´ syste´m implementovany´ ve vysˇsˇ´ım programovacı´m jazyce, ktery´m jazyk C je) • za´kladnı´ syste´m neobsahuje graficke´ rozhranı´ – mozˇnost plnohodnotneˇ spravovat syste´m i vzda´leneˇ
˚ ´ VOD A HISTORIE UNIXOVY´CH SYSTE´MU U
1
3
• graficke´ rozhranı´ X-Windows je rˇesˇeno jako volitelna´ soucˇa´st, neza´visla´ na samotne´m syste´mu • jeden adresa´rˇovy´ strom – princip mountova´nı´ - prˇipojova´nı´ diskovy´ch jednotek do podadresa´rˇu˚ hlavnı´ho stromu (lze i za beˇhu) • jednotny´ prˇ´ıstup k zarˇ´ızenı´m prostrˇednictvı´m specia´lnı´ch souboru˚ • strucˇnost – veˇtsˇina programu˚ v prˇ´ıpadeˇ zˇe se nevyskytne chyba nevypisuje nic Historie Linuxu • vznik projektu GNU (zalozˇil Richard M. Stallman v roce 1984) a licence GPL1 • v ra´mci projektu GNU vznikla nadace FSF2 , ktera´ meˇla cı´l vytvorˇit klon unixu postaveny´ na svobodne´m software • v roce 1991 zacˇal finsky´ student Linus Torvalds, pracovat na vy´voji vlastnı´ho ja´dra unixove´ho syste´mu zalozˇene´mu na Minixu, ktere´ meˇlo odstranˇovat nevy´hody tohoto syste´mu • pozdeˇji se kolem Linuse rozrostla komunita vy´voja´rˇu˚ pracujı´cı´ na nove´m syste´mu, ja´dro bylo zarˇazeno do projektu nadace FSF a spojenı´m s na´stroji vyvinuty´mi touto nadacı´ vznikl syste´m GNU/Linux • dnes se na vy´voji Linuxu podı´lı´ rozsa´hla´ komunita vy´voja´rˇu˚ z cele´ho sveˇta, kterˇ´ı na vy´voji syste´mu dobrovolneˇ pracujı´ a Linux se stal plnohodnotnou na´hradou komercˇnı´ch uzavrˇeny´ch rˇesˇenı´ Linux • samotny´ Linux tvorˇ´ı tzv. ja´dro (kernel) a je vzˇdy zdarma • sˇ´ırˇen v distribucı´ch – distribuce obsahuje ja´dro, za´kladnı´ obsluzˇne´ programy a dalsˇ´ı software • dnes existuje velke´ mnozˇstvı´ distribucı´, neˇktere´ zdarma, prˇ´ıpadneˇ s mozˇnostı´ prˇiplatit za tisˇteˇny´ manua´l nebo podporu, jine´ od za´kladu komercˇnı´ (naprˇ. RedHat Enterprise Linux) 1
General Public Licence - licence, pod kterou je vyda´va´n tzv. svobodny´ software (Free Software) - podle licence je mozˇne´ software da´le libovolneˇ sˇ´ırˇit nebo vyuzˇ´ıt kteroukoliv cˇa´st zdrojove´ho ko´du ve vlastnı´m projektu, za podmı´nky zˇe bude take´ sˇ´ırˇen pod licencı´ GPL, tj. v otevrˇene´ formeˇ vcˇetneˇ zdrojovy´ch ko´du˚ 2 Free Software Foundation
2
ZA´KLADY PRA´CE SE SYSTE´MEM
2
Za´klady pra´ce se syste´mem
4
Prˇihlasˇova´nı´ • na vy´zvu login: zadat uzˇivatelske´ jme´no • po stisku enteru se zobrazı´ dotaz na heslo, ktere´ nebude zobrazova´no • po prˇihla´sˇenı´ je uzˇivatel v domovske´m adresa´rˇi • odhla´sˇenı´ stiskem Ctrl-D na pra´zdne´m rˇa´dku (mu˚zˇe by´t zaka´za´no, pak prˇ´ıkaz logout nebo exit) • uzˇivatel nemusı´ mı´t heslo, cozˇ ale prˇedstavuje bezpecˇnostnı´ riziko • v kazˇde´m syste´mu existuje uzˇivatel root (superuzˇivatel), ktery´ ma´ neomezena´ pra´va – je urcˇen pro administra´tora syste´mu passwd – zmeˇna hesla who, w, finger – seznam prˇihla´sˇeny´ch uzˇivatelu˚ last, lastb – vy´pis naposled prˇihla´sˇeny´ch uzˇivatelu˚, resp. neu´speˇsˇny´ch pokusu˚ o prˇihla´sˇenı´
2
ZA´KLADY PRA´CE SE SYSTE´MEM
5
Termina´l Termina´l se oznacˇuje vstupneˇ/vy´stupnı´ zarˇ´ızenı´ urcˇene´ pro komunikaci s uzˇivatelem – nejcˇasteˇji obsahujı´cı´ kla´vesnici a monitor (drˇ´ıve take´ tiska´rna) a prˇ´ıpadneˇ dalsˇ´ı hardware umozˇnˇujı´cı´ vzda´lenou komunikaci (se´riova´ linka, ethernet) a interpretaci specia´lnı´ch znaku˚ (termina´ly umozˇnˇujı´ rˇ´ızenı´ kurzoru a nastavova´nı´ neˇktery´ch zobrazovacı´ch parametru˚ pomocı´ specia´lnı´ch escape sekvencı´ ktere´ se nezobrazujı´. Emula´tor termina´lu program, beˇzˇ´ıcı´ na klasicke´m pocˇ´ıtacˇi, emulujı´cı´ chova´nı´ termina´lu (escape sekvence) Virtua´lnı´ termina´ly emulace vı´ce termina´lu˚ prˇ´ımo na pocˇ´ıtacˇi kde beˇzˇ´ı syste´m, umozˇnˇujı´ vı´cena´sobne´ prˇihla´sˇenı´ v Linuxu je mozˇnost azˇ 12 virtua´lnı´ch termina´lu˚, mezi ktery´mi se prˇepı´na´ pomocı´ kla´ves Alt-F1 azˇ Alt-F12, prˇ´ıpadneˇ Ctrl-Alt-F1 azˇ Ctrl-Alt-F12, pokud kla´vesove´ kombinace bez Ctrl jizˇ neˇjaka´ aplikace pouzˇ´ıva´
2
ZA´KLADY PRA´CE SE SYSTE´MEM
6
Dokumentace Ja´drem dokumentace jsou manua´love´ stra´nky, ktere´ jsou rozrˇazeny do neˇkolika sekcı´: sekce 1 2 3 4 5 6 7 8 9
obsah Spustitelne´ programy a prˇ´ıkazy shellu Syste´move´ vola´nı´ (funkce kernelu) Knihovnı´ funkce Specia´lnı´ souboru (nacha´zı´ se v /dev) Forma´ty souboru˚ (naprˇ. /etc/passwd Hry Ru˚zne´ Prˇ´ıkazy pro syste´movou administraci Kernel routines [Non standard]
man – popis k programu zadane´mu jako argument whatis – hleda´ v na´zvu prˇ´ıkazu˚ apropos – hleda´ v na´zvu i popisu prˇ´ıkazu˚ info, pinfo – podobne´ jako man, ale obsahuje hypertextove´ odkazy
3
PRA´CE V SYSTE´MU
3
Pra´ce v syste´mu
3.1
7
Za´klady pra´ce v shellu
Shell je prˇ´ıkazovy´ interpret – obdoba command.com z DOSu nebo cmd.exe z Windows, ale s veˇtsˇ´ımi mozˇnostmi. Shell se v interaktivnı´m rezˇimu hla´sı´ promptem, ktery´m signalizuje prˇipravenost k zada´nı´ prˇ´ıkazu. Prompt obvykle koncˇ´ı znakem $ a mezerou pro beˇzˇne´ho uzˇivatele a # pro superuzˇivatele. V prˇ´ıpadeˇ odesla´nı´ nedokoncˇene´ho prˇ´ıkazu (neuzavrˇene´ uvozovky) nebo zpeˇtne´ho lomı´tka na konci rˇa´dky se zobrazı´ tzv. pokracˇovacı´ prompt, implicitneˇ >. Prˇ´ıkazy se zada´vajı´ ve forma´tu: pr ˇı ´kaz [ volby ] [ argumenty ] Argumenty i volby jsou veˇtsˇinou nepovinne´. Pokud je parametr soubor a vynecha´ se, pracuje se veˇtsˇinou se standardnı´m vstupem (kla´vesnice) nebo standardnı´m vy´stupem (obrazovka) → mozˇnost rˇeteˇzenı´ prˇ´ıkazu˚ do kolony. Volby zacˇ´ınajı´ znakem mı´nus a ovlivnˇujı´ chova´nı´ prˇ´ıkazu. Lze rˇeteˇzit vı´ce voleb za jeden mı´nus nebo je uve´st zvla´sˇt’(ls -l -a je ekvivalentnı´ ls -la) volba -h, prˇ´ıpadneˇ --help vypı´sˇe strucˇneˇ syntaxi argumentu˚ Vnitrˇnı´ prˇ´ıkazy jsou soucˇa´stı´ shellu Vneˇjsˇ´ı prˇ´ıkazy jsou externı´ programy ve stejnojmenne´m souboru, hledajı´ se v definovany´ch adresa´rˇ´ıch Existuje vı´ce ru˚zny´ch shellu˚, ktere´ se lisˇ´ı hlavneˇ syntaxı´ vnitrˇnı´ch prˇ´ıkazu˚ a ru˚zny´mi vylepsˇenı´mi. Za´kladnı´ shell je Bourne shell (sh), da´le existuje C-shell (csh), Korn shell (ksh). V Linuxu je za´kladnı´m shellem bash (Bourne Again SHell).
3
PRA´CE V SYSTE´MU
8
Specia´lnı´ kla´vesy kla´vesa Tab Ctrl-D Ctrl-U Ctrl-K Ctrl-R Ctrl-S Ctrl-G Esc
vy´znam doplneˇnı´ neu´plne´ho jme´na souboru nebo adresa´rˇe, dvojı´ stisk vypı´sˇe mozˇnosti konec vstupu, pokud je prvnı´ znak na rˇa´dce; jinak zmazˇe znak na pozici kurzoru smazˇ text prˇed kurzorem od zacˇa´tku rˇa´dku smazˇ text od kurzoru do konce rˇa´dku zpeˇtne´ inkrementa´lnı´ hleda´nı´ v historii prˇ´ıkazu˚ od aktua´lnı´ pozice doprˇedne´ inkrementa´lnı´ hleda´nı´ v historii prˇ´ıkazu˚ od aktua´lnı´ pozice zrusˇenı´ vyhleda´va´nı´ a na´vrat na pu˚vodnı´ pozici zrusˇenı´ vyhleda´va´nı´ a zachova´nı´ sta´vajı´cı´ pozice
Za zmı´nku stojı´ prˇ´ıkaz history, ktery´ vypı´sˇe zapamatovane´, dosud zadane´ prˇ´ıkazy.
3
3.2
PRA´CE V SYSTE´MU
9
Prˇ´ıkazy pro pra´ci s adresa´rˇi a soubory
Jako oddeˇlovacˇ adresa´rˇu˚ a souboru v cesteˇ se pouzˇ´ıva´ znak /, ktery´ je jako jediny´ zaka´zany´ uvnitrˇ jme´na souboru nebo adresa´rˇe. Kazˇdy´ adresa´rˇ obsahuje hned po zalozˇenı´ 2 polozˇky „.“ a „..“. Prvnı´ je odkaz „sa´m na sebe“ a druhy´ na nejblizˇsˇ´ı nadrˇazeny´ adresa´rˇ. Absolutnı´ cesta zacˇ´ına´ lomı´tkem a obsahuje postupneˇ lomı´tky oddeˇlene´ jme´na adresa´rˇu˚ od korˇenove´ho azˇ k dane´mu souboru nebo adresa´rˇi. naprˇ.: /home/petr/dokumenty/zprava.txt Relativnı´ cesta nezacˇ´ına´ lomı´tkem, specifikuje postupneˇ adresa´rˇe, ktery´mi je potrˇeba projı´t od aktua´lnı´ho adresa´rˇe azˇ k dane´mu souboru nebo adresa´rˇi. naprˇ.: prog/c/astar.c nebo ../java/minimax.java ls [ adresa ´r ˇ | soubor ] – vy´pis aktua´lnı´ho adresa´rˇe -l dlouhy´ vy´pis -a i soubory zacˇ´ınajı´cı´ tecˇkou -A i soubory zacˇ´ınajı´cı´ tecˇkou, kromeˇ . a .. -R rekurzivneˇ -1 v jednom sloupci -t serˇazene´ podle cˇasu modifikace -u serˇazene´ podle cˇasu poslednı´ho prˇ´ıstupu -r obra´cene´ porˇadı´ -d zobrazenı´ informacı´ o samotne´m adresa´rˇi (jinak vypı´sˇe jeho obsah) pwd – zobraz aktua´lnı´ adresa´rˇ cd – zmeˇna aktua´lnı´ho adresa´ˇre (pokud chybı´ argument, nastavı´ se domovsky´) mkdir [ -p ] adresa ´r ˇ – vytvorˇenı´ adresa´rˇe -p vcˇetneˇ cele´ cesty rmdir adresa ´r ˇ – zrusˇenı´ adresa´rˇe (musı´ by´t pra´zdny´)
3
PRA´CE V SYSTE´MU
10
cp [ -fdpR -a ] zdroj cı ´l – kopie souboru˚ -f force – prˇepı´sˇe cı´l i kdyzˇ je read-only (pokud lze smazat) -d no-dereference – kopı´ruje symbolicke´ linky mı´sto souboru, na ktery´ odkazujı´ -p preserve – zachova´ prˇ´ıstupova´ pra´va (jinak jsou ovlivneˇna uzˇivatelskou maskou) -R recursive – zdroj mu˚zˇe by´t adresa´rˇ – zkopı´ruje vsˇechny soubory a adresa´rˇe, ktere´ obsahuje -a archive – kopie cele´ho stromu na jine´ mı´sto se zachova´nı´m pra´v a symbolicky´ch linku˚ mv [ -f ] pu ˚vodnı ´ novy ´ – prˇejmenova´nı´/prˇesun souboru˚ -f force rm [ -rf ] soubor ... – maza´nı´ souboru˚ -r recursive – smaza´nı´ adresa´rˇe vcˇetneˇ podadresa´rˇu˚ (nutno opatrneˇ) -f force – smazat i kdyzˇ je soubor read-only (v opacˇne´m prˇ´ıpadeˇ soubor odmı´tne smazat) ln [ -s ] soubor cı ´l – vytvorˇenı´ hard nebo symbolicke´ho odkazu U prˇ´ıkazu˚ cp, mv, ln a rm lze pouzˇ´ıt volbu -i, ktera´ vygeneruje dotaz prˇed prˇ´ıpadny´m prˇepsa´nı´m nebo smaza´nı´m souboru.
3
PRA´CE V SYSTE´MU
11
du [ -sh ] [ adresa ´r ˇ ] – disk usage – zobrazı´ celkovy´ prostor obsazeny´ adresa´rˇem a jeho podadresa´rˇi v bytech (implicitneˇ aktua´lnı´) -s jen celkovy´ soucˇet -h zobrazı´ podle potrˇeby v KB, MB, GB Prˇ.: du -sh ˜ – zobrazı´ objem zabrany´ doma´cı´m adresa´rˇem file soubory – identifikuje typ souboru podle prvnı´ch 512 bajtu˚ (textovy´/bina´rnı´, ko´dova´nı´ textu, druh programovacı´ho jazyka, typ bina´rnı´ho souboru, atd.) find poc ˇ adresa ´r ˇ krite ´ria – hleda´nı´ souboru˚ podle zadany´ch krite´riı´: -name jme´no – soubor dane´ho jme´na, mu˚zˇe by´t i cˇa´stecˇne´ za pomoci za´stupny´ch znaku˚ * a ? (pak je nutno jme´no uzavrˇ´ıt do apostrofu˚ aby nedosˇlo k interpretaci shellem) -iname jme´no – dtto, ale nerozlisˇuje velikost pı´smen -user uzˇivatel – vlastnı´k souboru je uzˇivatel -perm pra´va – hleda´nı´ podle pra´v (oktaloveˇ) -mmin -n – soubor byl zmeˇneˇn beˇhem poslednı´ch n minut -mtime -n – soubor byl zmeˇneˇn beˇhem poslednı´ch n dnı´ -type typ souboru – soubory dane´ho typu (viz da´le tabulka typu˚ souboru) prˇi uvedene´ vı´ce podmı´nek najednou musı´ by´t splneˇny vsˇechny, vykrˇicˇnı´k prˇed podmı´nkou znamena´ negaci locate soubor – rychle´ hleda´nı´ souboru podle na´zvu, vyuzˇ´ıva´ databa´zi, ktera´ se automaticky aktualizuje veˇtsˇinou jednou denneˇ df – disk free, zobrazı´ volne´ mı´sto na prˇipojeny´ch svazcı´ch
3
3.3
PRA´CE V SYSTE´MU
12
Prˇipojova´nı´ svazku˚
Svazek (volume) je logicka´ oblast na u´lozˇne´m me´diu, obsahujı´cı´ pra´veˇ jeden filesyste´m. U architektury PC je veˇtsˇinou ekvivalentnı´ jedne´ partition, prˇ´ıpadneˇ skupineˇ partition spojene´ pomocı´ RAID manageru nebo LVM (logical volume manager) Filesystem je tvorˇen stromem adresa´rˇu˚ a souboru˚ (obycˇejny´ch i specia´lnı´ch) Korˇenovy´ adresa´rˇ (Root) je v syste´mu vzˇdy pra´veˇ jeden a znacˇ´ı se /. Beˇhem spousˇteˇnı´ syste´mu se urcˇ´ı ktery´ svazek se prˇipojı´ na korˇenovy´ adresa´rˇ. Tento svazek beˇhem cˇinnosti syste´mu nelze odpojit. Prˇipojenı´ svazku se prova´dı´ prˇ´ıkazem mount spec soubor adresa ´r ˇ pr ˇipojenı ´, kde adresa´rˇ je libovolny´ podadresa´rˇ aktua´lnı´ho adresa´rˇove´ho stromu. Pokud adresa´rˇ nebyl pra´zdny´, dojde k zakrytı´ (zneprˇ´ıstupneˇnı´ jeho obsahu azˇ do odpojenı´ svazku). Prˇipojenı´m se rozsˇ´ırˇ´ı aktua´lnı´ adresa´rˇovy´ strom a adresa´rˇe a soubory filesystemu v prˇipojene´m svazku. Prˇ.: • mount /dev/hda3 /home prˇipojı´ trˇetı´ prima´rnı´ partition na prvnı´m IDE disku do adresa´rˇe /home • mount /dev/cdrom /media/cdrom prˇipojı´ medium v CD-ROM mechanice do adresa´rˇe /media/cdrom • mount /dev/fd0 /media/floppy -t vfat prˇipojı´ disketu v mechanice do adresa´rˇe /media/floppy, za´rovenˇ se specifikuje zˇe na disketeˇ je filesyste´m FAT s dlouhy´mi jme´ny. Odpojenı´ svazku se prova´dı´ prˇ´ıkazem umount spec soubor nebo umount adresa ´r ˇ pr ˇipojenı ´. Prˇed odpojenı´m nesmı´ zˇa´dny´ uzˇivatel ani syste´movy´ proces pracovat se souborem nebo mı´t aktua´lnı´ adresa´rˇ v odpojovane´ cˇa´sti stromu. Prˇ.: umount /dev/cdrom
3
PRA´CE V SYSTE´MU
spec. soubor /dev/hda1 /dev/hdb3 /dev/hdc5 /dev/hdd6 /dev/sda1 /dev/sdb2 /dev/cdrom /dev/fd0
13
s cˇ´ım je spojen prvnı´ prima´rnı´ partition na master disku na prima´rnı´m kana´lu IDE rˇadicˇe trˇetı´ prima´rnı´ partition na slave na prima´rnı´m kana´lu IDE rˇadicˇe prvnı´ logicka´ partition na master na sekunda´rnı´m kana´lu IDE rˇadicˇe druha´ logicka´ partition na slave na sekunda´rnı´m kana´lu IDE rˇadicˇe prvnı´ prima´rnı´ partition na prvnı´m SCSI disku druha´ prima´tı´ partition na druhe´m SCSI disku CD-ROM mechanika (by´va´ symbolicky´ odkaz) prvnı´ floppy mechanika
CD-ROM mechanika, disketa, USB flash disky apod. se zpravidla prˇipojujı´ do podadresa´rˇe v adresa´rˇi /media nebo /mnt. Pozor, prˇed vyjmutı´m je potrˇeba me´dium vzˇdy odpojit, jinak by mohlo dojı´t k nekonzistenci a ke ztra´teˇ ulozˇeny´ch dat!
3
3.4
PRA´CE V SYSTE´MU
14
Typy souboru˚
Typy souboru˚ podle prvnı´ho znaku v dlouhe´m vy´pisu ls -l. typ d l c b p s
popis obycˇejny´ soubor (regular file) adresa´rˇ (directory) symbolicky´ odkaz (symbolic link) znakovy´ specia´lnı´ soubor (character special) blokova´ specia´lnı´ soubor (block special) pojmenovana´ roura (named pipe) socket
Typy souboru˚ z hlediska syste´mu: adresa´rˇ – v podstateˇ soubor obsahujı´cı´ rˇadu dvojic i-node 3 a jme´no souboru symbolicky´ odkaz – soubor obsahujı´cı´ cestu k jine´mu souboru, prˇi pozˇadavku o jakoukoliv standardnı´ souborovou operaci pracuje syste´m se souborem, na ktery´ odkazuje znakovy´ specia´lnı´ soubor – neobsahuje datove´ bloky, je spjat se znakovy´m zarˇ´ızenı´m (naprˇ. termina´l, tiska´rna, se´riovy´ port) blokovy´ specia´lnı´ soubor – neobsahuje datove´ bloky, je spjat s blokovy´m zarˇ´ızenı´m (naprˇ. disk, CD-ROM, pa´ska) pevny´ odkaz (hardlink) – je to dalsˇ´ı jme´no souboru (dalsˇ´ı odkaz na i-node souboru), hardlinky jsou narozdı´l od symbolicky´ch linku˚ vza´jemneˇ rovnocenne´ hardlinky nelze vytva´rˇet na adresa´rˇe a na souboru lezˇ´ıcı´ na jine´ diskove´ oblasti
3 i-node je specia´lnı´ struktura obsahujı´cı´ vsˇechny informace o souboru, kromeˇ jme´na (vlastnı´k, skupina, pra´va, datum a cˇas poslednı´ modifikace a prˇ´ıstupu, de´lku a odkazy na datove´ bloky souboru; i-nodes jsou ulozˇene´ mimo adresa´rˇ, ve specia´lnı´ vyhrazene´ cˇa´sti diskove´ oblasti
3
PRA´CE V SYSTE´MU
15
Samotny´ syste´m UNIX nerozlisˇuje soubory z hlediska obsahu – interpretace obsahu za´lezˇ´ı cˇisteˇ na aplikaci. Narozdı´l neˇktery´ch jiny´ch syste´mu˚ se pro oddeˇlova´nı´ rˇa´dku˚ nepouzˇ´ıva´ sekvence CR/LF (ASCII ko´dy 13, 10), ale pouze LF (10) – pro konverzi existujı´ programy dos2unix (odstranı´ znaky CR) a unix2dos (prˇed kazˇdy´ znak LF prˇida´ CR). textovy´ soubor – zdrojove´ ko´dy, prakticky vsˇechny konfiguracˇnı´ soubory, veˇtsˇina uzˇivatelsky´ch dat, apod. V UNIXu se da´va´ prˇednost textove´mu ulozˇenı´ z du˚vodu jednodusˇsˇ´ıch a univerza´lneˇjsˇ´ıch mozˇnostı´ zpracova´nı´ i za cenu mı´rneˇ veˇtsˇ´ıho objemu dat – naprˇ databa´ze v CSV nebo podobne´m forma´tu, prˇ´ıpadneˇ vyuzˇitı´ XML nebo jine´ho znacˇkovacı´ho jazyka pro slozˇiteˇjsˇ´ı konfiguracˇnı´ soubory. bina´rnı´ soubor – programy v bina´rnı´m ko´du, Java bytecode, zkomprimovane´ archivy, obra´zky, videosekvence, apod.
3
3.5
PRA´CE V SYSTE´MU
16
Prˇ´ıstupova´ pra´va
Za´kladnı´ definice • kazˇdy´ uzˇivatel je jednoznacˇneˇ identifikova´n svy´m uzˇivatelsky´m jme´nem • uzˇivatel mu˚zˇe beˇhem relace se syste´mem prˇejı´t na identifikaci jiny´m uzˇivatelem bez nutnosti odhla´sˇenı´, pokud zna´ jeho heslo (prˇ´ıkaz su) • v syste´mu existujı´ skupiny, uzˇivatelu˚, kazˇda´ skupina je take´ jednoznacˇneˇ identifikova´na svy´m jme´nem • kazˇdy´ uzˇivatel je cˇlenem jedne´ nebo vı´ce skupin, ale v danou chvı´li vzˇdy vystupuje pod jednou konkre´tnı´ skupinou • skupinu, pod kterou vystupuje mu˚zˇe uzˇivatel beˇhem relace zmeˇnit, ale jen na jinou skupinu, jizˇ je cˇlenem (prˇ´ıkaz newgrp, prˇ´ıpadneˇ sg) • Kazˇdy´ soubor nebo adresa´rˇ ma´ definovane´ho uzˇivatele vlastnı´cı´ho soubor a skupinu uzˇivatelu˚ (jsou nastaveny podle uzˇivatele, ktery´ soubor vytvorˇil a jeho skupiny. • Vlastnı´ka souboru mu˚zˇe zmeˇnit jen superuzˇivatel (prˇ´ıkazem chown • skupinu souboru mu˚zˇe zmeˇnit jeho vlastnı´k, ale jen v ra´mci skupin, jichzˇ je cˇlenem; superuzˇivatel mu˚zˇe meˇnit skupinu libovolneˇ Vy´pis seznamu uzˇivatelu˚: Vy´pis seznamu skupin:
getent passwd getent group
PRA´CE V SYSTE´MU
3
17
Prˇ´ıstupova´ pra´va, vlastnı´k a skupina jsou zobrazeny dlouhe´m vy´pisu ls -l. Jsou rozdeˇlena do 3 skupin – prvnı´ skupina se aplikuje, pokud k souboru prˇistupuje jeho vlastnı´k, druha´ pokud je uzˇivatel ve stejne´ skupineˇ, kterou ma´ soubor prˇirˇazen a trˇetı´ v ostatnı´ch prˇ´ıpadech. Kazˇda´ skupina pra´v obsahuje 3 pra´va (definovane´ trˇemi bity) – Read, Write, eXecute. Da´le existujı´ specia´lnı´ pra´va, definovane´ dalsˇ´ımi trˇemi bity. Majı´ vyuzˇitı´ naprˇ. u programu˚, ktere´ operujı´ se soubory, ke ktery´m nema´ beˇzˇny´ uzˇivatel prˇ´ıstup (SetUID bit) – naprˇ. program passwd nebo u sdı´leny´ch adresa´rˇu˚ (Sticky bit) – naprˇ. /tmp. Zmeˇna pra´v se prova´dı´ prˇ´ıkazem chmod pra ´va soubory, pra´va se zada´vajı´ bud’ symbolicky nebo jako oktalovy´ bitovy´ soucˇet pomocı´ 4 cˇ´ıslic v porˇadı´ spec. pra´va, vlastnı´k, skupina, ostatnı´. Prˇ.: chmod u+x,g+w,u-rx soubor – prˇida´ uzˇivateli pra´vo na spousˇteˇnı´, skupineˇ pra´vo na za´pis a ostatnı´m odebere pra´va na cˇtenı´ a spousˇteˇnı´ chmod 644 soubor – nastavı´ uzˇivateli pra´va na cˇtenı´ a za´pis (6 = 4 + 2) a ostatnı´m pouze pra´vo ke cˇtenı´, prˇicˇemzˇ neza´lezˇ´ı na pu˚vodnı´ch pra´vech souboru pra´vo r w x SetUID SetGID
oktaloveˇ 4 2 1 4 2
sTicky
1
vy´znam pro soubor cˇtenı´ souboru za´pis do souboru5 spusˇteˇnı´ souboru spusˇteˇnı´ pod vlastnı´kem spusˇteˇnı´ pod skupinou zachova´nı´ obrazu v pameˇti
vy´znam pro adresa´rˇ zobrazenı´ obsahu adresa´rˇe4 modifikace polozˇek adresa´rˇe6 pru˚chod adresa´rˇem7 nema´ vy´znam nastavenı´ stejne´ skupiny u novy´ch podadresa´rˇu˚ smazat soubor mu˚zˇe jen jeho vlastnı´k
Z du˚vodu nedostatecˇne´ jemnosti za´kladnı´ch prˇ´ıst. pra´v existujı´ rozsˇ´ırˇena´ prˇ´ıstupova´ pra´va (acl), viz. prˇ´ıkazy getfacl a setfacl.
4
nezabra´nı´ pru˚chodu, pokud zna´me obsah adresa´rˇe neovlivnı´ mozˇnost smaza´nı´ 6 vytva´rˇenı´, maza´nı´ a prˇejmenova´nı´ souboru˚ v adresa´rˇi 7 pouzˇitı´ uvnitrˇ cesty nebo vstup pomocı´ cd 5
3
3.6
PRA´CE V SYSTE´MU
18
Za´kladnı´ prˇ´ıkazy pro zpracova´nı´ textu
echo [ -ne ] text ... – vypı´sˇe na obrazovku postupneˇ vsˇechny slova zadane´ jako parametry, -n potlacˇenı´ prˇechodu na novy´ rˇa´dek, -e interpretace specia´lnı´ch znaku˚ ve vy´pisu. cat [ soubory ] (concatenate) – zobrazenı´ souboru nebo vı´ce souboru˚ za sebou head [-n], tail [-n]|[+n] – zobrazenı´ zacˇa´tku/konce souboru more, less – stra´nkovany´ vy´pis textove´ho souboru, less le´pe vyuzˇ´ıva´ mozˇnosti termina´lu – snadneˇjsˇ´ı pohyb v souboru a navracenı´ wc [ -lwc ] [ soubory ] – spocˇ´ıta´ pocˇet rˇa´dek (l), slov (w) nebo znaku˚ (c) v souborech grep -lvir vzor [ soubory ] – prohleda´va´ vstupnı´ soubory na vy´skyt zadane´ho vzoru a zobrazı´ vyhovujı´cı´ rˇa´dky, lze pouzˇ´ıt tzv. regula´rnı´ vy´raz -l zobrazı´ pouze jme´na souboru˚ obsahujı´cı´ dany´ vzor -v zobrazı´ rˇa´dky nevyhovujı´cı´ dane´mu vzoru -i nerozlisˇuje velka´ a mala´ pı´smena -r prohleda´va´ i soubory v podadresa´rˇ´ıch (recursive) diff – porovna´nı´ obsahu dvou textovy´ch souboru˚
3
3.7
PRA´CE V SYSTE´MU
19
Za´stupne´ znaky v na´zvu souboru
Slouzˇ´ı k hromadne´mu vy´beˇru vı´ce souboru˚. Shell provede substituci vsˇech vyhovujı´cı´ch souboru˚ na mı´sto vzoru. znak * ? [abcd]
vy´znam jaky´koliv rˇeteˇzec znaku˚ (i pra´zdny´) pra´veˇ jeden libovolny´ znak vy´cˇet znaku˚, lze zadat i jako rozsah – [a-d]
naprˇ. ab* se nahradı´ vsˇemi soubory zacˇ´ınajı´cı´mi na ‘ab’ v aktua´lnı´m adresa´rˇi. Pokud takovy´ nenı´ nahradı´ se pra´zdny´m rˇeteˇzcem nebo k substituci nedojde (viz. shopt nullglob), vzoru soub? vyhovı´ soubor1, soubor2 . . . soubor9, ale uzˇ ne soubor10
3
PRA´CE V SYSTE´MU
3.8
20
Prˇesmeˇrova´nı´ a kolona
Naprosta´ veˇtsˇina prˇ´ıkazu˚ pouzˇ´ıva´ (prostrˇednictvı´m knihovnı´ch funkcı´) tyto implicitneˇ otevrˇene´ souborove´ deskriptory (file handle): cˇ. deskriptoru 0 1 2
na´zev stdin stdout stderr
vy´znam standardnı´ vstup (kla´vesnice, pokud nenı´ prˇesmeˇrova´n) standardnı´ vy´stup (monitor termina´lu, pokud nenı´ prˇesmeˇrova´n) standardnı´ chybovy´ vy´stup (monitor termina´lu, pokud nenı´ prˇesmeˇrova´n)
Standardnı´ chybovy´ vy´stup slouzˇ´ı pro vy´pis chybovy´ch hla´sˇenı´, ktera´ se zobrazı´ na obrazovce i prˇestozˇe standardnı´ vy´stup je prˇesmeˇrova´n naprˇ. do souboru. Prˇ´ıklady: pr ˇı ´kaz < vstup_soubor pr ˇı ´kaz > vy ´st_soubor pr ˇı ´kaz >> vy ´st_soubor pr ˇı ´kaz 2> vy ´st_soubor pr ˇı ´kaz << /END/ text text ... /END/ Docha´zı´ k prˇesmeˇrova´nı´ standardnı´ho vstupu (deskriptor 0), standardnı´ho vy´stupu (deskriptor 1) nebo standardnı´ho chybove´ho vy´stupu (deskriptor 2). Standardnı´ vstup, vy´stup i chybovy´ vy´stup je standardneˇ nastaven na termina´l. Poslednı´ mozˇnost se nazy´va´ here document a pouzˇ´ıva´ se pro zapsa´nı´ vstupnı´ch dat prˇ´ımo ve skriptu (viz. da´le). Prˇesmeˇrova´nı´ standardnı´ho i chybove´ho vy´stupu do jednoho souboru. pr ˇı ´kaz > vy ´st_soubor 2>&1 nebo pr ˇı ´kaz &> vy ´st_soubor
3
PRA´CE V SYSTE´MU
21
Rˇeteˇzenı´ prˇ´ıkazu˚ (kolona, pipeline): pr ˇı ´kaz1 | pr ˇı ´kaz2 [ | pr ˇı ´kaz3 ... ] [ > soubor ] standardnı´ vy´stup prˇ´ıkazu1 se posˇle na standardnı´ vstup prˇ´ıkazu2, jehozˇ vy´stup se posˇle na vstup prˇ´ıkazu3, atd. Je samozrˇejmeˇ mozˇne´ prˇesmeˇrovat i vstup prvnı´ho prˇ´ıkazu a vy´stup poslednı´ho (na soubor). Programy beˇzˇ´ı paralelneˇ a data se prˇeda´vajı´ pomocı´ mechanismu syste´mu, zvane´m pipe. Protozˇe veˇtsˇina prˇ´ıkazu˚ UNIXu bez parametru˚ pracuje se standardnı´m vstupem a vy´stupem, je mozˇne´ je rˇadit do kolony a za pomoci relativneˇ jednoduchy´ch na´stroju˚ prova´deˇt komplexnı´ operace.
4
4 4.1
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
22
Pokrocˇilejsˇ´ı konstrukce v shellu Specia´lnı´ znaky v shellu
Pouzˇitelne´ znaky se specia´lnı´m vy´znamem: znak \ , ?, [] >, >>, &>, <, <<, <&, |, |& ; & ‘cmd‘ ’...’ ”...” : # ( prˇ´ıkazy ) { prˇ´ıkazy ; } $[aritm. vy ´raz]
vy´znam potlacˇuje spec. vy´znam na´sledujı´cı´ho znaku za´stupne´ znaky ve jme´nech souboru˚, viz. vy´sˇe prˇesmeˇrova´nı´, viz. vy´sˇe oddeˇlovacˇ vı´ce prˇ´ıkazu˚ na jedne´ rˇa´dce prˇ´ıkaz ukoncˇeny´ ampersandem se spustı´ na pozadı´ na´hrada prˇ´ıkazu cmd jeho vy´stupem (spusˇteˇnı´!) potlacˇuje interpretaci znaku˚ uvnitrˇ interpretuje jen $ a ‘...‘ pra´zdny´ prˇ´ıkaz – akceptuje libovolny´ pocˇet parametru˚, ale nic nevykona´ zbytek rˇa´dku za # se ignoruje (komenta´rˇ) provedenı´ posloupnosti prˇ´ıkazu˚ v noveˇ spusˇteˇne´ kopii shellu provedenı´ posloupnosti prˇ´ıkazu˚ bez spusˇteˇnı´ nove´ kopie shellu vyhodnocenı´ aritmeticke´ho vy´razu, lze pouzˇ´ıt +, -, *, /,
Mı´sto ‘cmd‘ lze take´ pouzˇ´ıt $(...) a k vyhodnocenı´ aritmeticke´ho vy´razu lze take´ pouzˇ´ıt prˇ´ıkaz expr vy´raz, kde jednotlive´ opera´tory a operandy vy´razu musı´ by´t oddeˇlene´ mezerami.
4
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
23
Promeˇnne´ v shellu V shellu existujı´ promeˇnne´, ktere´ mohou mı´t pouze textovy´ obsah. Nastavenı´ promeˇnne´ se provede prˇ´ıkazem: ˇNNA ´=text PROME Kolem znaku ‘=’ nesmı´ by´t mezery, na´zvy promeˇnny´ch jsou veˇtsˇinou z velky´ch pı´smen. Promeˇnne´ nejsou implicitneˇ viditelne´ v podrˇ´ızeny´ch shellech (naprˇ. ve spusˇteˇne´m scriptu), pro prˇeda´nı´ promeˇnne´ do subshellu je potrˇeba pouzˇ´ıt prˇ´ıˇNNA ´. Obsah promeˇnne´ lze dosadit pouzˇitı´m znaku „$“, na´kaz export PROME sledovany´m jme´nem promeˇnne´ v ktere´koliv cˇa´sti prˇ´ıkazove´ho rˇa´dku. V prˇ´ıpadeˇ mozˇne´ nejednoznacˇnosti na´zvu promeˇnne´ se na´zev uzavrˇe do slozˇeny´ch za´vorek: echo ”${A}bc” ˇNNA ´ Zrusˇenı´ promeˇnne´: unset PROME
ˇNNA ´=hodnota pr Spusˇteˇnı´ programu s nastavenou/modifikovanou promeˇnnou: PROME ˇı ´kaz parametry V Shellu jsou take´ implicitneˇ definovane´ specia´lnı´ promeˇnne´, vztahujı´cı´ se k aktua´lnı´ instanci shellu: promeˇnna´ $0 $1--$9 $# $*, #@ $? $$
vy´znam jme´no skriptu (tak jak byl spusˇteˇn) 1. azˇ 9. argument skriptu pocˇet parametru˚ skriptu zrˇeteˇzene´ vsˇechny argumenty shell na´vratova´ hodnota poslednı´ho provedene´ho prˇ´ıkazu PID aktua´lnı´ho shellu (jednoznacˇne´ cˇ´ıslo)
$* a $# se lisˇ´ı pokud jsou v uvozovka´ch ”$*” --> ”$1 $2 $3 ...” ”$@” --> ”$1” ”$2” ”$3” ...
4
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
24
Lze pouzˇ´ıt i slozˇiteˇjsˇ´ı konstrukce s pouzˇitı´m implicitnı´ch hodnot promeˇnne´: konstrukce ${prome ˇnna ´-vy ´raz} ${prome ˇnna ´=vy ´raz}
${prome ˇnna ´+vy ´raz}
${prome ˇnna ´?vy ´raz}
${#prome ˇnna ´} ${prome ˇnna ´#vzor}
${prome ˇnna ´##vzor}
${prome ˇnna ´%vzor}
${prome ˇnna ´%%vzor}
vy´znam pokud je promeˇnna´ definova´na, je dosazena jejı´ hodnota, jinak je dosazena hodnota vy´razu pokud je promeˇnna´ definova´na, je dosazena jejı´ hodnota, jinak je nastavena na hodnotu vy´razu, ktera´ je i vy´sledkem cele´ konstrukce pokud je promeˇnna´ definova´na, je dosazena hodnota vy´razu, pokud nenı´ definova´na je vy´sledkem pra´zdny´ rˇeteˇzec pokud je promeˇnna´ definova´na, je dosazena jejı´ hodnota, jinak je hodnota vy´razu vypsa´na na standardnı´ chybovy´ vy´stup a skript je ukoncˇen de´lka promeˇnne´ zacˇa´tek obsahu promeˇnne´ je porovna´n se vzorem (lze pouzˇ´ıt za´stupne´ znaky, jako v na´zvech souboru˚) a prˇ´ıpadneˇ je smaza´na nejkratsˇ´ı mozˇna´ shodujı´cı´ se cˇa´st zacˇa´tek obsahu promeˇnne´ je porovna´n se vzorem (lze pouzˇ´ıt za´stupne´ znaky, jako v na´zvech souboru˚) a prˇ´ıpadneˇ je smaza´na nejdelsˇ´ı mozˇna´ shodujı´cı´ se cˇa´st konec obsahu promeˇnne´ je porovna´n se vzorem (lze pouzˇ´ıt za´stupne´ znaky, jako v na´zvech souboru˚) a prˇ´ıpadneˇ je smaza´na nejkratsˇ´ı mozˇna´ shodujı´cı´ se cˇa´st konec obsahu promeˇnne´ je porovna´n se vzorem (lze pouzˇ´ıt za´stupne´ znaky, jako v na´zvech souboru˚) a prˇ´ıpadneˇ je smaza´na nejdelsˇ´ı mozˇna´ shodujı´cı´ se cˇa´st
Dalsˇ´ı promeˇnne´ implicitneˇ definovane´ v shellu:
4
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
HOME HOSTNAME LANG
PATH
USER SHELL TERM
doma´cı´ adresa´rˇ uzˇivatele, lze take´ pouzˇ´ıt zkra´ceneˇ znak jme´no pocˇ´ıtacˇe u programu˚ s na´rodnı´ podporou rˇ´ıka´ aby pouzˇ´ıvali definice jine´ho jazyka nezˇ implicitnı´ anglicˇtiny (naprˇ. LANG=cs_CZ mc)– pouze pokud nejsou nastavene´ promeˇnne´ LC ???, ktere´ majı´ vysˇsˇ´ı prioritu seznam adresa´rˇu˚ oddeˇleny´ch dvojtecˇkou pro vyhleda´va´nı´ prˇ´ıkazu, implicitneˇ se nehleda´ v aktua´lnı´m a cesta veˇtsˇinou aktua´lnı´ adresa´rˇ neobsahuje – z akt. adresa´rˇe nutno spousˇteˇt pomocı´ ./pr ˇı ´kaz jme´no prˇihla´sˇene´ho uzˇivatele jme´no pra´veˇ beˇzˇ´ıcı´ho shellu typ termina´lu (pro celoobrazovkove´ aplikace, ktere´ musı´ zna´t specia´lnı´ sekvence pro ovla´da´nı´ termina´lu
25
4
4.2
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
26
ˇ ´ıdı´cı´ konstrukce v shellu R
Podmı´nky if pr ˇı ´kaz podmı ´nka then pr ˇı ´kaz pr ˇı ´kaz ... fi Provede se prvnı´ prˇ´ıkaz a v prˇ´ıpadeˇ nulove´ (u´speˇch) na´vratove´ hodnoteˇ se provedou prˇ´ıkazy v bloku za then, vlozˇenı´m znaku ! prˇed prˇ´ıkaz dojde k negaci (prˇ´ıkaz se provede prˇi nenulove´ na´vratove´ hodnoteˇ). Lze pouzˇ´ıt variantu rozsˇ´ırˇenou o blok else, prˇ´ıpadneˇ dalsˇ´ı bloky elif if pr ˇı ´kaz podmı ´nka1 then pr ˇı ´kaz pr ˇı ´kaz ... elif pr ˇı ´kaz podmı ´nka2 then pr ˇı ´kaz pr ˇı ´kaz ... else pr ˇı ´kaz pr ˇı ´kaz ... fi
Veˇtvenı´ case hodnota in vzor1) pr ˇı ´kazy ;; vzor2) pr ˇı ´kazy ;; ... esac
Ve vzoru je mozˇne´ pouzˇ´ıt za´stupne´ znaky shellu (vzory pro hromadnou specifikaci souboru˚), prˇ´ıpadneˇ oddeˇlit vı´ce variant znakem |.
4
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
27
Cykly s podmı´nkou while pr ˇı ´kaz podmı ´nka do pr ˇı ´kaz pr ˇı ´kaz ... done until pr ˇı ´kaz podmı ´nka do pr ˇı ´kaz pr ˇı ´kaz ... done Iteracˇnı´ cykly for prome ˇnna ´ in seznam do pr ˇı ´kaz pr ˇı ´kaz ... done for ((vy ´raz1 ; vy ´raz2 ; vy ´raz3 )) do pr ˇı ´kaz pr ˇı ´kaz ... done Vsˇechny cykly lze prˇedcˇasneˇ ukoncˇit prˇ´ıkazem break, prˇ´ıpadneˇ si vyzˇa´dat ukoncˇenı´ beˇhu jednoho pru˚chodu a okamzˇity´ skok na zacˇa´tek dalsˇ´ıho pru˚chodu prˇ´ıkazem continue. Prˇ´ıklady: for i in * ; do if [ -d ”$i” ] ; then stat $i fi done for ((i = 1; i < 10 ; i = i + 1)) do echo $i done
4
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
28
Prˇ´ıkaz test Pouzˇitı´ hlavneˇ u prˇ´ıkazu if a u cyklu˚ while a until. Ma´ zkra´cenou variantu [ (je nutno ukoncˇit pa´rovou za´vorkou ]. Pouzˇitı´: test argumenty nebo [ argumenty ]. Porovna´va´nı´ rˇeteˇzcu˚: argumenty rˇeteˇzec -n rˇeteˇzec -z rˇeteˇzec rˇeteˇzec1 = rˇeteˇzec2 rˇeteˇzec1 != rˇeteˇzec2
kdy je test u´speˇsˇny´ nepra´zdny´ rˇeteˇzec nepra´zdny´ rˇeteˇzec pra´zdny´ rˇeteˇzec rˇeteˇzce jsou stejne´ rˇeteˇzce nejsou stejne´
Porovna´va´nı´ cˇ´ısel: argumenty cˇ´ıslo1 -eq cˇ´ıslo2 cˇ´ıslo1 -ne cˇ´ıslo2 cˇ´ıslo1 -lt cˇ´ıslo2 cˇ´ıslo1 -gt cˇ´ıslo2 cˇ´ıslo1 -le cˇ´ıslo2 cˇ´ıslo1 -ge cˇ´ıslo2
kdy je test u´speˇsˇny´ cˇ´ısla se rovnajı´ (equal) cˇ´ısla se nerovnajı´ (not equal) prvnı´ cˇ´ıslo je mensˇ´ı nezˇ druhe´ (less than) prvnı´ cˇ´ıslo je veˇtsˇ´ı nezˇ druhe´ (greater than) prvnı´ cˇ´ıslo je mensˇ´ı nebo rovno (less or equal)druhe´mu prvnı´ cˇ´ıslo je veˇtsˇ´ı nebo rovno druhe´mu (greater or equal)
4
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
29
Testova´nı´ souboru˚: argumenty soubor1 -efsoubor2 soubor1 -ntsoubor2 soubor1 -otsoubor2 -e soubor -f soubor -d soubor -b soubor -c soubor -p soubor -S soubor -r soubor -w soubor -x soubor -u soubor -g soubor -s soubor -L soubor
kdy je test u´speˇsˇny´ oba na´zvy ukazujı´ na stejny´ i-node (hardlinky) prvnı´ soubor je noveˇjsˇ´ı nezˇ druhy´ (newer than) prvnı´ soubor je starsˇ´ı nezˇ druhy´ (older than) existuje obycˇejny´ soubor adresa´rˇ blokovy´ specia´lnı´ soubor znakovy´ specia´lnı´ soubor pojmenovana´ roura socket prˇ´ıstupny´ pro cˇtenı´ (pra´vo r) prˇ´ıstupny´ pro za´pis (pra´vo w) spustitelny´ (pra´vo x) nastaven setuid bit nastaven setgid bit de´lka souboru je nenulova´ soubor je symbolicky´ odkaz
Podmı´nky u prˇ´ıkazu test lze rˇeteˇzit pomocı´ bina´rnı´ch opera´toru˚ -a (and) a -o (or), negovat pomocı´ opera´toru !, prˇ´ıpadneˇ meˇnit porˇadı´ zpracova´nı´ pomocı´ za´vorek (nutno prˇedrˇadit zpeˇtne´ lomı´tko).
4
ˇ ILEJS ˇ ´I KONSTRUKCE V SHELLU POKROC
30
Vstup dat Nacˇtenı´ rˇa´dky: ˇNNA ´ read PROME Prˇ´ıkaz nacˇte z kla´vesnice (prˇesneˇji standardnı´ho vstupu) jeden rˇa´dek textu. Pro vy´pis vy´zvy k zada´nı´ dat se cˇasto pouzˇ´ıva´ prˇ´ıkaz typu: echo -n ”Zadej text: ” read VSTUP Volba -n potlacˇ´ı prˇechod kurzoru na novy´ rˇa´dek po vypsa´nı´ textu. Zobrazenı´ mozˇnostı´: select prome ˇnna ´ in moz ˇnosti do pr ˇı ´kazy ... done Na zacˇa´tku cyklu se vzˇdy zobrazı´ ocˇ´ıslovana´ nabı´dka z uvedeny´ch mozˇnostı´ a cˇeka´ se na zada´nı´ cˇ´ısla volby. Zadana´ hodnota se ulozˇ´ı do promeˇnne´ REPLY a pokud to je spra´vneˇ zadane´ cˇ´ıslo volby, prˇirˇadı´ se takte´zˇ na´zev volby do promeˇnne´ specifikovane´ v prˇ´ıkazu select. Pote´ se postupneˇ provedou vsˇechny prˇ´ıkazy a opeˇt dojde ke zobrazenı´ nabı´dky. Uvnitrˇ teˇla prˇ´ıkazu se ocˇeka´va´ pouzˇitı´ podmı´neˇny´ch prˇ´ıkazu˚ nebo veˇtvenı´ za u´cˇelem provedenı´ cˇinnosti za´visle´ na zadane´ volbeˇ. Ukoncˇit cyklus lze prˇ´ıkazem break.
5
5
EDITORY
31
Editory
Prvnı´ editor v unixu byl ed, jedna´ se o rˇa´dkovy´ editor a prˇestozˇe prˇi jeho dobre´ znalosti umozˇnˇuje efektivneˇ prova´deˇt i komplexneˇjsˇ´ı u´pravy v textovy´ch souborech, dnes se moc nepouzˇ´ıva´. Nicme´neˇ jeho znalost lze uplatnit prˇi tvorbeˇ prˇ´ıkazovy´ch sad pro da´vkovy´ editor sed, jehozˇ prˇ´ıkazy vycha´zejı´ z prˇ´ıkazu˚ tohoto editoru. Dalsˇ´ım rˇa´dkovy´m editorem byl ex, ktery´ obsahuje rozsa´hlejsˇ´ı sadu prˇ´ıkazu˚ a podstatneˇ veˇtsˇ´ı mozˇnosti nastavenı´, nicme´neˇ sta´le prˇetrva´va´ znacˇna´ neintuitivita ovla´da´ni, zvla´sˇteˇ pro zacˇa´tecˇnı´ky. Prvnı´m celoobrazovkovy´m editorem byl editor vi, cozˇ je v podstateˇ ex rozsˇ´ırˇeny´ o celoobrazovkovy´ rezˇim (mozˇnost rˇa´dkove´ho zada´va´nı´ prˇ´ıkazu˚ je zachova´na). Vzhledem k velky´m ru˚znorodostem koncovy´ch zarˇ´ızenı´ pouzˇ´ıvany´ch s UNIX syste´my byl editor vi koncipova´n tak, aby pokud mozˇno fungoval na co nejveˇtsˇ´ım mnozˇstvı´ typu˚ termina´lu˚, z cˇehozˇ plyne mı´rneˇ odlisˇna´ filozofie ovla´da´nı´ od te´, ktera´ je beˇzˇna´ v syste´mech typu Windows nebo DOS. Na´sledujı´cı´ popis se bude ty´kat editoru vi. Editor rozlisˇuje trˇi za´kladnı´ rezˇimy, v ktery´ch uzˇivatel beˇhem pra´ce mu˚zˇe by´t a mezi ktery´mi mu˚zˇe libovolneˇ prˇecha´zet: • prˇ´ıkazovy´ – v tomto rezˇimu je editor po spusˇteˇnı´ a kdykoliv do neˇj lze prˇejı´t stiskem Esc) • vkla´dacı´ (nebo prˇepisovacı´) – v tomto rezˇimu lze do textu psa´t • rezˇim dolnı´ prˇ´ıkazove´ rˇa´dky (aktivace stiskem dvojtecˇky, kurzor se prˇesune na spodnı´ rˇa´dek obrazovky – mozˇno zada´vat prˇ´ıkazy editoru ex) V prˇ´ıkazove´m rezˇimu (COMMAND MODE) se lze v textu pohybovat, vyhleda´vat, mazat libovolne´ cˇa´sti textu a prova´deˇt dalsˇ´ı operace. Ve vkla´dacı´m rezˇimu (INSERT/REPLACE MODE) lze vkla´dat nebo prˇepisovat existujı´cı´ text jiny´m. V rezˇimu dolnı´ rˇa´dky se prova´dı´ naprˇ. ukla´da´nı´ a nacˇ´ıta´nı´ souboru˚, da´vkove´ nahrazova´nı´ nebo zmeˇna nastavenı´ editoru.
5
EDITORY
32
Prˇ´ıkazovy´ rezˇim Zada´vane´ prˇ´ıkazy se nezobrazujı´. Prˇed veˇtsˇinu prˇ´ıkazu˚ lze zadat cˇ´ıslo, ktere´ specifikuje pocˇet opakova´nı´ prˇ´ıkazu. Neu´plneˇ zadany´ vı´ceznakovy´ prˇ´ıkaz lze zrusit kla´vesou Escape. Prˇesun kurzoru, vyhleda´va´nı´: kla´vesy kurzorove´ kla´vesy 0 ˆ $ b, B w, W e, E {, } G /text ?text n N Ctrl-B, Ctrl-F Ctrl-U, Ctrl-D mpı´smeno ‘pı´smeno ’pı´smeno %
9
vy´znam posun kurzoru v textu (nelze se dostat mimo text) prˇesun na zacˇa´tek rˇa´dku prˇesun na prvnı´ zobrazitelny´ znak rˇa´dku prˇesun na konec rˇa´dku skok na zacˇa´tek prˇedchozı´ho slova9 skok na zacˇa´tek na´sledujı´cı´ho slova skok na konec aktua´lnı´ho slova skok na zacˇa´tek, resp. konec odstavce10 prˇesun kurzoru na poslednı´ rˇa´dek. Pokud prˇedcha´zı´ cˇ´ıslo, bere se jako cˇ´ıslo rˇa´dku. vyhleda´va´nı´ textu smeˇrem doprˇedu vyhleda´va´nı´ textu smeˇrem zpa´tky vyhleda´nı´ dalsˇ´ıho vy´skytu ve stejne´m smeˇru vyhleda´nı´ dalsˇ´ıho vy´skytu v opacˇne´m smeˇru odrolova´nı´ na prˇedcha´zejı´cı´ (resp. na´sledujı´cı´) stra´nku odrolova´nı´ o pu˚l stra´nky vzad (resp. vprˇed) ulozˇenı´ aktua´lnı´ pozice kurzoru pod pı´smeno prˇesun kurzoru na pozici ulozˇenou drˇ´ıve prˇ´ıkazem m jako prˇedchozı´ prˇ´ıkaz, ale prˇesun kurzoru na zacˇa´tek rˇa´dky vyhleda´nı´ protilehle´ za´vorky (, [, {, ), ], }
Pokud je prˇ´ıkaz zada´n maly´m pı´smenem, mu˚zˇe slovo obsahovat pouze pı´smena, cˇ´ıslice a podtrzˇ´ıtko. V prˇ´ıpadeˇ zada´nı´ velky´m pı´smenem je soucˇa´st slova vsˇechno kromeˇ mezer, tabula´toru˚ a novy´ch rˇa´dku˚ 10 za oddeˇlovacˇ rˇa´dku˚ povazˇuje editor pra´zdny´ rˇa´dek
5
EDITORY
33
Vkla´da´nı´, maza´nı´, zmeˇny a kopı´rova´nı´ textu: Pozn.:Vsˇechny prˇ´ıkazy pro maza´nı´ a na´hrady textu ukla´dajı´ smazany´ text do bufferu, odkud lze pak smazany´ text vlozˇit jinam. Prˇi kazˇde´m maza´nı´ se prˇedchozı´ obsah bufferu prˇepisuje. kla´vesy i I A o O x dd dw d$ nebo D cc, cw, c$, C yy, Y p P J u U 12
vy´znam prˇepne do vkla´dacı´ho rezˇimu, kurzor zu˚stane na soucˇasne´ pozici vkla´dacı´ rezˇim, kurzor na zacˇa´tek rˇa´dku vkla´dacı´ rezˇim, kurzor na konec rˇa´dku vlozˇ´ı novy´ rˇa´dek za soucˇasny´ a prˇepne do vkla´dacı´ho rezˇimu vlozˇ´ı novy´ rˇa´dek prˇed soucˇasny´ a prˇepne do vkla´dacı´ho rezˇimu smaza´nı´ znaku pod kurzorem smaza´nı´ rˇa´dky smaza´nı´ slova smaza´nı´ textu do konce rˇa´dky12 podobne´ jako maza´nı´, ale editor se navı´c automaticky prˇepne do vkla´dacı´ho rezˇimu (na´hrada cˇa´sti textu jiny´m) zkopı´rova´nı´ aktua´lnı´ ra´dky do bufferu vlozˇenı´ obsahu bufferu za aktua´lnı´ pozici kurzoru vlozˇenı´ obsahu bufferu prˇed aktua´lnı´ pozici kurzoru spojenı´ aktua´lnı´ rˇa´dky s na´sledujı´cı´ vra´cenı´ poslednı´ operace meˇnı´cı´ text (i vı´cena´sobneˇ) zrusˇenı´ vsˇech zmeˇn na aktua´lnı´ rˇa´dce (nelze po prˇesunutı´ kurzoru)
Obecneˇ kdyzˇ se zada´ za d libovolny´ prˇ´ıkaz prˇesunu textu, bude smaza´n text od pozice kurzoru do cı´love´ho mı´sta, kam by se kurzor prˇesunul. Tedy naprˇ. d} smazˇe vsˇechno od kurzoru do prvnı´ na´sledujı´cı´ pra´zdne´ rˇa´dky.
5
EDITORY
34
Rezˇim dolnı´ prˇ´ıkazove´ rˇa´dky prˇ´ıkaz :w [ soubor ]
:q :wq :x :w » soubor :od,dow soubor :e soubor :r soubor :n
vy´znam ulozˇenı´ editovane´ho textu do aktua´lnı´ho souboru (pokud je zada´no jme´no, nastavı´ se tento soubor jako aktua´lnı´). Pro prˇepsa´nı´ souboru je nutne´ zadat :w! soubor ukoncˇenı´ editoru (pokud jsou v textu neulozˇene´ zmeˇny, musı´ se pouzˇ´ıt prˇ´ıkaz :q! ulozˇenı´ souboru a ukoncˇenı´ editoru ukoncˇenı´ editoru, pokud byl soubor zmeˇneˇn bude ulozˇen (take´ ZZ) prˇipojenı´ textu na konec souboru ulozˇenı´ pouze dane´ho rozsahu rˇa´dek vymaza´nı´ aktua´lnı´ho textu a nacˇtenı´ obsahu jine´ho souboru (v prˇ´ıpadeˇ neulozˇeny´ch zmeˇn nutno pouzˇ´ıt :e! soubor) vlozˇenı´ obsahu souboru na aktua´lnı´ pozici kurzoru prˇechod na dalsˇ´ı soubor v porˇadı´ (zadany´ na prˇ´ıkazove´ rˇa´dce)
6
6
APLIKACE POD LINUXEM
35
Aplikace pod Linuxem
Firefox, Thunderbird Dvojice web browser a mail klient, pouzˇ´ıvana´ nejen pod Linuxem. Data jsou prˇenositelna´ mezi jednotlivy´mi platformami, takzˇe naprˇ´ıklade pokud pouzˇ´ıva´te Thunderbird pod windows, lze zkopı´rova´nı´m existujı´cı´ho adresa´rˇe z daty plynule prˇejı´t k pouzˇ´ıvanı´ Thunderbirdu pod Linuxem. LICQ Jeden z mnoha ICQ klientu˚ pro Linux. Je jednoduchy´, vzhledoveˇ podobny´ klientu pro Windows a nabı´zı´ navı´c neˇktere´ uzˇitecˇne´ funkce. Obsahuje jak textove´ rozhranı´, tak graficke´ s vyuzˇitı´m knihovny Qt. XMMS Da´ se rˇ´ıct, zˇe se jedna´ o WinAMP pro Linux, je skinovatelny´ a z hlediska za´kladnı´ch funkcı´ je s WinAMPem identicky´. Nabı´zı´ take´ ru˚zne´ druhy pluginu˚ (zvukove´ efekty, vizualizace, ru˚zne´ pluginy pro ovla´da´nı´ pomocı´ tlacˇ´ıtek v dolnı´ lisˇteˇ anebo take´ joystickem a IR ovladacˇem). MPlayer univerza´lnı´ prˇehra´vacˇ mnoha video i zvukovy´ch forma´tu˚. Umı´ take´ vyuzˇ´ıt velke´ mnozˇstvı´ zobrazovacı´ch graficky´ch knihoven, ale i textove´ knihovny AALIB pro zobrazova´nı´ grafiky v textove´m rezˇimu pomocı´ vhodny´ch kombinacı´ ascii znaku˚. Zvla´da´ take´ prˇehra´va´nı´ video DVD disku˚, ale nepodporuje menu obsazˇena´ na discı´ch s filmy. Ogle Tento prˇehra´vacˇ umı´ pouze prˇehra´va´nı´ DVD video disku˚, ale zvla´da´ tuto cˇinnost le´pe nezˇ MPlayer, tj. vcˇetneˇ podpory DVD menu. gqview Prohlı´zˇecˇ obra´zku˚, podobny´ IrfanView nebo ACDSee. Pomocı´ kla´vesove´ kombinace lze prova´deˇt rotace obra´zku˚. Gimp Editor obra´zku˚, do jiste´ mı´ry na´hrada photoshopu, ale ma´ odlisˇnou filozofii pra´ce, ktera´ neˇktery´m lidem cˇinı´ potı´zˇe si zvyknout. K3B Program na vypalova´nı´ CD a DVD pro KDE, ktery´ zvla´da´ vsˇe co beˇzˇny´ vypalovacı´ program pod Windows. Jedna´ se o grafickou nadstavbu nad textove´ utility cdrecord a balı´k dvd+rw-tools. OpenOffice Kancela´rˇsky´ balı´k obsahujı´cı´ programy obdobne´ teˇm z Microsoft Office, jehozˇ forma´ty umı´ cˇ´ıst i ukla´dat, acˇkoliv ma´ take´ sve´ vlastnı´. TEX Zna´my´, kvalitnı´ a hojneˇ pouzˇ´ıvany´ syste´m pro sazbu textu˚, cˇla´nku˚ a knih. Narozdı´l od MS Office nebo OpenOffice se nejedna´ o WYSIWYG syste´m. Uzˇivatel nejprve prˇipravı´ zdrojovy´ text za pomoci forma´tovacı´ch znacˇek (vzda´lena´ obdoba HTML, ale nabı´zı´ mnohem vı´ce mozˇnostı´, naprˇ´ıklad definice maker, podmı´nek, atd.) a pote´ je da´vkoveˇ proveden prˇeklad do forma´tu DVI (Device Independent), ktery´ lze prˇ´ımo tisknout anebo do PDF forma´tu, ktery´ je zase vhodneˇjsˇ´ı pro distribuci elektronickou cestou.
6
APLIKACE POD LINUXEM
36
GNUplot Na´stroj pro generova´nı´ grafu˚ ze vstupnı´ch dat. Je to opeˇt rˇa´dkovy´ program, obsahujı´cı´ vlastnı´ skriptovacı´ jazyk, ktery´ umozˇnˇuje efektivnı´ tvorbu jak jednoduchy´ch grafu˚ bez nutnosti dlouhe´ho studova´nı´ manua´lu˚ (stacˇ´ı jen zkopı´rovat jeden z prˇilozˇeny´ch prˇ´ıkladu˚), tak i pomeˇrneˇ slozˇity´ch grafu˚, zahrnujı´cı´ch pomocne´ vy´pocˇty a vcˇetneˇ mnoha mozˇnostı´ popisu˚ dat. MGP - MagicPoint. Na´stroj pro vytva´rˇenı´ jednoduchy´ch prezentacı´, vzhledoveˇ podobny´ch naprˇ. teˇm z powerpointu, ale vyuzˇ´ıva´ textovy´ forma´t vstupnı´ch dat (tedy opeˇt to nenı´ WYSIWYG) a neˇkolik rˇ´ıdı´cı´ch prˇ´ıkazu˚, jimizˇ lze ovlivnit zpu˚sob zobrazenı´ dat v jednotlivy´ch stra´nka´ch. Po zvla´dnutı´ neˇkolika za´kladnı´ch prˇ´ıkazu˚ lze vytva´rˇet i pomeˇrneˇ sofistikovane´ prezentace efektivneˇji nezˇ ve WYSIWYG programech.
7
LITERATURA
7
Literatura
Operacˇnı´ syste´m Linux - Prˇ´ırucˇka cˇeske´ho uzˇivatele Vile´m Vychodil, Computer Press Jemny´ u´vod do syste´mu UNIX Luka´sˇ Petrlı´k, Kopp
37