K1458-01.qxd
27.8.2007
14:42
StrÆnka 5
Stručný obsah
5
Stručný obsah Předmluva
23
1 Vítejte ve světě Linuxu
33
ČÁST 1 Operační systém Linux
49
2 Začínáme
51
3 Nástroje příkazového řádku
69
4 Souborový systém Linuxu
99
5 Shell
ČÁST 2 Editory
129
157
6 Editor vim
159
7 Editor emacs
209
ČÁST 3 Shelly
261
8 Bourne Again Shell
263
9 TC Shell
341
ČÁST 4 Programovácí nástroje
385
10 Programovací nástroje
387
11 Programování Bourne Again Shellu
431
12 Jazyk gawk pro zpracování textových souborů na základě vzorů
517
13 Editor sed
549
ČÁST 5 Referenční příručka Referenční seznam příkazů
ČÁST 6 Přílohy
565 567
775
Regulární výrazy
777
Nápověda
785
Jak udržet systém v aktualizovaném stavu
795
Slovník pojmů
807
Rejstřík
865
K1458-01.qxd
27.8.2007
14:42
StrÆnka 6
K1458-01.qxd
27.8.2007
14:42
StrÆnka 7
Obsah
7
Obsah Předmluva Čím se tato kniha vyznačuje Obsah Doplňky Poděkování
8 9 10 14 15
1 Vítejte ve světě Linuxu
33
Spojení mezi GNU a Linuxem
33
Historie GNU – Linux Kód je svobodný Pobavte se!
Dědictví Linuxu: Unix Co je na Linuxu tak skvělé? Proč je Linux tak populární v prostředí hardwarových firem a vývojářů Linux je přenositelný Standardy Programovací jazyk C
Přehled systému Linux Linux má rozhraní pro programování jádra Linux umožňuje práci více uživatelů Na Linuxu lze provádět více úloh najednou Linux poskytuje bezpečný hierarchický souborový systém Shell: Interpretr příkazů a programovací jazyk Velká kolekce užitečných programů Komunikace mezi procesy Správa systému
Další rysy Linuxu GUI: Grafické uživatelské rozhraní Síťové programy Vývoj softwaru
Souhrn kapitoly Cvičení
34 35 36
36 37 38 39 39 40
40 41 41 42 42 43 44 45 45
45 45 46 46
47 47
K1458-01.qxd
8
27.8.2007
14:42
StrÆnka 8
Obsah
ČÁST 1 Operační systém Linux
49
2 Začínáme
51
Konvence použité v této knize Přihlašování Přihlašování z terminálu Vzdálené přihlašování: emulace terminálu, ssh a telnet
Práce se shellem Jaký Shell máte spuštěn? Oprava chyb
Jak udržet svou moc na uzdě: přístup superuživatele Kde najít dokumentaci Přepínač --help man: zobrazuje systémový manuál info: zobrazí informace o příkazech a programech HOWTO: jak to celé funguje? Jak najít nápovědu na Internetu
Další informace o přihlašování Co dělat, když se nemůžete přihlásit do systému Odhlášení Používání virtuálních konzol Změna vlastního hesla
Souhrn kapitoly Cvičení Pokročilá cvičení
3 Nástroje příkazového řádku Speciální znaky Základní nástroje ls: výpis názvů souborů cat: zobrazí obsahu textového souboru rm: odstraní soubor less je more: zobrazí textový soubor na obrazovce po jednotlivých obrazovkách hostname: zobrazí název systému
Práce se soubory cp: kopíruje soubor mv: změna názvu souboru lpr: vytiskne soubor grep: najde řetězec head: zobrazí začátek souboru
51 54 54 55
55 55 56
58 58 58 59 61 63 63
64 65 65 66 66
67 68 68
69 70 71 71 72 72 72 73
73 73 74 75 75 76
K1458-01.qxd
27.8.2007
14:42
StrÆnka 9
Obsah
9
tail: zobrazí konec souboru sort: zobrazí seřazený soubor uniq: vynechá duplicitní řádky souboru diff: porovná dva soubory file: testuje obsah souboru
76 78 78 78 79
| (roura): Komunikace mezi procesy Čtyři další programy
79 80
echo: zobrazí text date: zobrazí čas a datum script: nahraje relaci Linuxu unix2dos: převádí linuxové soubory do formátu Windows
Komprimace a archivace souborů bzip2: komprimace souborů bunzip2 a bzcat: dekomprimace souboru gzip: komprimuje soubor tar: zabalí a rozbalí soubory
Příkazy pro vyhledávání which a whereis: jak najít příkaz či program apropos: hledání klíčového slova slocate: vyhledávání souboru
Jak si opatřit informace o uživateli a systému who: vypíše uživatele systému finger: vypíše uživatele systému w: vypíše uživatele systému
Komunikace s jinými uživateli write: odešle zprávu mesg: povoluje nebo zakazuje příjem zpráv
E-mail Souhrn kapitoly Cvičení Pokročilá cvičení
4 Souborový systém Linuxu Hierarchický souborový systém Adresáře a normální soubory Názvy souborů mkdir: vytváří adresář Pracovní adresář Domovský adresář Absolutní cesty Relativní cesty
80 81 81 82
82 83 84 84 85
87 87 88 89
89 90 90 92
93 93 94
94 95 97 98
99 100 100 101 103 104 105 106 107
K1458-01.qxd
10
27.8.2007
14:42
StrÆnka 10
Obsah
Důležité standardní adresáře a soubory
Práce s adresáři rmdir: odstraní adresář Cesty mv, cp: přesune nebo zkopíruje soubor mv: přesun adresáře
Přístupová oprávnění ls -l: zobrazí oprávnění chmod: mění přístupová oprávnění Oprávnění setuid a setgid Oprávnění pro přístup k adresářům
Odkazy Pevné odkazy Symbolické odkazy rm: odstraní odkaz
Souhrn kapitoly Cvičení Pokročilá cvičení
5 Shell
109
112 112 113 113 114
115 115 116 117 118
119 120 122 124
125 126 127
129
Příkazový řádek Syntaxe Zpracování příkazového řádku Spuštění příkazového řádku
129 129 132 134
Standardní vstup a standardní výstup
135
Obrazovka jako soubor Klávesnice a obrazovka jako standardní vstup a standardní výstup Přesměrování /dev/null: Jak nechat data zmizet Roury
135
Spuštění programu na pozadí Generování názvů souborů/doplňování názvů adresářů
136 137 142 142
145 147
Speciální znak ? Speciální znak * Speciální znaky [ ]
147 148 150
Vestavěné příkazy Souhrn kapitoly
151 152
Příkazy a vestavěné příkazy představené v této kapitole
Cvičení Pokročilá cvičení
153
153 154
K1458-01.qxd
27.8.2007
14:42
StrÆnka 11
Obsah
ČÁST 2 Editory 6 Editor vim Historie Kurz: Vytvoření a editace souboru v editoru vim Spuštění vim Příkazový a vkládací režim Zápis textu Jak získat nápovědu Ukončení editační relace
Parametr compatible Úvod do vlastností editoru vim Online nápověda Režimy činnosti
Zobrazení Opravy textu přímo při psaní Pracovní buffer Délka řádku a velikost souboru Okna Zamykání souborů Nenormální ukončení editační relace Obnova textu po havárii
Příkazový režim: přesun kurzoru Přesun kurzoru po jednotlivých znacích Přesun kurzoru na určitý znak Posun kurzoru po jednotlivých slovech Přesun kurzoru po jednotlivých řádcích Přesun kurzoru o celé věty či odstavce Přesun kurzoru uvnitř obrazovky Prohlížení různých částí pracovního bufferu
Vkládací režim Vkládání textu Připojení textu Otevření řádku pro vkládání textu Nahrazování textu Označení (quoting) speciálních znaků ve vkládacím režimu
Příkazový režim: Mazání a změna textu Odvolání provedených změn Mazání znaků Mazání textu
11
157 159 159 160 161 162 164 164 168
168 169 169 169
170 170 171 171 171 171 172 173
174 175 175 175 176 176 176 177
177 178 178 178 178 179
179 179 179 180
K1458-01.qxd
12
27.8.2007
14:42
StrÆnka 12
Obsah
Změna textu Nahrazování textu Změna velikosti písmen
Vyhledávání a nahrazování Vyhledávání znaku Vyhledávání řetězce Záměna jednoho řetězce za jiný
Různé příkazy Join Status . (tečka)
Příkazy Yank, Put a Delete
181 182 182
182 183 183 185
188 188 188 188
189
Univerzální buffer
189
Čtení a zápis souborů
191
Čtení souborů Zápis souborů Identifikace aktuálního souboru
Nastavení parametrů Nastavení parametrů přímo ve vimu Nastavení parametrů ve startovacím souboru Startovací soubor .vimrc Parametry
Pokročilé techniky editace Spouštění příkazů shellu z editoru vim
Měrné jednotky Znak Slovo Slovo ohraničené prázdným znakem Řádek Věta Odstavec Okno Faktor opakování
Souhrn kapitoly Cvičení Pokročilá cvičení
191 191 192
192 192 192 193 193
197 199
200 200 200 201 201 201 202 202 202
203 207 208
K1458-01.qxd
27.8.2007
14:42
StrÆnka 13
Obsah
7 Editor emacs Historie Vývoj emacs vs. vim
Kurs: Začínáme pracovat v emacsu
13
209 209 209 210
211
Spuštění emacsu Ukončení editoru emacs Vkládání textu Mazání znaků Přesun kurzoru Editace na místě kurzoru Ukládání a načítání bufferu
211 212 213 213 213 216 217
Základní příkazy pro editaci
217
Klávesy: notace a použití Posloupnosti kláves a příkazy META-x: Spouštění příkazu bez vazby na klávesu Číselné argumenty Bod a kurzor Posouvání obsahu bufferu Mazání textu Vyhledávání
Online nápověda Pokročilé úpravy textu Odvolání provedených změn Značka a region Cut & Paste: vkládání vyjmutého textu Vkládání speciálních znaků Globální bufferové příkazy Soubory Buffery Okna Spuštění příkazu shellu na popředí Spuštění příkazu shellu na pozadí Režimy úprav pro různé jazyky Výběr hlavního režimu Režimy pro běžné texty Režim C Úprava odsazení Komentáře Režimy se speciálním účelem Jak si přizpůsobit emacs
217 219 219 219 220 220 220 221
222 224 224 226 227 229 229 231 233 234 236 237 237 238 238 241 243 244 245 246
K1458-01.qxd
14
27.8.2007
14:42
StrÆnka 14
Obsah
Ukázkový soubor .emacs
Další informace
250
251
Jak získat emacs Souhrn kapitoly
251 251
Cvičení Pokročilá cvičení
258 260
ČÁST 3 Shelly 8 Bourne Again Shell Historie Základy shellu Startovací soubory Neinteraktivní shelly Příkazy, které jsou symboly Přesměrování standardního chybového výstupu Píšeme jednoduchý skript shellu Oddělování a seskupování příkazů Řízení úloh (jobů) Manipulace se zásobníkem adresářů
261 263 264 265 265 266 268 268 271 274 278 280
Parametry a proměnné
283
Proměnné uživatele Atributy proměnné Klíčové proměnné Speciální znaky
285 287 289 297
Procesy Struktura procesu Identifikace procesů Provedení příkazu
Historie Proměnné řídící historii Opětovné spouštění a editace příkazů Knihovna Readline
Aliasy Apostrofy a uvozovky v aliasech Příklady aliasů
Funkce Řízení vlastností a voleb shellu bash
298 298 299 300
301 301 302 310
316 317 318
319 322
Přepínače příkazového řádku Vlastnosti shellu
322 322
Zpracování příkazového řádku
326
K1458-01.qxd
27.8.2007
14:42
StrÆnka 15
Obsah
Doplňování historie Substituce aliasů Analýza a prohledávání příkazového řádku Doplňování příkazového řádku
Souhrn kapitoly Cvičení Pokročilá cvičení
9 TC Shell Skripty shellu Spuštění a ukončení TC Shellu Startovací soubory
15
326 327 327 327
335 337 339
341 342 343 343
Shodné vlastnosti shellů bash a tcsh
345
Expanze příkazového řádku (substituce) Řízení úloh Substituce názvů souborů Manipulace se zásobníkem adresářů Substituce příkazů
345 349 350 350 350
Přesměrování standardního chybového výstupu Práce s příkazovým řádkem Doplňování slov Editace příkazového řádku Kontrola pravopisu
Proměnné Substituce proměnných Řetězcové proměnné Pole řetězcových proměnných Číselné proměnné Složené závorky Speciální formy proměnných Proměnné shellu
Řídicí struktury
350 351 352 353 354
356 356 357 358 358 361 361 361
369
if goto Obsluha přerušení if...then...else foreach while break a continue switch
369 371 371 372 373 375 375 376
Vestavěné příkazy
377
K1458-01.qxd
16
27.8.2007
14:42
StrÆnka 16
Obsah
Souhrn kapitoly Cvičení Pokročilá cvičení
ČÁST 4 Programovácí nástroje 10 Programovací nástroje Programování v jazyku C
381 382 383
385 387 387
Kontrola překladače Ukázka programování v C Překlad a linkování programu C
388 388 392
Používání sdílených knihoven
395
Náprava poškozených knihoven Vytváření sdílených knihoven
397 397
make: udržuje sadu programů v aktuálním stavu Implicitní závislosti
Ladění programů jazyka C gcc: přepínače pro výpis varování překladače Symbolický debugger
Vlákna Systémová volání strace: trasování systémových volání Řízení procesů Přístup k souborovému systému
Správa zdrojového kódu CVS: systém pro správu verzí
Souhrn kapitoly Cvičení Pokročilá cvičení
11 Programování Bourne Again Shellu Řídicí struktury if...then if...then...else if...then...elif for...in for while until break a continue case
398 400
406 408 410
415 416 416 416 417
418 418
426 428 429
431 432 432 436 438 445 447 449 452 454 455
K1458-01.qxd
27.8.2007
14:42
StrÆnka 17
Obsah
select Here dokument
Popisovače souborů Parametry a proměnné Pole Dostupnost proměnných Speciální parametry Poziční parametry Expanze prázdných a nenastavených proměnných
Vestavěné příkazy type: zobrazí informace o příkazu read: načte data zadaná uživatelem exec: provede příkaz trap: zachytí signál kill: předčasně ukončí proces getopts: analyzuje přepínače Částečný seznam vestavěných příkazů
Výrazy Aritmetické vyhodnocení Logické vyhodnocení (podmíněné výrazy) Porovnávání řetězců podle vzoru
Operátory Programy shellu Rekurzivní skript shellu
Skript shellu kviz Souhrn kapitoly Cvičení Pokročilá cvičení
12 Jazyk gawk pro zpracování textových souborů na základě vzorů
17
462 464
466 469 469 470 473 475 479
480 481 481 484 487 490 490 493
494 494 495 496
497 501 502
504 511 513 514
517
Syntaxe Argumenty Přepínače Poznámky Základy jazyka
518 518 518 519 519
Vzory Akce Komentáře Proměnné
519 520 520 521
K1458-01.qxd
18
27.8.2007
14:42
StrÆnka 18
Obsah
Funkce Aritmetické operátory Asociativní pole printf Řídicí struktury
Příklady Pokročilé programování v jazyku gawk Koproces: obousměrný vstup a výstup Načtení vstupních dat po síti
Chybová hlášení Souhrn kapitoly Cvičení Pokročilá cvičení
13 Editor sed Syntaxe Argumenty Přepínače Základy práce s editorem Adresy Instrukce Řídicí struktury Textový prostor a odkládací prostor
Příklady Souhrn kapitoly Cvičení
ČÁST 5 Referenční příručka Referenční seznam příkazů Nástroje pro zobrazení souborů a manipulaci s nimi Nástroje pro práci se sítí Nástroje zobrazující a měnící stavové údaje Programovací nástroje Různé nástroje Standardní měrné jednotky Společné přepínače Příkaz ukazka Ukazka – předvádí formát hesel aspell – kontroluje pravopis slov v souboru at – spustí příkazy ve stanovený čas
521 522 522 523 523
525 542 544 545
546 548 548 548
549 549 549 549 550 550 551 552 553
553 562 563
565 567 567 568 569 569 569 570 570 571
571 572 576
K1458-01.qxd
27.8.2007
14:42
StrÆnka 19
Obsah
19
bzip2 – komprimuje nebo dekomprimuje soubory cal – zobrazí kalendář cat – spojí a zobrazí soubory cd – nastaví nový pracovní adresář chgrp – změní skupinu asociovanou se souborem chmod – změní režim přístupu k souboru chown – Změní vlastníka soubor anebo skupinu,
579 581 582 584 585 586
se kterou je soubor asociován cmp – porovná dva soubory comm – porovná seřazené soubory configure – automaticky konfiguruje zdrojový kód cp – kopíruje soubory cpio – vytvoří archivní soubor nebo obnoví
590 592 593 595 597
soubory z archivu crontab – udržuje soubory crontab cut – vybere ze vstupních řádků znaky nebo pole date – zobrazí nebo nastaví systémové datum a čas dd – převede a zkopíruje soubor df – zobrazí údaje o využití místa na disku diff – vypíše rozdíly mezi dvěma soubory du – zobrazí údaje o velikosti místa na disku echo – vypíše zprávu expr – vyhodnotí výraz file – zobrazí katalogizaci souboru find – najde soubory podle zadaných kritérií finger – zobrazí informace o uživatelích fmt – jednoduché formátování textu fsck – zkontroluje a opraví souborový systém ftp – přenáší soubory po síti gcc – překládá programy C a C++ grep – vyhledává v souborech údaje odpovídající vzorům gzip – komprimuje nebo dekomprimuje soubor head – zobrazí začátek souboru kill – ukončí proces, specifikovaný jeho PID killall – ukončí proces zadaný názvem less – zobrazí textové soubory, stránkuje
600 604 607 609 611 613 615 620 623 625 628 630 635 637 639 643 650 654 659 662 663 665
výpis po jedné obrazovce
666
K1458-01.qxd
20
27.8.2007
14:42
StrÆnka 20
Obsah
ln – vytvoří odkaz na soubor lpr – odešle soubory na tiskárny ls – zobrazí informace o jednom či více souborech make – udržuje sadu programů v aktuálním stavu man – zobrazí dokumentaci pro příkazy mkdir – vytvoří adresář mkfs – vytvoří na zařízení souborový systém Mtools – příkazy pro práci se soubory a adresáři
671 673 675 681 686 689 690
ve stylu operačního systému DOS mv – přejmenuje nebo přesune soubor nice – mění prioritu příkazu nohup – spustí příkaz, který poběží i po odhlášení uživatele od – vytvoří výpis obsahu souboru v oktalové soustavě paste – spojí odpovídající řádky ze souborů pr – stránkuje soubory pro následný tisk ps – zobrazí stav procesů rcp – kopíruje jeden či více souborů na vzdálený systém nebo z něj rlogin – přihlásí uživatele ke vzdálenému systému rm – odstraní soubor rmdir – odstraní adresář rsh – spustí na vzdáleném systému zadané příkazy scp – bezpečně kopíruje jeden či více souborů na vzdálený systém nebo opačným směrem sleep – vytvoří proces, který „spí“ po zadaný interval sort – seřadí anebo sloučí soubory split – rozdělí soubor do sekcí ssh – bezpečné spouštění příkazů na vzdáleném systému strings – zobrazí řetězce tisknutelných znaků stty – zobrazí nebo nastaví parametry terminálu tail – zobrazí poslední část (tail; chvost) souboru tar – uloží nebo načte soubory do/z archivního souboru tee – kopíruje standardní vstup do standardního výstupu a jednoho či více jiných souborů telnet – připojí se přes síť ke vzdálenému systému test – vyhodnotí výraz top – dynamicky zobrazí stav procesu
692 696 698 699 699 703 705 707 710 712 713 715 716 717 719 720 729 730 734 735 739 742 746 747 749 752
K1458-01.qxd
27.8.2007
14:42
StrÆnka 21
Obsah
21
touch – mění čas posledního přístupu a změny souboru tr – zamění zadané znaky tty – zobrazí cestu k terminálu tune2fs – mění parametry souborových systémů
755 757 760
ext2 nebo ext3 umask – vytvoří masku oprávnění pro nově vytvářené soubory uniq – zobrazí jedinečné řádky w – zobrazí informace o uživatelích systému wc – zobrazí počet řádků, slov a bajtů which – ukáže, kde se nachází určitý příkaz v proměnné PATH who – zobrazí informace o přihlášených uživatelích xargs – převede standardní vstup na příkazové řádky
761
Přílohy Regulární výrazy Znaky Oddělovače Jednoduché řetězce Speciální znaky Hranaté závorky Hvězdičky Stříšky a znaky dolaru
Označování speciálních znaků Pravidla Nejdelší možný odpovídající řetězec Prázdné regulární výrazy
Závorkování výrazů Nahrazující řetězec Ampersand Číslování uzávorkovaných výrazů
Rozšířené regulární výrazy Souhrn přílohy
Nápověda Řešení problému Jak najít informace týkající se Linuxu Dokumentace
763 764 766 767 768 770 771
777 777 777 777 777 778 778 779 779
780 780 780 781
781 781 781 782
782 783
785 785 786 787
K1458-01.qxd
22
27.8.2007
14:42
StrÆnka 22
Obsah
Užitečné weby o Linuxu Diskusní skupiny věnované Linuxu Poštovní konference Slova Software Kancelářské balíky a textové procesory Jak zadat terminál
787 788 789 789 790 791 792
Jak udržet systém v aktualizovaném stavu
795
yum: aktualizuje a instaluje balíčky
795
Nastavení programu yum Práce s yum
APT: Alternativa nástroje yum Práce s Apt
BitTorrent Základní požadavky Jak Bittorrent funguje Používáme Bittorrent
Slovník pojmů Slovníček použitých pojmů
Rejstřík
796 797
798 798
803 803 803 804
807 808
865