KURS UNIXU PRO ZAČÁTEČNÍKY Tento materiál je úvodem do operačního systému Unix pro aplikační programátory a uživatele.
Obsah 1 CHARAKTERISTIKA UNIXU
6
2 HISTORIE UNIXU
6
3 LIDÉ KOLEM UNIXU
6
3.1
Vývojáři . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.2
Tv˚ urci unixových standard˚ u. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
4 ZÁKLADNÍ STRUKTURA
7
˚ 5 TYP A HISTORIE PROCESU
8
6 PŘÍSTUP DO UNIXU
9
7 SPUŠTĚNÍ STROJE
9
8 ODSTAVENÍ STROJE
9
9 PŘÍSTUP UŽIVATELE DO SYSTÉMU
10
9.1
Přihlášení uživatele do systému . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
9.2
Odhlášení uživatele od systému . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
10 10 TERMINÁL
10
10.1 Připojení terminálu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.2 Zacházení s terminály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.3 Databáze TERMCAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.4 Databáze TERMINFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 10.5 Nastavení terminálu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.6 Specifikace terminálu v konfiguračních souborech . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.7 Klávesnice terminálu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.7.1 Kódy s významem znak˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 10.7.2 Kódy pro opravu chybně napsaných znak˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.7.3 Znaky pro řízení práce programu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.7.4 Rolování výstupu na obrazovku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.7.5 Další znaky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.8 Výpis nastavení řídicích kód˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 10.9 Nastavení řídicích kód˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1
˚ V UNIXU 11 SYSTÉM SOUBORU
14
11.1 Soubor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 11.1.1 Atributy souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 11.1.2 Jméno souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 11.1.3 I-uzel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 11.1.4 Link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 11.1.5 Přístupová práva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 11.2 Speciální datové soubory
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
11.3 Adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 12 PŘÍKAZY
18
12.1 Příklady příkaz˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 12.2 Syntaxe příkaz˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 12.3 Vstup a výstup příkaz˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 12.4 Filtr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 12.5 Přesměrování vstupu a výstupu, roura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 12.5.1 Přesměrování vstupu a výstupu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 12.5.2 Roura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 13 ELEKTRONICKÁ DOKUMENTACE A JINÉ ZDROJE INFORMACÍ
20
13.1 Příkaz man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 13.1.1 Syntaxe man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 13.1.2 Formát manuálu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 13.2 Stručné informace o příkazu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 13.2.1 Na BSD Unixu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 13.2.2 Na Unixu System V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 13.3 Interaktivní výukové programy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 13.4 Další zdroje informací . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 14 ZÁKLADNÍ OPERACE S ADRESÁŘI
23
14.1 Zjištění aktuálního adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 14.2 Výpis obsahu adresáře adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 14.3 Změna pracovního adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 14.4 Založení adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 14.5 Zrušení prázdného adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 14.6 Přejmenování adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 14.7 Kopírování adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 15 ZÁKLADNÍ OPERACE SE SOUBORY
24 2
15.1 Výpis soubor˚ u bez stránkování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 15.2 Výpis soubor˚ u se stránkováním . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 15.3 Výpis začátku souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 15.4 Výpis konce souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 15.5 Založení souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 15.6 Vymazání souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 15.7 Spojování soubor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 15.8 Přejmenování soubor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 15.9 Přesun soubor˚ u do jiného adresáře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 15.10Kopírování soubor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 15.11Hledání souboru ve stromu adresář˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 15.12Změna přístupových práv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 15.13Změna vlastníka souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 15.14Změna skupinového vlastníka souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 15.15Přihlášení do jiné skupiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 16 TEXTOVÝ EDITOR vi
27
16.1 Vyvolání . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 16.2 M˚ uj první text ve vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 16.3 Povely pro vkládání textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 16.4 Povely pro pohyb kursoru po souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 16.5 Regulární výrazy vi editoru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 16.6 Pohyb kurzoru po obrazovce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 16.7 Pohyb kurzoru na řádce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 16.8 Umístění aktuálního řádku na obrazovce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 16.9 Pohyb kurzoru po značkách . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 16.10Obecné povely pro manipulaci s textovými objekty . . . . . . . . . . . . . . . . . . . . . . . . . . 33 16.11Syntaxe povel˚ u v režimu řádkového editoru ex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 16.12Změny v textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 16.13Vymazání textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 16.14Obnovení textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 16.15Přesouvání textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 16.16Kopírování textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 16.17Povely pro manipulaci se soubory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 16.18Globální povely a náhrady textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 16.19R˚ uzné povely a triky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 16.20Volby a jejich nastavení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3
17 VYBRANÉ PŘÍKAZY PRO PRÁCI S TEXTOVÝMI SOUBORY
41
17.1 Počet řádk˚ u, slov a znak˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 17.2 Hledání vzoru v souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 17.3 Porovnání soubor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 17.4 Jiné porovnání soubor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 17.5 Rozdělení souboru na části
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
17.6 Náhrada znak˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 17.7 Šifrování souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 17.8 Jména dalších příkaz˚ u pro práci s textem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 18 SÍTĚ V UNIXU
42
18.1 Základní nástroje komunikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18.1.1 Seznam přihlášených uživatel˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18.1.2 Dialog uživatel˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18.1.3 Zpráva všem přihlášeným . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18.1.4 Aktuální informace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18.1.5 Základní informace o systému . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18.1.6 Elektronická pošta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18.2 Systém UUCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 18.2.1 Přenos soubor˚ u z místního na vzdálený stroj . . . . . . . . . . . . . . . . . . . . . . . . . 44 18.2.2 Přenos soubor˚ u mezi počítači . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 18.2.3 Emulace terminálu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 18.2.4 Spuštění příkazu na vzdáleném stroji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 18.2.5 Informace o stavu UUCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 18.2.6 Kódování a odkódování binárních soubor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 18.3 Protokol TCP/IP a síťové služby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 18.3.1 Principy TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 18.3.2 Síťová vrstva - protokol IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 18.3.3 Transportní vrstva - protokoly UDP, TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 18.3.4 Transportní vrstva - protokoly UDP, TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 18.3.5 Adresy IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 18.4 Třídy adres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 18.4.1 Podsítě . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 18.4.2 DNS - jména a adresy počítač˚ u v Internetu . . . . . . . . . . . . . . . . . . . . . . . . . . 47 18.5 Základní síťové služby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 18.5.1 FTP - přenos soubor˚ u v síti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 18.5.2 Telnet - emulace terminálu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4
18.5.3 Rlogin - vzdálené přihlášení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 18.5.4 ssh - bezpečný shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 18.6 Uživatelsky příjemné služby v Internetu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 18.6.1 Gopher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 18.6.2 World Wide Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 18.6.3 WWW server a klient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 18.6.4 Síťové konference (netnews, usenet)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
19 ZÁLOHOVÁNÍ A DISTRIBUCE DAT 19.1 Zařízení pro zálohování
51
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
19.2 Přimontování a odmontování externího zařízení . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 19.3 Stanovení počtu zálohovacích medií . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 19.4 Příkaz tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 19.5 Příkaz cpio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 19.6 Komprimace a dekomprimace dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 ˚ 20 PŘIZPUSOBENÍ UŽIVATELSKÉHO PROSTŘEDÍ
54
20.1 Elementy shellovských skript˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 20.2 Proměnné shellu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 20.3 Proměnné prostředí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 20.4 Inicializační scénáře shellu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 21 LITERATURA
56
5
1
CHARAKTERISTIKA UNIXU • víceúlohový, víceuživatelský, síťový, interaktivní OS • přenositelný na platformy od PC po superpočítače • pro vývoj Unixu vznikl C jazyk • prvý OS napsaný ve vyšším jazyce, kromě 1000 řádk˚ u asembleru • inspirace pro další OS • základní OS v Internetu • k dispozici zdrojové texty • dnes především u výkonných server˚ u, superpočítač˚ u a grafických stanic • OS pro inteligentní programátory a uživatele
2
HISTORIE UNIXU • 1969 AT&T Bell Laboratories, K. Thompson, D. Ritchie, B. Kerningham, MULTICS, PDP-7, záminka rešeršní systém, PDP-11 => UNIX, p˚ uvodně v asm • jazyk BPCL => jazyk C, přepis UNIXU do C • 70. léta: předání zdrojových text˚ u zdarma universitám a státní správě • další vývoj University of California Berkeley, větev BSD Unix • 1979 poprvé na jiný stroj než PDP (Interdata) • AT&T pokračovala ve vývoji => nejrozšířenější verze UNIX System V. Doporučení SVID (System V Interface Definition) • v 80. létech řada Unix˚ u a ”like” Unix˚ u • např. HP-UX Hewlett Packard, Microsoft Xenix, Santa Cruz Operation SCO Unix, IBM AIX, Dec Ultrix, OSF1, Siemens Sinix . . . • řada free Unix˚ u, Free BSD, GNU Linux . . .
3
LIDÉ KOLEM UNIXU 1. Vývojáři 2. Tv˚ urci unixových standard˚ u 3. Uživatelé a aplikační programátoři
3.1
Vývojáři
• AT&T, Berkley University, Sun Microsystems • reakce na monopol AT&T + Sun založení OSF/1, vlastní Unix, neplatí se licence AT&T
6
3.2
Tv˚ urci unixových standard˚ u
ANSI • standard C • standard POSIX -Portable Operating System Interface for Computing Environments (skupina pod IEE), definuje rozhraní mezi operačními systémy a programy, nejen pro Unix X/OPEN nezisková společnost, hlavně evropská, definuje celosvětové standardy X-Consorcium stanovuje rozhraní pro technologie X Window (MIT) SIGMA japonský projekt, hlavně podpora japonštiny Uniforum, Usenix tlak uživatel˚ u na vývoj
4
ZÁKLADNÍ STRUKTURA
JÁDRO natáhne se po zapnutí stroje do paměti (boot), zprostředkuje veškerý styk proces˚ u s hardwarem PROCES jakýkoliv spuštěný program se svými daty, realizuje veškeré změny v systému SHELL proces, pomocí kterého zpravidla uživatel komunikuje s Unixem. Shell spouští dětské procesy (příkazy, uživatelské programy) SOUBOROVÝ SYSTÉM hierarchicky uspořádaná vnější paměť
7
5
˚ TYP A HISTORIE PROCESU • při zavedení jádra se narodí proces swapper pro správu paměti s číslem (PID) 0, který je ”otcem zakladatelem” všech proces˚ u • ten vytvoří pomocí mechanismu fork synovský proces init, který řídí stav systému a je otcem dalších proces˚ u, např. pro inicializaci terminál˚ u (getty), tiskárny (lpsched), update (aktualizace dat na disku) • procesy mohou dědit řadu atribut˚ u od rodiče a tvořit skupiny • procesy dynamicky vznikají, pozastavují se a zanikají, mohou si navzájem vyměňovat signály • každý proces dostane přidělenou prioritu,kterou m˚ uže běžný uživatel pouze snížit, zvýšit ji m˚ uže pouze root • démon proces, který běží neustále a čeká na požadavky(”čert nikdy nespí”) - lpsched, update
8
6
PŘÍSTUP DO UNIXU • účet, logname, heslo,číslo uživatele - UID • uživatel – běžný, s omezeným přístupem – superuživatel (root), zcela neomezený přístup ke všem prostředk˚ um systému, jediná možnost utajení dat zašifrováním – uživatelé tvoří skupiny (group),každá skupina jméno a číslo - GID; uživatel m˚ uže patřit současně do více skupin – uživatel i skupina mají r˚ uzná práva k soubor˚ um a tedy i k program˚ um • heslo má řadu úrovní bezpečnosti, stanoví se při generování systému
7
SPUŠTĚNÍ STROJE • zapnout zdroj, někdy lze natáhnout jiný OS, možno nastavit systémový čas, zvolit jednouživatelský režim (root, pro údržbu) • byl-li systém naposledy řádně odstaven, pak vše běží samo, pokud ne je třeba opravit systém soubor˚ u (fsck atd.)
8
ODSTAVENÍ STROJE • nesmí se vypnout bez řádného odstavení - uklizení vyrovnávací paměti na disky! • server smí zpravidla vypnout pouze administrátor, postup např. $ wall Koncime za 10 minut! $ shutdown -h 10 • po sjetí systému teprve vypnout napájení 9
9
PŘÍSTUP UŽIVATELE DO SYSTÉMU
9.1
Přihlášení uživatele do systému
• po zapnutí terminálu výzva (proces getty): login: • zadá se logname a systém oznámí: password: • po správném zadání hesla se Unix ozve, mohou se nabídnout novinky, došlá pošta atd. podle místní konfigurace • posléze se objeví výzva přihlašovacího shellu a lze pracovat – pro Bourn˚ uv shell $ – pro C shell % – root má # – prompt lze modifikovat • nepracuje-li terminál, pak zkoušet – Enter – Del –
C – Break – nakonec vypnout/zapnout • emulace terminálu - např. z PC: telnet [jméno stroje] • ”pomatený” terminál - příkaz stty sane J • zastavení/spuštění rolování textu S/ Q
9.2
Odhlášení uživatele od systému
• logout nebo exit • někdy D.
10
10 TERMINÁL
• Unix je v podstatě síťový sám o sobě; hvězdicová síť = host+terminály • práce u terminálu=sezení, relace • minimálně klávesnice a zabrazovací zařízení, m˚ uže mít myš a tiskárnu • typy terminál˚ u – neinteligentní alfanumerický, dumb, vše hostitelský počítač – inteligentní alfanumerický, paměť, m˚ uže mít kalkulačku, poznámkový blok, . . . – X-terminál – emulace alfanumerického terminálu na PC – emulace X-terminálu na PC ∗ řízení oken na hostu ∗ řízení oken z MS Windows 10
10.1
Připojení terminálu
• po sériové lince přímo s počítačem • po komutované telefonní lince přes modem • po ethernetu • po síti LAN • po síti WAN
10.2
Zacházení s terminály
• oproti standardní klávesnici PC existuje celá řada terminál˚ u nejr˚ uznější konstrukce, každý Unix umí pracovat s těmi nejprimitivnějšími i s nejdokonalejšími • je třeba pouze definovat typ terminálu a pro něj mít k dispozici popis řídicích kód˚ u • trochu obdobné jako ”escape sekvence ” v MS DOSU - ovladač ANSI.SYS • v Unixu se používá pro ovládání terminálu knihovna curses, (mnemonické funkce v C pro ovládání abstraktního terminálu), tedy zcela nezávislé na konkrétním terminálu • tyto funkce se potom interpretují pomocí zvláštního souboru, který obsahuje překládací tabulku funkcí abstraktního terminálu na řídicí znaky terminál˚ u konkrétních • poněkud komplikovaná záležitost, kterou zpravidla nebudeme potřebovat, ale je třeba vědět o principu • existují dvě databáze terminál˚ u - starší termcap a novější terminfo • vazbu mezi konkrétním typem terminálu a Unixem zajišťuje proměnná prostředí TERM
10.3
Databáze TERMCAP
• překládací tabulka pro jednotlivé typy terminál˚ u je v souboru /etc/termcap, příklady některých položek: – # uvozuje komentář – prvý řádek definuje typ terminálu ( několik alias jmen) - tm—termtm—tm1000:\ – každý řádek, kromě posledního končí \ - ve skutečnosti každý popis terminálu je řetězec max. 1024 byt˚ u, viz proměnnou prostředí TERMCAP – každý řádek obsahuje mnemonickou zkratku funkce abstraktního terminálu, následovanou =, začíná :, \E značí Esc, význam zkratek se najde v manuálu, za = jsou řídicí sekvence, které je třeba nalézt v příručce k terminálu, když se ztratí, což je časté, je třeba použít kódy pro terminál, který je podobný nebo experimentovat – např.pr VT100 ∗ bl zvonek ∗ bs BACKSPACE ∗ co#80, li#24 počet sloupc˚ u a řádk˚ u ∗ cr=ˆ M návrat vozíku ∗ nl=ˆ J nový řádek ∗ do=ˆ J kurzor dol˚ u ∗ le=ˆ H kurzor vlevo ∗ cl=50\E[J;H\E[2J:\
10.4
Databáze TERMINFO
• novější zp˚ usob, položky podobně jako v v termcap • popis /terminfo/a-z, uloženo v komilované formě • záznamy mohou být delší než 1024 byt˚ u 11
10.5
Nastavení terminálu
• systémová konzole je připojená trvale, ke stejnému portu • komunikace terminálu přes speciální soubor v adresáři /dev/tty* • aktuální připojení se zjistí příkazem tty • typ terminálu pomocí echo $TERM • je-li špatný, pak – pro sh, ksh set TERM jméno export TERM – pro csh, tcsh setenv TERM jméno
10.6
Specifikace terminálu v konfiguračních souborech
• pro přihlašovací sh, ksh v souboru .profile v domovském adresáři set TERM vt100 export TERM • pro csh, tcsh v souboru .login v domovském adresáři setenv TERM vt100 • .profile, .login anologie AUTOEXEC.BAT
10.7
Klávesnice terminálu
• vychází z dálnopisu,který má pouze: – malá velká písmena,číslice a zvláštní znaky – řídicí klávesy CONTROL, : ∗ ∗ ∗ ∗ 10.7.1
M návrat vozíku J nový řádek (UNIX končí řádek pouze novým řádkem, DOS cr lf) I tabulátor H backspace
Kódy s významem znak˚ u
eof konec souboru, D (v Dosu Z), někdy též odhlášení ze systému esc únik, stisk Esc newline J, konec řádku, vhodné u pomateného terminálu místo RETURN return M, cr, návrat vozíku, generuje se stiskem RETURN, RET, ENTER space stisk mezerníku tab I, lze nastavit, umí-li to terminál 12
10.7.2
Kódy pro opravu chybně napsaných znak˚ u
erase označí poslední znak jako chybný. P˚ uvodně to byl #, který znak nesmazal (nešlo to u dálnopisu). Např.: daw#te, darwe###te je date. Nyní zpravidla Backspace , H, který znak smaže kill p˚ uvodně @, např.: wrrrrrrrrrrrrrrrrrrrrrrrrrrr@,dnes zpravidla kill je X nebo U lnext slouží pro přídady, kdy chceme použít kontrolní znak jako normální - např. napsat skutečné M v textovém editoru a zabránit unixu aby to interpretoval jako return, pak tomu musí předcházet lnext. Je to zpravidla V, takže tedy je třeba psát V M werase W, smaže poslední slovo 10.7.3
Znaky pro řízení práce programu
intr přerušení programu, zpravidla C nebo DELETE, v Unixu DELETE nemaže znaky při psaní. quit přeruší program a vydumpuje paměť do souboru core, zpravidla \ 10.7.4
Rolování výstupu na obrazovku
• nefunguje Scroll Lock při emulaci na PC • standardně: stop S, přeruší výstup na obrazovku, jako v Dosu Pause, ale ta nefunguje v emulátoru terminálu start Q, spuštění výstupu 10.7.5
Další znaky
• A až Z • [ je synonymum pro Esc. Kód Esc se v Unixu nepoužívá tak často jako v Dosu, např. v editoru vi. • znak Delete se značí jako ?.
10.8
Výpis nastavení řídicích kód˚ u
• krátký výpis stty • všechno stty -a
13
10.9
Nastavení řídicích kód˚ u
stty jméno kódu klávesa Např.: • vymazání znaku=backspace stty erase ^ H • vymazání řádku= X stty kill ^ X • Přerušení programu=DELETE stty intr ^ ? • kód start=stop= S,používat rolování jako přepínač stty start ^ S • pokud se nám nové nastavení řídicích znak˚ u líbí, je vhodné přidat příkazy stty do .profile nebo .login.
11
˚ V UNIXU SYSTÉM SOUBORU
Hierarchický strom, neexistuje jméno disku jako v MS Dosu.
11.1
Soubor
• běžný soubor – textový, vytvoří např. editor vi – binární, např. výpis pomocí od – speciální datový soubor (zařízení) • adresář • typ souboru se zjistí příkazem file 11.1.1
Atributy souboru
• jméno (max. 255 znak˚ u) • číslo i-uzlu (i-node) • přístupová práva • vlastník, skupina 11.1.2
Jméno souboru
• libovolný počet teček ve jménu • tečka jako počáteční znak pro ”neviditelné” soubory (něco jako hidden v Dosu) • usance .c, .tar. .4gl
14
11.1.3
I-uzel
• délka 64 byt˚ u, v současné době více • typ souboru • vlastník, skupina • přístupová práva • délka souboru • umístění na disku • čas poslední aktualizace • čas posledního použití • čas změny i-uzlu(např. změny přístupových práv) Př.: od /bin, od -d /bin, od -a /bin 11.1.4
Link
• soubor m˚ uže mít více jmen-vytvoří se jen řádek v adresáři ln jméno1 [jméno2] 11.1.5
Přístupová práva
• čtení r • zápis w • spuštění nebo vstup do adresáře x • mění se příkazem chmod tři trojice symbol˚ u nebo tři osmičková čísla definující přístupová práva pro 15
• vlastníka • skupinu • ostatní Zápis přístupových práv právo symbolicky číselně čtení r 4 zápis w 2 spuštění x 1 žádné 0 Vztah mezi absolutním a symbolickým označením přístupových práv součet r w x 0 1 1 2 - 2 3 - 2 1 4 4 5 4 1 6 4 2 7 4 2 1 • symbolický formát se vyskytuje např. u výpisu adresáře ls -l • absolutní formát u některých příkaz˚ u, proto třeba znát • standardní přístupová práva při založení bývají – pro soubor rw- r– r–, což je 644, čili ∗ čtení a zápis pro vlastníka ∗ čtení skupinu a ostatní – pro adresář rwx rw- rw-, což je 755, čili ∗ čtení zápis a vstup pro vlastníka ∗ čtení a zápis skupinu a ostatní Algoritmus přidělení přístupových práv • pro soubor jsou nejprve přístupová práva 666 a pro adresář 777 • od nich se odečtou práva, která chceme odebrat, standardně bývá 022 => 644 a 744 • lze nastavit příkazem umask [nnn], kde n je oprávnění, které se ubere • paranoik umask 077 • dobrák umask 000 • tyto příkazy se dávájí zpravidla do .profile či .login
11.2
Speciální datové soubory
• veškerý přístup na periferie • některá jména závazná (např. /dev/tty)
16
• ostatní volitená (/dev/fd0, /dev/fd1) • charakterisován: – hlavním číslem (typ zařízení) – vedlejším číslem (pořadové číslo) • terminály tty0, tty1, tty2,. . . • užitečný soubor /dev/nul jako ”odpadkový koš”
11.3
Adresáře
• kořen / • jednoduché jméno, úplná cesta • změna příkaz cd adresář, bez parametr˚ u do domovského $HOME • dotaz kde stojím pwd • aktuální . • nadřazený . . • v Unixu určitým zp˚ usobem standardizovaná struktura adresář˚ u • uživatelé mají svoje adresáře v /usr či /users nebo /home
17
12
PŘÍKAZY
• externí (názvy program˚ u v /bin, /usr/bin, /etc . . .) • interní příkazy shellu (cd) • koncepce: příkaz plní jednu funkci, ale d˚ ukladně, Unix jako stavebnice • pokračování příkazu na dalším řádku • více příkaz˚ u na jednom řádku se oddělí ;
12.1
Příklady příkaz˚ u
• date [+format] date mmddhhnn[yy] (pouze root) • who, whodo uživatelé, co dělají • who; ps -eaf • příkaz lze spustit v pozadí sort -o uzivatele.strideni /etc/passwd & more uzivatele.setrideni 18
12.2
Syntaxe příkaz˚ u
příkaz [volby] [argumenty] [soubory] • volby začínají znakem - (v Dosu /) ls -l; ls -a; ls -al • argumenty jsou znakové řetězce • soubory nad nimiž příkaz pracuje • Př.: grep root /etc/passwd • ve jménech soubor˚ u expanzní znaky ls *txt; ls *.txt
12.3
Vstup a výstup příkaz˚ u
• standardní vstup klávesnice (kanál 0) • standardní výstup obrazovka (kanál 1) • chybový výstup obrazovka (kanál 2) • znak konce souboru z klávesnice D (v Dosu Z) • Př. Setřídění vstupu z klávesnice na obrazovku sort 3 2 1 D • Př. Setřídění vstupu z klávesnice do souboru a prohlédnutí výsledku sort -o vysledek 3 2 1 D more vysledek
12.4
Filtr
• standardní vstup -¿ filtr -¿ standardní výstup • každý příkaz, u něhož to má smysl je naprogramován jako filtr na rozdíl od Dosu, kde to nejde z principu
12.5 12.5.1
Přesměrování vstupu a výstupu, roura Přesměrování vstupu a výstupu
• příkaz < soubor standadním vstupem příkazu je soubor • příkaz > soubor standardní výstup příkazu se uloží do souboru • příkaz >> standardní výstup příkazu se připojí za konec souboru • pokud neexistuje soubor do něhož byl přesměrován standardní výstup, založí se 19
• Př. ls /usr > vypis.usr sort -r < vypis.usr > vypis.usr.obr date >> vypis.usr.obr more vypis.usr.obr
12.5.2
Roura
• P1 — P2 . . .— Pn standardní výstup příkazu P1 je standardním vstupem příkazu P2 atd. • Př.: who | sort who | sort | more man sort | col -b > man.sort.txt more man.sort.txt
13
ELEKTRONICKÁ DOKUMENTACE A JINÉ ZDROJE INFORMACÍ
• man elektronický manuál, téměř vždy instalován • interaktivní výukové programy starter, learn • stručná informace apropos, glossary, help • tištěná dokumentace • počítačové sítě, diskusní skupiny
13.1
Příkaz man
Vyvolá elektronický manuál, osm částí: 1. příkazy 2. systémová volání 3. knihovní funkce 4. speciální soubory 5. formáty soubor˚ u 6. hry 7. r˚ uzné 8. příkazy systémové údržby
20
13.1.1
Syntaxe man
man [číslo sekce] název stránky • příkaz m˚ uže být v několika sekcích, standardně je číslo sekce = 1 • Např.: popis příkazu man man man 1 man • popis formátování text˚ u man 7 man • lze zadat manuál pro více příkaz˚ u - např man date pwd who at • výstup se zpravidla se stránkuje, někdy ne a je třeba použít start a stop pro čtení, nebo man date | more • někdy lze změnit stránkovací program, např. Linux používá velmi vhodně vi • pro tisk na tiskárnu třeba odstranit formátovací povely: man curses | col -b | lp 13.1.2
Formát manuálu
• každá část obsahuje stránky pro jednotlivá témata • formát se liší pro BSD a SV • zpravidla obsahuje sekce: – jméno příkazu – syntaxe příkazu – popis – soubory související s příkazem – viz též – diagnostika – chyby
13.2
Stručné informace o příkazu
• glossary [termín] vypíše definici unixových termín˚ u a zvláštních znak˚ u, bez parametr˚ u dialog, bývá v Systemu V. • help záleží na implementaci, nejr˚ uznější funkce, často pouze nápověda pro programátorský nástroj SCCS, nepříliš dobrá 13.2.1
Na BSD Unixu
• jednořádkový popis man -f jméno stránky • výpis příkaz˚ u, vztahujících se k klíčovému slovu pomocí man -k klíčové slovo, např. man -k prolog • whatis jméno příkazu, jako man -f • apropos klíčové slovo, jako man -k
21
13.2.2
Na Unixu System V
• názvy příkaz˚ u, které se týkají klíčového slova pomocí locate [klíčové slovo. . .], bez parametr˚ u se spustí dialog. Př.: locate internet ftp telnet • usage [-deo] [povel ], význam parametr˚ u: – – – –
13.3
-d popis -e příklady -o volby bez parametr˚ u standardně dialog
Interaktivní výukové programy
Méně komfortní než na PC, ale běží na jakémkoliv terminálu SYSTEM V starter • základní příkazy • základní dokumenty • objednávky kurz˚ u • místní informace o instalaci • zabudované výukové prostředky BSD UNIX learn • learn [předmět[číslo lekce]], bez parametr˚ u dialog • předmět – – – – – – –
13.4
files editor vi morefiles macros eqn C
Další zdroje informací
• tištěná dokumentace, kupuje se třeba jen jednou, bývá drahá • v dnešní době se dodává nejraději na CD, tištěná často ne • knihy • konzultace s experty, většinou velmi ochotní, ”opravdoví programátoři” • Usenet, news groups • spousta WWW stránek na Internetu, řada Unix˚ u, Linux • místní informace na systému příkaz news [-ans] [položka], udržuje správce systému, vhodné dát do přihlašovacího scénáře, volby: – -a všechno – -s kolik je novinek – -n pouze nepřečtené novinky 22
14 14.1
ZÁKLADNÍ OPERACE S ADRESÁŘI Zjištění aktuálního adresáře
pwd domácí adresář je uložen v proměnné prostředí HOME echo $HOME
14.2
Výpis obsahu adresáře adresáře
ls [-ildauectrCFR] soubor. . . ls -luctr $HOME
14.3
Změna pracovního adresáře
cd [adresář ] domácí adresář HOME cd ../.. pwd cd pwd
14.4
Založení adresáře
mkdir [-m mód ] [-p] adresář. . . mkdir $HOME/tmp uživatel musí mít v adresáři právo zápisu
14.5
Zrušení prázdného adresáře
rmdir [-p] [-s] adresář. . .
14.6
Přejmenování adresáře
mv [-f] staré jméno nové jméno mkdir stary mv stary novy rmdir novy
14.7
Kopírování adresáře
cp [-d] zdroj cíl copy [-o vlastník ] [-m] [-r] [-ad] [-v] zdroj cíl copy $HOME/tmp $HOME/tmp1
23
15
ZÁKLADNÍ OPERACE SE SOUBORY
15.1
Výpis soubor˚ u bez stránkování
cat [-u] [-s] [-v[t][e]] soubor. . . cat /etc/passwd /etc/group
15.2
Výpis soubor˚ u se stránkováním
more [-cs] [-okno] [+řádka] [+/vzor ] [soubor. . .] more -c -10 /usr/include/curses.h pg -c -20 -p strana:%d /usr/include/curses.h
15.3
Výpis začátku souboru
head [-počet řádek ] soubor. . . head -20 /etc/termcap
15.4
Výpis konce souboru
tail [+-n] [lbc] soubor. . . tail -20 /etc/termcap
15.5
Založení souboru
touch [-amc] [mmddhhmm[yy]] soubor. . . cp /dev/null > soubor. . . touch prac1 cp /dev/null prac2 cat > prac3 . . jako v Dosu copy con prac2 .
15.6
Vymazání souboru
rm [-ifr] soubor. . . -r maže rekursivně vše včetně adresář˚ u (jako deltree v Dosu) rm -r prac* !NIKDY! - zvláště ne jako root!!! cd / rm -r * 24
15.7
Spojování soubor˚ u
cat soubor. . . > soubor cd ls -F /bin > seznam.bin ls -F usr/bin > seznam.usr.bin more seznam.bin seznam.usr.bin cat seznam.bin seznam.usr.bin > seznam.celkem date >> seznam.celkem more seznam.celkem rm -i seznam*
15.8
Přejmenování soubor˚ u
mv staré jméno nové jméno touch stary mv stary novy
15.9
Přesun soubor˚ u do jiného adresáře
mv soubor. . . adresář cd /tmp touch s1 s2 s3 mv s1 s2 s3 \$HOME cd ls -l s* rm -i s*
15.10
Kopírování soubor˚ u
• jeden soubor do druhého cp zdrojový soubor cílový soubor • jeden nebo více soubor˚ u do jiného adresáře cp zdrojový soubor. . . cílový adresář
15.11
Hledání souboru ve stromu adresář˚ u
find startovní adresář [podmínka] nalezení a vytištění polohy souboru find startovní adresář -name soubor -print find / -name .login -print >find.login \& more find.login
25
15.12
Změna přístupových práv
• symbolický formát chmod změna soubor. . . – změna se zapíše: – [komu]operátor [práva] – komu: ∗ ∗ ∗ ∗
u vlastník g skupina o ostatní a všichni (standardně)
– práva: ∗ r ∗ w ∗ x – operátor: ∗ + přidat ∗ - odebrat touch ls -l chmod ls -l chmod ls -l
verejny.text verejny.text go+w verejny.text verejny.text o-w verejny.tex verejny.text
• absolutní formát chmod přístup soubor. . . touch ls -l chmod ls -l chmod ls -l
15.13
milostn\’{y} dopis milostn\’{y} dopis 600 milostn\’{y} dopis (jako chmod go-rw milostn\’{y} dopis) 666 milostn\’{y} dopis (jako chmod go+rw milostn\’{y} dopis)
Změna vlastníka souboru
chown vlastník soubor. . . • změnit vlastníka souboru m˚ uže jen vlastník nebo root • pozor! pokud předám soubor někomu jinému, m˚ uže být pro mne nedostupný
15.14
Změna skupinového vlastníka souboru
chgrp skupina soubor. . . • změnit skupinové vlastnictví souboru m˚ uže jen člen skupiny nebo root • pozor! pokud předám soubor jiné skupině, m˚ uže být pro mne nedostupný
26
15.15
Přihlášení do jiné skupiny
newgrp [skupina] • po přihlášení do Unixu je uživatel členem standardní skupiny, která mu byla přiřazena při založení účtu • pokud je členem dalších skupin a chce získat práva jiné skupiny, použije příkaz newgrp • chce-li se vrátit do své standardní skupiny, použije tento příkaz bez argument˚ u
16
TEXTOVÝ EDITOR vi
• obrazovkový editor vi je standardním editorem Unixu • možnosti vi značně převyšují možnosti běžných programátorských editor˚ u, verze i např. pro MS-DOS • pro uživatele MS-Dosu jeho ovládání poněkud neobvyklé • funkčnost editoru na jakémkoliv typu terminálu • zajištěna odpovídající hodnotou proměnné prostředí TERM, musí obsahovat název typu terminálu, odpovídající položce v databázi /etc/terminfo • vi je ve skutečnosti obrazovkový režim řádkového editoru ex, jeho příkazy se volají povelem : (dvojtečka) • řádky se číslují od 1 • po havárii systému během editace se soubor zpravidla podaří obnovit
16.1
Vyvolání
vi [-r soubor ] [-wn] [-R] [+povel ] [soubor. . .] vedit [-r soubor ] [-wn] [-R] [+povel ] [soubor. . .] view [-r soubor ] [-wn] [+povel ] [soubor. . .] Volby a parametry -rsoubor obnoví soubor po výpadku systému do stavu při poslední editaci -wn editor pracuje v okně o n řádcích -R soubory se budou pouze prohlížet a nelze je modifikovat vi -R /usr/include/sys* +povel před začátkem editace se vykoná povel editoru. vi +50 /etc/termcap vi +/vt100 /etc/termcap soubor soubor, který chceme editovat. Pokud neexistuje, založí se. Současně m˚ užeme pracovat s více soubory, mezi nimiž lze během práce přecházet
27
16.2
M˚ uj první text ve vi
1. $ vi muj.denicek Přejdeme do vkládacího režimu stiskem i a budeme psát text: Mil\’{y} den\’{\i}\v{c}ku! M\accent23uj chlapec John mi dnes v\v{e}noval manu\’{a}l vi editoru a v kav\’{a}rn\v{e} Slavia koupil pan\’{a}ka absintu a esej V\’{a}clava Havla v angli\v{c}tin\v{e}. Jsem tak m\’{a}lo ne\v{s}\v{t}astn\’{a}!
2. Stiskneme ¡Esc¿, přejdeme do povelového režimu a vyzkoušíme pohyb kurzorupo textu šipkami i pomocí • h znak vlevo • l znak vpravo • k řádku nahoru • j řádku dol˚ u 3. K mazání znaku, na který ukazuje kurzor slouží povel x, ke smazání slova povel dw a celou řádku smaže dd. V našem souboru muj.denicek najedeme kurzorem na začátek slova nešťastná v posledním řádku a dvakrát stiskneme x. Potom nastavíme na témže řádku kurzor na slovo málo a stiskneme dw. Nakonec najedeme na libovolné místo řádku ”a v kavárně Slavia koupil panáka absintu” a stiskneme dd. Obrazovka by měla nyní vypadat takto: Mil\’{y} den\’{\i}\v{c}ku! M\accent23uj chlapec John mi dnes v\v{e}noval a esej V\’{a}clava Havla v angli\v{c}tin\v{e}. Jsem tak \v{s}\v{t}astn\’{a}!
manu\’{a}l vi editoru
4. Chceme-li vsunout text na místo, kde stojí kurzor, použijeme již známý povel i. Novou řádku vsuneme pod řádku, na kterou ukazuje kurzor povelem o. Tímto povelem se otevře nová řádka a m˚ užeme psát nový text. Po vložení textu se přepneme do povelového režimu klávesou ¡Esc¿. V našem textu kurzor přesuneme na první znak slova chlapec v druhém řádku a stiskneme i. Napíšeme slovo ”americký” a stiskneme <Esc>. Kurzor nastavíme na libovolný znak předposledního řádku a stiskneme o. Zapíšeme text ”Je úplně jiný než ostatní chlapci!”. Konečná verze deníčkového zápisu by měla vyhlížet: Mil\’{y} den\’{\i}\v{c}ku! M\accent23uj americk\’{y} chlapec John mi dnes v\v{e}noval manu\’{a}l vi editoru a esej V\’{a}clava Havla v angli\v{c}tin\v{e}. Je \’{u}pln\v{e} jin\’{y} ne\v{z} ostatn\’{\i} chlapci! Jsem tak \v{s}\v{t}astn\’{a}!
5. Nyní jsme se zápisem spokojeni a je třeba vyrovnávací paměť, v níž jsme doposud pracovali, uložit do souboru muj.denicek a opustit vi editor. K tomu slouží povel :x 6. Pokud bychom text, který jsme vytvořili uložit nechtěli, opustíme editor povelem :q! a tím o změny v textu přijdeme, v našem příkladu tedy o celý soubor. 7. Máme-li soubor muj.denicek uložený, m˚ užeme jej potom kdykoliv vi editorem upravovat: $ vi muj.denicek
28
16.3
Povely pro vkládání textu
atext přidej text za kurzor itext vsuň text před kurzor Atext přidej text za konec řádky Itext vsuň text před prvý nebílý znak na řádce otext text vstupuje na dalším řádku Otext text vstupuje na předcházejícím řádku
16.4
Povely pro pohyb kursoru po souboru
[n]F vpřed o stránku [n]B vzad o stránku [n]D dol˚ u o p˚ ul stránky :z dol˚ u o p˚ ul stránky [n]U nahoru o p˚ ul stránky [n]E dol˚ u o řádek [n]Y nahoru o řádek [n] G na n-tý řádek, standardně na poslední [n]+ další řádka, prvý nebílý znak [n]předcházející řádka, prvý nebílý znak [n] jako [n]+ [n]j další řádek a stejný sloupec šipka dol˚ u jako [n]j, má-li terminál tuto klávesu a je nastaven správný typ - viz proměnná prostředí TERM [n]k předcházející řádek a stejný sloupec
29
šipka nahoru jako [n]k, má-li terminál tuto klávesu a je nastaven správný typ terminálu - viz. proměnná prostředí TERM [n]/vzor na n-tý řádek obsahující vzor (základní regulární výraz) směrem vpřed [n]?vzor na n-tý řádek obsahující vzor (základní regulární výraz) směrem vzad [n]n na n-tý další nalezený vzor povelem / nebo ? [nN] na n-tý další nalezený vzor povelem / nebo ? v opačném směru (bylo-li předtím hledáno dopředu pak dozadu a naopak) [n]/vzor /+m na m-tý řádek za řádkem, obsahujícím vzor (základní regulární výraz) ?vzor ?-m na m-tý řádek před řádkem, obsahujícím vzor (základní regulární výraz) [n]w směrem vpřed na další slovo; oddělovači jsou znaky r˚ uzné od písmen, číslic a podtržítka [n]b směrem vzad na další slovo; oddělovači jsou znaky r˚ uzné od písmen, číslic a podtržítka [n]e směrem vpřed na konec slova; oddělovači jsou znaky r˚ uzné od písmen, číslic a podtržítka [n]W směrem vpřed na další slovo; oddělovači jsou pouze mezera a tabelátor [n]B směrem vzad na další slovo;oddělovači jsou pouze mezera a tabelátor [n]E směrem vpřed na konec slova; oddělovači jsou pouze mezera a tabelátor ]] na další kapitolu (hlavičku, oddělenou prázdnými řádky) [[ na předcházející kapitolu (hlavičku, oddělenou prázdnými řádky) ) na začátek věty (věta je text, ukončený znakem . nebo ! nebo ? a dvěma prázdnými znaky, nejde-li o větu poslední) ( na konec věty } na další odstavec (odstavec je text, začínající a ukončený prázdným řádkem) { na předcházející odstavec % na odpovídající otevírající nebo uzavírající závorky ( ) { }
30
16.5
Regulární výrazy vi editoru
Regulární výraz znak ˆ $ . < > [řetězec] [ˆ řetězec] řetězec* řetězec1řetězec2 \(řetězec\)
Vyhovující posloupnost znak˚ u znak bez zvláštního významu (tj. kromě ˆ & * . \ [ ] ∼ ). Chceme-li je v regulárním výrazu použít jako ASCII znak, zamaskujeme předcházejícím znakem \ na začátku vzoru značí začátek řádky na konci vzoru značí konec řádky libovolný jeden znak začátek slova konec slova znak, obsažený v řetězci, lze použít intervaly znak˚ u, ve tvaru počátečníkoncový. Např. [A-Z] značí velká písmena znaky, které nejsou obsaženy v řetězci žádný nebo libovolný počet řetězc˚ u (lze použít i interval znak˚ u) řetězec vyhovující regulárnímu výrazu řetězec1, následovaný řetězcem, vyhovujícímu regulárnímu výrazu řetězec2 uzavření regulárního výrazu řetězec do závorek pro jeho očíslování za účelem zkrácení zápisu. Každému takto uzávorkovanému regulárnímu výrazu odpovídá zleva číslo od jedné do maximálně šesti. Na tyto dílčí regulární výrazy se lze potom odkazovat jako \1 až \6 ve vzorech pro hledání a lze je použít při konstrukci nových řetězc˚ u v povelech náhrady.
Příklady regulárních výraz˚ u Vzor /ˆ $/ /./ /ˆ / /ˆ vzor/ /vzor/ /vzor$/ /ˆ vzor$/ /vzor\./ /[Vv]arianta[1-3]/ /ˆ V Praze.*1\.1.97$/
16.6
Vyhovuje prázdná řádka nejméně jeden znak na řádce všechny řádky řetězec vzor na začátku řádky řetězec vzor kdekoliv na řádce řetězec vzor na konci řádky řádky obsahující pouze řetězec vzor řetězec ’vzor.’ kdekoliv na řádce řetězce Varianta1, Varianta2, Varianta3, varianta1, varianta2, varianta3 řádky obsahující na začátku řetězec ’V Praze’ a na konci řetězec ’1.1.97’
Pohyb kurzoru po obrazovce
[n]H na n-tý řádek od začátku stránky, standardně na prvý [n]L na n-tý řádek od konce stránky, standardně na poslední M na prostřední řádek obrazovky
16.7
Pohyb kurzoru na řádce
0 začátek řádku [n]ˆ znak na řádku, r˚ uzný od tabelátoru nebo mezery [n]$ poslední znak na řádku [n]| n-tý znak na řádce 31
[n]l další znak vpravo [n]<SPACE> další znak vpravo, jako [n]l [n]<šipka vpravo> další znak vpravo, jako [n]l [n]h další znak vlevo [n] další znak vlevo, jako [n]h [n]h další znak vlevo, jako [n]h [n]<šipka vlevo> další znak vlevo, jako [n]h [n]f c najdi znak c směrem vpravo [n]Fc najdi znak c směrem vlevo [n]tc najdi znak předcházející c směrem vpravo [n]Tc najdi znak předcházející c vlevo [n]; opakuj poslední povel f, F, t nebo T [n], změna směru hledání pro povely f, F, t nebo T
16.8
Umístění aktuálního řádku na obrazovce
z aktuální řádek uprostřed z. aktuální řádek nahoře zaktuální řádek dole
16.9
Pohyb kurzoru po značkách
‘‘ návrat kurzoru na předcházející pozici ’’ návrat kurzoru na prvý nebílý znak řádku na kterém byl kurzor. mc označení aktuální polohy kurzoru značkou c (a-z) ‘c jdi na značku c ’c jdi na prvý nebílý znak řádku, obsahující značku c 32
16.10
Obecné povely pro manipulaci s textovými objekty
Textové objekty jsou definovány povely pro pohyb kurzoru, argument manipulačního povelu vymezuje text mezi aktuální pozicí kurzoru a polohou kurzoru, danou povelem objekt. [n]dobjekt vymazání objektu [n]cobjekt změna objektu [n]>objekt posun objektu o tabulátor vpravo [n]> posune dvacet řádk˚ u od řádku na němž je kurzor o tabulátor doprava. 100d+ 10d10+ d+100+ Tyto povely mají stejnou funkci a vymažou text od pozice kurzoru sto řádek. !Lsort setřídí řádky od řádku s kurzorem do posledního řádku obrazovky Co je to? >M cw c) c( c}
16.11
Syntaxe povel˚ u v režimu řádkového editoru ex
Některé funkce pouze v režimu editoru ex (do něhož přejdeme povelem : ), popř. někdy jsou efektnější alternativouk povel˚ um režimu vi. Obecný formát povelu editoru ex [adresa] [povel ] [!][parametry][počet][příznak ] Adresa udává rozsah řádk˚ u, na kterých operuje povel:
33
adresa . n $ 0 % +n -n /vzor /
” ’c
význam tečka značí aktuální řádek. Pracuje-li povel pouze s jedním řádkem, není třeba psát (standardní hodnotou povel˚ u je zpravidla aktuální řádek n-tý řádek poslední řádek vyrovnávací paměti začátek vyrovnávací paměti celá vyrovnávací paměť (zkratka pro adresu 1,$) n-tý řádek za řádkem aktuálním n-tý řádek před řádkem aktuálním hledá směrem vpřed text vyhovující regulárnímu výrazu vzor. Pokud se hledá pouze výskyt textu vzor, stačí pouze /vzor. Zadá-li se adresa pouze jako /, definuje další výskyt návrat k poslednímu řádku řádek označený v režimu vi povelem mc nebo v režimu ex :mc
Př.: Povel :.,+2 co0 okopíruje na začátek souboru aktuální řádek a dva řádky následující • Adresa povelu je podle jeho potřeby tvořena řadou adres řádk˚ u, oddělených čárkou nebo středníkem a vyhodnocuje se zleva doprava • středník jako oddělovač nastaví aktuální řádek na předchácející adresu před vyhodnocením. • zadá-li se více adres než vyžaduje povel, nadbytečné jsou ignorovány. Pokud jsou potřebné dvě adresy řádk˚ u pro povel, musí řádek definovaný prvou adresou předcházet ve vyrovnávací paměti druhý adresovaný řádek • omylem zadaná adresa před povelem, který ji nevyžaduje zp˚ usobí chybu • prázdná adresa má standardní hodnotu . (aktuální řádek). Př.: Povel :,$d vymaže text od řádku na který ukazuje kurzor do konce vyrovnávací paměti a :.+3j spojí aktuální řádek a tři řádky za ním následující v jeden.
16.12
Změny v textu
∼ změní malé písmeno na velké a naopak [n]Ctext přepíše řádek od kurzoru do konce [n]C$text přepíše řádek od kurzoru do konce, jako [n]Ctext [n]Rtext nahradí znaky textu znaky z klávesnice [n]rznak nahradí znak znakem z klávesnice [n]Stext nahradí řádek [n]cctext přepíše celý řádek [n]cobjekttext přepíše objekt textem 34
[n]stext nahradí znak textem . opakuje jakoukoliv poslední změnu textu. Př.: Naposledy byl napsán ve vstupním režimu text ’nový telefon 24354259’, pak . jej pokaždé znovu vloží na místo , na které ukazuje kurzor.
16.13
Vymazání textu
D vymaže text od kurzoru do konce řádku [n]x vymaže znak, na který ukazuje kurzor [n]X vymaže znak vlevo od kurzoru [n]dobjekt vymaže objekt dd vymaže řádek Př.: dw d3w d3( d5) dG
16.14
Obnovení textu
u obnoví soubor do stavu před poslední změnou U obnoví text aktuálního řádku ”zásobník p obnoví jedno z posledních devíti smazání textu. Zásobník je číslo smazání, pro obnovení posledního smazání se zapíše 9 a pro poslední, které lze obnovit je zásobník 1. [n]. zopakuje poslední příkaz, který editoval vyrovnávací paměť editoru
16.15
Přesouvání textu
Vi editor má k dispozici devět očíslovaných registr˚ u a jeden registr skrytý, do nichž ukládá smazaný text. Ty lze využít k přesunu textu; přesouvaný text se nejprve „vymaže do registruÿ a potom se z něj vloží na potřebné místo. ”r povel mazání uložení vymazaného textu do registru r; r m˚ uže nabývat hodnot a - z. Povely povel mazání jsou uvedeny v kap. Vymazání textu.
35
”r p vloží vymazaný text z registru r za kurzor ”r P vloží vymazaný text z registru r před kurzor ”p vloží poslední vymazaný text za kurzor ”P vloží poslední vymazaný text před kurzor :[adresa]m[kam] [volby ] přesune řádky definované adresou za řádek kam. Neuvede-li se kam, zkopíruje řádky za aktuální řádek. Př.: Povel : $-1,$m0 přesune předposlední a poslední řádek souboru na jeho začátek.
16.16
Kopírování textu
[”r ]yobjekt uložení objektu do registru ; r m˚ uže nabývat hodnot a - z. Nezadá - li se r, použije se nepojmenovaný registr Př. "byL uloží do registru b text vymezený aktuální pozicí kurzoru a koncem obrazovky [”r ][n]yy uložení n řádk˚ u (standardně jednoho) do registru ; r m˚ uže nabývat hodnot a - z. Nezadá - li se r, použije se nepojmenovaný registr. [”r ][n]Y jako [”r ][n]yy [”R]yobjekt přidání objektu do registru ; R m˚ uže nabývat hodnot A - Z a značí, že objekt se připojí za text, zapamatovaných v registru r (a - z). Př.: Povel "Ay2w přidá dvě slova za kurzorem za text, který je již v registru a. [”R][n]yy přidání n řádk˚ u (standardně jednoho) do registru ; R m˚ uže nabývat hodnot A - Z. Nezadá - li se R, použije se nepojmenovaný registr. [”R][n]Y jako [”R][n]yy [”r ]p vlož text z registru r za kurzor; nezadá-li se r, použije se nepojmenovaný registr [”r ]P vlož text z registru r před kurzor; nezadá-li se r, použije se nepojmenovaný registr :[adresa] co [kam] [volby ] zkopíruje řádky definované adresou za řádek kam. Neuvede-li se kam, zkopíruje řádky za aktuální řádek.
16.17
Povely pro manipulaci se soubory
ZZ uložení aktuálního souboru, pokud se změnil a výstup z vi editoru :w uložení aktuálního souboru :w! uložení aktuálního souboru i v případě, že je do něj zakázán zápis 36
:sh vyvolání nového shellu, po jeho opuštění návrat zpět do vi :q opuštění editoru :q! opuštění editoru s ignorováním změn :e soubor přechod k editování dalšího souboru :e! obnovení p˚ uvodního stavu souboru (v jakém byl tento naposledy uložen) :e + soubor edituje soubor od jeho konce :e + n edituje aktuální soubor od n-tého řádku :[rozmez í w[soubor]] uloží vyrovnávací paměť do souboru :[rozmez í wq! [soubor ]] uloží vyrovnávací paměť do souboru i v případě, že soubor má zakázán zápis :[rozmezí w» soubor ] přidá obsah vyrovnávací paměti za konec souboru :[rozmezí w! povel ] řádky, definované rozmezím zapíše do standardního vstupu povelu.Ten vykoná a jeho standardní výstup napíše pouze na obrazovku, ale neuloží do vyrovnávací paměti. Př. 1: :%w !sort vypíše na obrazovku setříděný obsah vyrovnávací paměti. Př. 2: :!%sort setřídí celý text a uloží jej do vyrovnávací paměti. Př. 3: w! sort uloží ”natvrdo” obsah vyrovnávací paměti do souboru sort :e# edituje předcházející soubor, pokud bylo s ním pracováno ˆ jako :e# :e!# edituje předcházející soubor, pokud bylo s ním pracováno , přičemž neuloží změny v aktuálním souboru :! povel vyvolá shellovský povel :!! zopakuje poslední shellovský povel :n edituje další soubor ze seznamu argument˚ u, byl-li editor vyvolán s několika argumenty :n! před editováním dalšího souboru neuloží změny v do souboru aktuálníhp :n [+povel soubor. . .] definuje nový seznam soubor˚ u pro editaci, je-li uveden povel vi editoru, vykoná se před editováním prvého souboru :args zobrazí aktuální seznam editovaných soubor˚ u :f zobrazí jméno aktuálního souboru a číslo řádku, obsahujícího kurzor 37
g jako :f :f soubor přejde k editaci nového souboru :ta návěští umístí kurzor na návěští :[n r soubor ] přečte soubor za n-tý řádek do vyrovnávací paměti; standardně za aktuální :[n r !povel ] přečte obsah standardního výstupu shellovského povelu a uloží do vyrovnávací paměti za n-tý řádek :rew edituje prvý soubor ze seznamu argument˚ u při vyvolání vi :rew! jako :rew, ale neuloží změny v aktuálním souboru :x [soubor ] pokud byl změněn obsah vyrovnávací paměti,
16.18
Globální povely a náhrady textu
Globální povel má formát: :[adresa ]g/vzor /povel... 1. Povely mohou pokračovat na několika řádcích, které jsou s výjimkou posledního ukončeny 2. Rozsah řádk˚ u, na nichž operuje globální povel je dán adresou 3. nezadá-li se, pak standardně pracuje s celou vyrovnávací pamětí. :[adresa]g/řetězec/ nastaví kurzor na poslední řádek, obsahující řetězec :[adresa]g/řetězec/p vytiskne všechny řádky, obsahující řetězec :[adresa]g/řetězec/nu vytiskne čísla všech řádk˚ u, obsahující řetězec :[adresa]g/starý /s//nový / nahradí prvý výskyt řetězce starý na každém řádku řetězcem nový. Ve všech povelech náhrady (/s) lze pro úsporný zápis místo řetězce starý použít metaznaku &. Chceme-li využít řetězce nový z přecházejícího povelu náhrady, m˚ užeme použít metaznaku ∼. Př. Prvý výskyt slova malý na každém řádku chceme nahradit slovy malý český: :g/malý/s//& český/ :[adresa]g/starý /s//nový /g nahradí každý výskyt řetězce starý na všech řádcích řetězcem nový :[adresa]g/starý /s//nový /gp nahradí každý výskyt řetězce starý na všech řádcích řetězcem nový a všechny změněné řádky vytiskne :[adresa]g/starý /s//nový /gc před nahrazením každého výskytu řetězce starý na všech řádcích řetězcem nový vyžaduje schválení. Odpoví-li se Y, pak se náhrada provede, jinak nikoliv. :[adresa]g/terč /s/starý /nový /g povel nejprve nalezne všechny řádky, obsahující terč. Pro ně pak nahradí každý výskyt řetězce starý řetězcem nový.
38
:[adresa]g!/vzor /povel povel se vykoná na všech řádcích, neobsahujících vzor :[adresa]v/vzor /povel jako :[adresa ]g!/vzor /povel Př.: :[adresa]g/^ /s// /g vsune pět mezer před začátek každého řádku v celém souboru :[adresa]s/vzor /náhrada/volby na každém řádku, který vyhovuje regulárnímu výrazu vzor se nahradí prvý jeho výskyt řetězcem náhrada. .Volby: g - náhrada všech výskyt˚ u vzoru na řádku, c vyžaduje pokaždé potvrzení (ano=Y, ostatní klávesy ne ) & zopakování náhrady směrem vpřed, rovněž :& : zopakování náhrady směrem vzad
16.19
R˚ uzné povely a triky
? zruší přerušení i rozdělení řádku před kurzorem a rozdělení řádku za kurzorem l překreslení obrazovky [n]J spojení n následujících řádk˚ u do jednoho :[rozmezí]j spojení řádk˚ u definovaných rozmezím :[rozmezí]nu opíše řádky definované rozmezím, uvozené jejich čísly :[adresa]= vypíše číslo řádky s danou adresou. Př. Číslo aktuálního řádku se zjistí povelem :.= Číslo řádku obsahujícíhob řetězec ”heslo” :/heslo/= xp vymění znak na který ukazuje kurzor se znakem předcházejícím :abbr zkratka text definuje pro delší text zkratku; lze použít v proměnné prostředí EXINIT nebo v souboru .exrc Př. :abbr pi Ludolfovo číslo V dalším textu místo Ludolfovo číslo stačí napsat pi :una zkratka zrušení zkratky Př. :una pi Řetězec pi ztrácí již význam zkratky :mapznak povely definice makra, které přiřadí znaku ( i netisknutelnému ) posloupnost povel˚ u příkazového režimu vi. Pochopitelně nebude vhodné měnit znaky, které označují již povely ve vi editoru ( a,i,r. . .). Př. Chceme nadefinovat makro, které po stisku A vypíše na nový řádek řetězec Zapsal:, následovaný uživatelským jménem, aktuálním datem ve formátu dd.mm.rr a čárkou odděleným aktuálním časem ve formátu hh:mm. Potřebné makro má tento tvar: :map ^A A^M^[:r!echo "Zapsal: $LOGNAME ‘date "+\%d.\%m.\%y,\%H:\ %M" ‘ "^[ 39
Připomínám, že ˆ A značí a a ve vi editoru se zapíše při stisknuté klávese postupným stiskem va. Sekvence ˆ M je kód pro ¡RETURN¿ a ˆ [ pro ¡Esc¿. Ve formátovém řetězci je třeba zamaskovat znak % pomocí zpětného lomítka, protože % ve vi editoru representuje aktuální jméno souboru. :map!znak povely jako map, ale makro nelze zrušit povelem :unmap :unmapznak zruší makro, definované povelem map (nikoliv map!) :preserve v případě neúspěchu při zápisu do souboru uloží vyrovnávací paměť vi editoru do systémové oblasti (pokud je definována). Použít pouze jako poslední možnost, nepovede-li se povel :wm. :recover soubor obnoví soubor ze systémové oblasti, kam byl uložen při havarii Unixu nebo povelem :preserve :tag cíl nastaví kurzor na cíl v aktuálním souboru, případně v jiném souboru aktuálního adresáře. Cíl je název vzoru, který musí být s ním a se jménem souboru jej obsahujícím uložen v souboru se jménem tags, který je v aktuálním adresáři. Soubor tags obsahuje pro každý cíl jeden řádek, obsahující tyto položky, oddělené mezerami či tabulátory: -cíl, název na něž se odkazuje povelem tag -jméno souboru, obsahující cíl -regulární výraz, který slouží k nalezení cíle. Ten by měl být konstruován tak, aby byl pokud možno jednoznačný při opravách okolního textu. Řádky souboru tags musí být vzestupně setříděny. Soubor tags se zpravidla generuje utilitami, např. příkazem ctags, který jej vytvoří pro zdrojové texty v jazyce C. Jako cíle tento příkaz považuje funkce jazyka C. Zadáme-li povel tag bez argumentu, použije se argument z předchozího povelu tag. Stiskneme-li ], považuje se za cíl slovo na kterém stojí kurzor. Př.: V aktuálním adresáři máme řadu zdrojových program˚ u v jazyce C. Příkazem shellu ctags *.c se vytvoří v tomto adresáři soubor tags. Při psaní programu nove reseni.c vi editorem chceme opravit funkci iterace 1, přičemž jsme zapomněli, ve kterém souboru je deklarována. To však nevadí; povelem vi editoru :tag iterace 1 se automaticky přepneme do správného souboru na začátek funkce iterace 1.
16.20
Volby a jejich nastavení
• K dispozici řada voleb • lze je nastavit povely :set, mohou být v proměnné • prostředí EXINIT , popř. v souboru $HOME/.exrc, či zadávány při editaci • jsou typu přepínač - aktivní nebo neaktivní • nebo mají přiřazeny hodnotu - řetězec • vyhodnocují se zleva doprava. Nastavení a výpis voleb pomocí : • :set volba aktivace volby • :set novolba deaktivace volby • :set zobrazení voleb, které se změnily • :set all zobrazení všech voleb • :set volba? zobrazení nastavení volby Nejd˚ uležitější volby, ostatní viz man: autoindent, zkratka ai, standardně noai Nastaví zarovnávání textu. 40
autoprint, zkratka ap, standardně ap Zobrazí aktuální řádku po každém ex povelu pro kopírování, přesun nebo náhradu textu. errorbells, zkratka eb, standardně noeb Chybovému hlášení předchází zvukový signál. ignorecase, zkratka ic, standardně noic V regulárních výrazech považuje velká písmena za písmena malá s výjimkou písmen, uzavřených v závorkách. lisp, standardně nolisp Zarovnávání textu tak, aby se příjemně psal text v jazyce Lisp. list, standardně nolist Text se tiskne s vyznačenými tabelátory (jako ˆ I ) a konci řádky (jako $ ). magic, standardně magic Nastaví-li se volba nomagic, pak v regulárních výrazech se za metaznaky se zvláštním významem považují pouze ˆ a $ mesg, standardně nomsg Volba nomsg zakáže psát unixové zprávy na obrazovku v režimu vi - ochrana před přepsáním obrazovky. number, zkratka nu, standardně nonu Před každým řádkem je zobrazeno jeho číslo. shell, zkratka sh, standardně sh=/bin/sh Cesta na shell, spouštěný povely :! nebo :sh; je-li nastavena proměnná prostředí SHELL, pak se vezme její hodnota jako standardní tabstop, zkratka ts, standardně ts=8 Nastaví tabulátory
17
17.1
VYBRANÉ PŘÍKAZY PRO PRÁCI S TEXTOVÝMI SOUBORY Počet řádk˚ u, slov a znak˚ u
wc [-l] [soubor ] spočítá a vytiskne na obrazovku počet řádek, slov a znak˚ u Např. počet přihlášených uživatel˚ u na systému zjistíme příkazem who | wc -l
17.2
Hledání vzoru v souboru
grep [vzor ] [soubor ] Např. počet přihlášených uživatel˚ u pod jménem root se zjistí: who | grep root | wc -l
17.3
Porovnání soubor˚ u
diff [-beh] soubor1 soubor2 Zobrazí řádky, v nichž se oba soubory liší spolu s instrukcemi, jak změnit soubor1, abychom dostali soubor2. Odlišné řádky předchází znak <, jde-li o řádku ze souboru1 a > pro řádky ze souboru2.
41
17.4
Jiné porovnání soubor˚ u
comm [-123] soubor1 soubor2 Zobrazí řádky, které jsou pouze v souboru1 (1. sloupec), v souboru2 (2. sloupec) a řádky společné (3. sloupec). Volba potlačuje tisk příslušného sloupce.
17.5
Rozdělení souboru na části
split[-n] [soubor [částsoubor ] Soubor se rozdělí na části, z nichž každá má n řádek a jmenuje se částxx, kde xx je aa, ab, ac, . . . Např. z databáze /etc/passwd vytvoříme pro každého uživatele jeden soubor uzivatelaa, uzivatelab atd.: split -1 /etc/passwd uzivatel
17.6
Náhrada znak˚ u
tr p˚ uvodní znaky nové znaky filtr, který v datech standardního vstupu vymění zadanou množinu znak˚ u za množinu jiných znak˚ u: Např. soubor cesky.txt, obsahující znaky české národní abecedy převedeme na text bez diakritických znamének ascii.txt: tr ’ěščřžýáíéú˚ uĚŠČŘŽÝÁÍÉÚ˚ U’ ’escrzyaieuuESCRZYAIEUU’ \ ascii.txt
17.7
Šifrování souboru
crypt [klíč ] filtr, který zašifruje/odšifruje standardní vstup na standardní výstup crypt < agent007.bis > agent007.bis.cr crypt < agent007.bis.cr | more
17.8
Jména dalších příkaz˚ u pro práci s textem
• ed, ex základní a rozšířený řádkový editor • sed dávkový editor, pro dlouhé soubory • awk programovací jazyk jak pro textové manipulace, tak i pro výpočty • perl programovací jazyk jak pro textové manipulace, tak i pro výpočty, používá se např. pro programování na WWW serveru • paste spojí řádky několika soubor˚ u do řádky jedné • join spojí řádky ze dvou setříděných soubor˚ u podle specifikovaného společného pole. • cut vyřízne ze souboru zadaná pole (sloupce).
18
SÍTĚ V UNIXU
• sítě v podstatě systému, host + terminály= místní hvězdicová síť • protokol UUCP, spojení dvou unixovýxh stroj˚ u • Kermit, i pro r˚ uzné OS • TCP/IP nejrozšířenější protokol pro heterogenní LAN, WAN, přirozený protokol Internetu • služba NFS 42
• většinou UNIX umí i protokoly Netware • Samba - freeware, poskytující obdobné služby pro MS Windows jako NFS
18.1 18.1.1
Základní nástroje komunikace Seznam přihlášených uživatel˚ u
who [am i] finger [adresa] 18.1.2
Dialog uživatel˚ u
write adresa • smluvený znak o přepínám • oo končím • konec • odeslání souboru write ¡vysledky.txt talk adresa uživatelsky příjemnější Zákaz/povolení komunikace messg -n zákaz messg -y povolení messg zjištění nastavení 18.1.3
Zpráva všem přihlášeným
wall 18.1.4
Aktuální informace
news [ -nsa] vytiskne novinky z adresáře /etc/news • vhodné do .profile • další • konec 2x 18.1.5
Základní informace o systému
zpravidla jednořádkový soubor /etc/motd V přihlašovacím skriptu m˚ uže být cat /etc/motd 18.1.6
Elektronická pošta
mail [volby] adresát. . . • mail adresát < dopis
43
• mail -h • lepší pošťáci: – mailx – elm – klienti pro X Window.
18.2
18.2.1
Systém UUCP
Přenos soubor˚ u z místního na vzdálený stroj
uuto soubor. . . počítač!adresát • zařadí požadavek do fronty, fyzicky až je linka volná – uuto -m po ukončení přenosu pošle mail odesilateli i adresátovi – uuto -p soubor přesně ve stavu při vykonání uuto, jinak se zahrnou pozdější aktualizace uupick [-s stroj ] Přesune došlé soubory z adresáře pro uucp do uživatelova adresáře. Odstartuje dialog s povely: • m [adresář ] přesun souboru • a [adresář ] přesun všech soubor˚ u • * nápověda • q konec 18.2.2
Přenos soubor˚ u mezi počítači
uucp [-d] [-m] [-C] [-j] zdroj cíl • argumenty zdroj a cíl se zadávají ve tvaru jméno stroje!cesta • je-li stroj unix1 spojen s počítačem unix2 a ten s počítačem unix3, pak se např. na soubory v adresáři /tmp počítače unix3 odkazujeme ze stroje unix1 jako unix2!unix3!/tmp/*
44
18.2.3
Emulace terminálu
cu počítač cíl cu telefon modemu • lze se přihlásit i k neunixovému stroji • služby na vzdáleném stroji – ∼. konec relace – ∼! spuštení shellu na vzdáleném stroji – ∼%cd adresář změna adresáře na místním stroji – ∼%take vzdálený [místní] přenos souboru ze vzdáleného na místní počítač – ∼%put místní [vzdálený] přenos souboru z místního na vzdálený počítač 18.2.4
Spuštění příkazu na vzdáleném stroji
uux příkaz uux unixa!cp /tmp/zaloha/* unixb!/tmp/kopie 18.2.5
Informace o stavu UUCP
uustat [-a] [-u uživatel ][-s počítač ] [-k požadavek ] uuname vypíše informace o počítačích v síti uname [-nrvma] podrobnější informace o místním stroji 18.2.6
Kódování a odkódování binárních soubor˚ u
Pro přenos se soubor zakóduje do ASCII souboru - nejen pro uucp. uuencode [ zdrojový soubor ] zakódovaný soubor uudecode [zakódovaný soubor ]
18.3 18.3.1
Protokol TCP/IP a síťové služby Principy TCP/IP
• nejužívanější protokol ve světě UNIXU, Internetu, implementován prakticky na všech OS, k přenosu dat mezi programy běžícími v heterogenním prostředí • uspořádán do hierarchických vrstev podle OSI • na obou systémech vzájemně komunikují pouze stejné vrstvy (ředitel jedné firmy se též nedomlouvá s náměstkem či sekretářkou firmy druhé) • TCP/IP využívá ze sedmi vrstev OSI model čtyřvrstvý: 1. aplikační (např. pošta SMTP, telnet, ftp, nfs) 2. transportní (TCP, UDP) 3. síťová (IP) 4. linková (síťová karta, ovladače, kabeláž -Ethernet, Token Ring atd.)
45
18.3.2
Síťová vrstva - protokol IP
• Internet Protocol využívá služeb linkové vrstvy pro přenos datagram˚ u • data se rozdělí na datagramy, které v hlavičce mají adresáta a příjemce a další informace • IP zajišťuje cestu datagram˚ u do cílového systému pomocí směrování, zhruba jako cesta po silnici podle ukazatel˚ u z jedné křižovatky ke druhé • datagramy určené programu na vzdáleném počítači mohou být doručeny r˚ uznými cestami, asynchronně či nemusí doběhnout v˚ ubec • o správnou rekonstrukci dat či o požadavek na opakování přenosu se stará nadřazená vrstva 18.3.3
Transportní vrstva - protokoly UDP, TCP
Přidělují adresy program˚ um pomocí port˚ u (IP adresuje pouze počítače), kterých je 64K • UDP - User Datagram Protocol – pouze adresuje datagramy na porty program˚ u – nekontroluje správnost přenosu – používají pouze jednoduché aplikace • TCP - Transmission Control Protocol – bezchybný a relativně bezpečný přenos dat po síti – jakoby bitová roura mezi zdrojovým programem (počátek specifikován IP asdresou a číslem portu) a cílovým programem (konec opět dán IP asdresou a číslem portu) – nejpoužívanější v drtivé většině aplikací =¿ TCP/IP 18.3.4
Transportní vrstva - protokoly UDP, TCP
• řeší konkrétní uživatelské síťové aplikace - pošta, emulace terminálu • specifické pro každou alikaci 18.3.5
Adresy IP
• jednoznačná identifikace počítače v celém Internetu • pro počítače připojené do Internetu přiděluje poskytovatel služeb • 32 bitové číslo, hodnoty byt˚ u ze zapisují dekadicky, odděleny tečkou • IP adresa má r˚ uzným zp˚ usobem (podle třídy): – adresu sítě – adresu počítače
18.4
Třídy adres
rozdělení do tříd umožňuje vystačit se čtyřmi byty a ponechat možnost definovat místní podsítě: • A (velmi málo sítí - přes sto s obrovským množtsvím počítač˚ u 15 mil.) – IP adresa začíná binárně 0, dekadicky 0-127 – adresa sítě 1. byte 46
– adresa počítače 2.-4. byte • B (cca 16 000 sítí s 65 000 počítači) – IP adresa začíná binárně 10, dekadicky 128-191 – adresa sítě 1.-2. byte – adresa počítače 3.-4. byte • C -(2 mil. sítí s 250 počítači,prakticky všechny běžné sítě) – IP adresa začíná binárně 110, dekadicky 192-223 – adresa sítě 1.-3. byte – adresa počítače 4. byte • D (skupinové adresy, vyhrazeny pro speciální služby v Internetu) – IP adresa začíná binárně 1110, dekadicky 224-239 – skupinová adresa 1.-4. byte 18.4.1
Podsítě
• na místní úrovni lze lokální část adresy rozdělit dále pomocí masky podsítě: – délka masky čtyři byty – maska se položí na IP adresu – obsahuje binární 1 na místě adresy sítě a 0 na místě adresy počítače – např. maska 255.255.255.0 u adresy třídy B definuje 255 místních sítí s 255 počítači a pro třídu C jednu místní síť s 255 počítači. 18.4.2
DNS - jména a adresy počítač˚ u v Internetu
• uživatel se odkazuje na stroj symbolickým jménem • jména jsou složena z identifikátor˚ u (domén, oddělěných tečkou) • domény jsou uspořádány do stromu, kořen má jméno tečka • doménové jméno se píše zleva doprava ve směru rostoucí pozice v hierarchii - alpha.imip.monet.cz je např. počítač alpha v instituci imip, která patří do nadřazené organizace monet v České republice • existují dva zp˚ usoby tvorby jména: • p˚ uvodně v USA přímo na kořen navazovaly tématické domény: – com komerční podniky – edu školství – gov vládní organizace – mil vojenství – net síťové služby – org ostatní • s rozvojem Internetu zeměpisné domény: – cz – sk – de – us
47
18.5 18.5.1
Základní síťové služby FTP - přenos soubor˚ u v síti
ftp [jméno počítače] nezadá-li se jméno počítače, pak se připojíme open jméno počítače Nápověda help Aplikace ftp rozlišuje druh přenosu příkazy: • ascii pro přenos textových soubor˚ u • binary pro přenos binárních soubor˚ u Na vzdáleném stroji • ls výpis adresáře • pwd zjištění adresáře Na vzdáleném stroji • ls výpis adresáře • pwd zjištění adresáře. Pohyb po adresářích • cd na vzdáleném stroji • lcd na místním stroji Nový shell na místním stroji uvádí povelem ! Přenos jednoho souboru ze vzdáleného na místní stroj get vzdálený soubor [místní soubor ] Přenos více soubor˚ u ze vzdáleného na místní stroj, lze použít expanzních znak˚ u ve jménech soubor˚ u mget vzdálený soubor [místní soubor ] Přenos jednoho souboru z místního na vzdálený stroj put místní soubor [vzdálený soubor ] Přenos více soubor˚ u ze vzdáleného na místní stroj,lze použít expanzních znak˚ u ve jménech soubor˚ u mput místní soubor [vzdálený soubor ] Ke sledování pr˚ uběhu přenosu příkaz hash. Spojení s aktuálním strojem se ukončí příkazem close a služba ftp se ukončí příkazem quit. V Internetu existují anonymní ftp servery jako skladiště veřejných dat, login jako anonymous nebo ftp, heslo poštovní adresa. Hledáme-li na kterém serveru leží soubor v němž se vyskytuje řetězec našeho zájmu, je k dispozici příkaz archie řetězec. 48
18.5.2
Telnet - emulace terminálu
• p˚ uvodní služba, podporuje spolehlivě sedmibitový přenos • pracuje prakticky na všech systémech • novější implementace i osmibitový telnet [jméno počítače] 18.5.3
Rlogin - vzdálené přihlášení
• p˚ uvodně služba pouze mezi Unixy • výhodou podpora osmibitového přenosu • třeba opatrně konfigurovat z hlediska bezpečnosti rlogin [jméno počítače] 18.5.4
ssh - bezpečný shell
• telnet, rlogin přenášejí nešifrované datagramy • podaří-li se datagram odchytit, lze z něj přečíst heslo • nová služba, používající šifrovaného přenosu
18.6 18.6.1
Uživatelsky příjemné služby v Internetu Gopher
• prvá uživatelsky příjemná služba pro širokou veřejnost • po přihlášení k serveru se v něm klient pohybuje pomocí menu • položky mohou být odkazy na další menu či na soubory, které m˚ uže uživatel k sobě uložit, prohlédnout či někomu poslat • klient neudržuje trvalé spojení se serverem, každý dotaz i odpověď jsou zvláštní transakce • pracuje s typy soubor˚ u: – text – menu – telefonní seznam – hqx soubor (Mac) – vyhledávání – přihlášení pomocí telnetu – binární soubor – audio soubor – WWW stránka • bohužel v současné době mrtvá větev, vytěsněná službou WWW, která zbytečně plýtvá kapacitou Internetu přenášením nesmyslného informačního smogu gopher [jméno počítače] Bez parametr˚ u se přihlásí k domácímu gopheru, pokud tento existuje. 49
18.6.2
World Wide Web
• nejužívanější služba, mutimédia, spouštění program˚ u • pracuje s transakcemi, složenými z dotazu klienta a z odpovědi serveru • odpověď v jazyce HTML, který interpretuje prohlížeč • možnosti prostého HTML značně rozšířují java, javascript a ActiveX • prohlížeče, které toto umožňují jsou jakési nejmodernější zcela univerzální terminály, což je zřejmě největší přínos služby WWW. • dostupnost technologie má obrovský potenciál pro reklamu, obchodování, zábavní pr˚ umysl ale i pro masivní politickou propagandu v bačkorové ”globální vesnici” ”nového světového pořádku” 18.6.3
WWW server a klient
• pro komunikaci mezi klientem a serverem se používá HyperText Markup Language. Pracuje zhruba takto: – klient pošle dotaz na server ve formátu Uniform Resource Locator, který jednoznačně identifikuje umístění informace v Internetu, popř. další upřesňující požadavky na server – server na tento požadavek vydá odpověď, obsahující data o úspěšnosti vyhodnocení a vlastní text v HTML, obdobně jako elekronická pošta – novější klient WWW zpravidla umí i další služby (gopher, ftp). Formát URL • obecně ve tvaru schema://umístění • schema definuje protokol: – http pro WWW – gopher – ftp – telnet – mailto pro E-mail adresu – news pro službu News • umístění se píše jako server /cesta – server definuje program na který klient vznáší dotaz, obecný formát uživatel :heslo@počítač :port – cesta definuje obsah dotazu - např. jméno adresáře nebo souboru, který chceme prohlížet, popř. další parametry - např. souřadnice kurzoru při ťuknutí myší na zájmovou oblast v bitovém obrázku • např.: http://www.monet.cz/katastry/menkata1.htm 18.6.4
Síťové konference (netnews, usenet)
• diskusní skupiny na všechna možná i nemožná témata • existuje několik skupin nejvyšší úrovně, dělené do podskupin, hierarchická jména pomocí teček - např. comp.os.unix (počítače.operační systémy.unix): alt alternativní skupiny, často na obskurní i nechutná témata bit konference ze sítě BITNET
50
biz obchod comp počítače humanities humanitní obory misc r˚ uzné news o službě news rec odpočinkové zájmy sci věda soc sociální obory talk diskuse o čemkoliv cz české konference • klient m˚ uže do skupin přispívat a příspěvky číst • zprávy se posílají na server, nikoliv na konkrétního uživatele • každý news server odebírá příspěvky definovaných skupin ze specifikovaných server˚ u • zprávy se ponechávají na serveru určitou dobu, potom se vymažou • uživatel se m˚ uže přihlásit na jakýkoliv server, pokud možno na nejbližší, v každé větší místní síti bývá news server • místní news server lze r˚ uzně nakonfigurovat (od koho přijímá zprávy, místní skupiny) • řada klient˚ u od řádkových po komfortní
19
ZÁLOHOVÁNÍ A DISTRIBUCE DAT
• na unixových serverech patří pravidelné zálohování dat kompetence systémového administrátora • běžný uživatel potřebuje uložit aktuální stav d˚ uležitých soubor˚ u či připravit data pro distribuci a instalaci na jiných výpočetních systémech • nejužívanějšími médii pro zálohování jsou magnetické pásky, výměnné disky a pro menší objem dat diskety • techniky zálohování: – tar a cpio pro uložení i obnovení dat. Pokud zařízení (např. DAT) samo nepracuje s kompresí, je vhodné data zkomprimovat (compress, pack) – klasické příkazy backup a restor – komerční systémy pro zálohování všech stroj˚ u v síti, založené většinou na některém z uvedených příkaz˚ u – připojení zformátované diskety s vytvořeným svazkem soubor˚ u (příkaz mkfs) k systému soubor˚ u pevného disku počítače (příkaz mount) – pracujeme-li na unixovském stroji z dosovského počítače, m˚ užeme potřebné soubory zálohovat ve formátu MS-DOS na našem počítači pomocí ftp či NFS. V tomto případě d˚ usledně oddělovat media pro Dos a Unix, jinak nepříjemná překvapení! – před použitím je třeba samozřejmě novou disketu nebo někdy i magnetickou kazetu zformátovat pod Unixem, příkazy se liší v konkrétních instalacích (např. format). 51
19.1
Zařízení pro zálohování
• názvy speciálních datových soubor˚ u jsou dány uzancemi jednotlivých systém˚ u • zjistí se např v man tar cpio či ls /dev • např. bývá – /dev/fd0 první disketová jednotka – /dev/fd1 druhá disketová jednotka – /dev/rmt0a první magnetická páska s převinutím (přepíše celý archiv na pásce) – /dev/nrmt0a první magnetická páska bez převinutím (přidává další data zakonec existujícího archivu)
19.2
Přimontování a odmontování externího zařízení
• každé externí zařízení musí být přimontováno do systému soubor˚ u – pevné automaticky při startu systému – výměnné před použitím a nejsou-li potřeba se odmontují • externí zařízení se přimontujek k prázdnému adresáři svazku soubor˚ u pevného disku (bývá k dispozici adresář /mnt) • dále se odkazujeme na externí zařízení jako na tento adresář. mount [speciální soubor adresář ] bez parametr˚ u příkaz vypíše aktuálně přimontovaná zařízení. Před odmontováním externího zařízení je třeba opustit příslušný adresář. umount [adresář ] Př.: Přimontování disketové jednotky č. 1, zkopírování soubor˚ u začínajících tečkou na disketu a její odmontování: cd mount /dev/fd0 /mnt cp .* /mnt umount /mnt
19.3
Stanovení počtu zálohovacích medií
du -a vypíše počet blok˚ u (1024kB), které zabírají soubory v aktuálním adresáři
19.4
Příkaz tar
tar [volby] [soubor. . .] Základní volby: f zařízení ukládá se na zařízení c vytvoření archivu (starý archiv přepíše) u pokud soubor neexistuje v archivu nebo jde o novou verzi, přidá jej do archivu x extrakce soubor˚ u z archivu t výtisk obsahu archivu v vydává zprávy o práci na obrazovku Uvede-li se jako argument adresář, pracuje se všemi podřízenými adresáři Vytvoření nového archivu 52
• nutné rozlišit účel archivace: • zadají-li se absolutní jména soubor˚ u tar takto soubory uloží a při extrakci soubor˚ u z archivu obnoví na ve stejných adresářích - existující bez varování přepíše • pokud však chceme archivovaná data obnovit v jiném adresáři bez nebezpečí nežádoucího přepsání dat p˚ uvodních (doporučuji), použijeme vždy relativních jmen! Př.: Archivace celého našeho domovského adresáře s absolutními jmény. tar cvf
/dev/fd0 \$HOME
Př.: Uložení souboru .profile z našeho domovského adresáře s relativním jménem (aby si ho mohl extrahovat kdokoliv ve svém adresáři) cd \$HOME tar cvf /dev/fd0 ./.profile Výpis archivu tar tvf /dev/fd0 Extrakce soubor˚ u z archivu Z bezpečnostních d˚ uvod˚ u doporučuji archivovat soubory s relativními jmény a extrahovat je v dočasném adresáři a pak přesunout na požadovaná místa. Př.: mkdir /tmp/moje cd /tmp/moje tar xvf /dev/fd1 ./.profile more .profile mv ./profile \$HOME
19.5
Příkaz cpio
• Příkaz cpio je filtr, který kopíruje vstupní soubory do jednoho výstupního souboru • standardně zapisuje a čte z nich po znacích • k urychlení vhodné použít volby -B pro blokové operace • pro ukládání soubor˚ u do archivu je volba -o • pro čtení archivu volba -i • volba -v opíše na obrazovku jména soubor˚ u, s nimiž příkaz manipuluje • -t vypisuje archiv. Vytvoření nového archivu Př.: Soubory v aktuálním adresáři (bez soubor˚ u, jejichž jména začínají tečkou) uložíme na disketu takto: ls | cpio -oB >/dev/fd0 Př.: Příkaz cpio ukládá pouze soubory v definovaném adresáři, nikoliv soubory v případných podadresářích. Chceme-li uložit všechny soubory aktuálního adresáře (i soubory s tečkou na začátku jména), použijeme triku find . -print — cpio -oB > /dev/fd0 Výpis archivu cpio -it < /dev/fd0 — more Extrakce soubor˚ u z archivu cpio -iB < /dev/fd0 53
19.6
Komprimace a dekomprimace dat
• příkazy tar a cpio ukládají data v p˚ uvodním tvaru do sekvenčního souboru • pro větší objemy vhodné archiv zkomprimovat • k dispozici příkazy compress/uncompress a pack/unpack compress název. . . zkomprimuje soubor název do souboru název.Z a p˚ uvodní soubor smaže Zkomprimované soubory se dekomprimují příkazem uncompress název. . . Př.: Komprimace soubor˚ u hlavni.c, proc.c a hl.h v aktuálním adresáři do soubor˚ u hlavni.c.Z, proc.c.Z a hl.h.Z. compress *.c *.h K jejich dekomprimaci se napíše uncompress *.c *.h Obdobně (s jiným algoritmem) pracuje dvojice příkaz˚ u pack a unpack, která pro komprimované soubory používá příponu z. Př.: pack * unpack *
20
˚ PŘIZPUSOBENÍ UŽIVATELSKÉHO PROSTŘEDÍ
• shellovské skripty mohou realizovat triviální funkce i složité programové systémy • shell využívá a obhospdařuje řadu proměnných prostředí • akce při přihlášení a nastavení proměnných prostředí lze zapsat do inicializačních skript˚ u .profile pro sh, rep. .login pro csh; csh má ještě skript .logout, který se vykoná při odhlášení.
20.1
Elementy shellovských skript˚ u
• shell není jen interpret příkaz˚ u, ale i výkonný programovací jazyk, zde jen zcela triviální minimum • skript (scénář) je textový soubor do něhož zapíšeme řadu příkaz˚ u, které chceme vyvolávat jedním příkazem • napíše se v libovolném textovém editoru • aby mohl být spuštěn, musí mít práva pro čtení a zápis - tj. např. spustitelný všemi: chmod a+rx soubor • má-li být spustitelný v Bournově či Kornově shellu, m˚ uže ale nemusí být jeho prvním příkazem významný komentář (# uvozuje komentář): #!/bin/sh • má-li být spustitelný v C shellu, shellu, musí být jeho prvním příkazem významný komentář #!/bin/csh Př.: Scénář zaloha¡br¿, který zálohuje domácí adresář do souboru darchiv, a zápis obsahu archivu do souboru denik.darchiv a archiv posléze zkomprimuje: #!/bin/sh # # Zaloha domaciho a podrizenych adresaru na disketu /dev/fd0 # a pridani zapisu do deniku # 54
echo "START ZALOHOVANI" cd tar cvf darchiv ./* echo "Nova zaloha:" >> denik.darchiv date >> denik.darchiv tar tvf darchiv >> denik.darchiv echo =========================================== compress darchiv echo "KONEC ZALOHOVANI"
20.2
Proměnné shellu
• typ řetězec • nastavení hodnoty proměnné – identifikátor =řetězec a=nic; mesto="Dolní Horní"; pi=3.14159 – identifikátor =‘příkaz ‘ dnes je=‘date‘; kdo je=‘who‘ • hodnota proměnné $identifikátor echo $a; echo $mesto; echo $pi echo $dnes je; echo $kdo je • takto definované proměnné jsou interní pro aktuální shell
20.3
Proměnné prostředí
• jsou známé nejen v aktuálním shellu, ale i ve všech dětských instancích shellu • usance - identifikátory velkými písmeny • definice: – v Bournově shellu a ksh: export identifikátor – v csh příkaz setenv DATABASE=oracle; export DATABASE env sh DATABASE2=informix; export DATABASE2 env logout env
Shell nastavuje a používá řadu proměnných, některé z nich: HOME domácí adresář PATH seznam adresář˚ u s příkazy, oddělených dvojtečkou, jinak je třeba je volat s úplnou cestou, bývá např.: PATH=/bin:/usr/bin:. LOGNAME uživatelské jméno SHELL aktuální shell
55
MAIL poštovní adresář MAILCHECK došlá pošta se kontroluje každých MAILCHECK sekund TERM jméno používaného terminálu PS1 primární výzva shellu, očekává zadání příkazu (standardně $, % #) PS2 sekundární výzva shellu, očekává pokračování příkazu na dalších řádkách (standardně > )
20.4
Inicializační scénáře shellu
• Bourn˚ uv shell 1. nejprve se při každém přihlášení vykoná globální scenář, vytvořený administrátorem - /etc/profile 2. je-li v domovském adresáři soubor .profile, pak se vykoná (uživatel m˚ uže měnit standardní nastavení proměnných shellu, vykonat r˚ uzné příkazy) • C shell 1. při přihlášení se nejprve vykoná globální scenář, vytvořený administrátorem - /etc/csh.login 2. je-li v domovském adresáři soubor .login, pak se vykoná (uživatel m˚ uže měnit standardní nastavení proměnných shellu, vykonat r˚ uzné příkazy) 3. při narození každé instance C shellu se vykoná scénář .cshrc, pokud je v domovském adresáři 4. navíc je možno definovat akce při odhlášení ze systému scénářem .logout rovněž v domovském adresáři Př.: Napíšeme .profile, který při každém přihlášení: • oznámí, na kterém systému pracujeme, den a čas • vypíše plánované akce pomocí příkazu calendar - používá soubor $HOME/calendar, který má v každém řádku datum akce a její název, např. 11/11 1997 svatek Benedikt 11/12 1997 svatek Tibor • nastaví primární výzvu ”jako v Dosu” • nastaví práva 644 pro soubory a 755 pro adresáře #!/bin/sh echo "Dobry den!" date cat /etc/motd calendar PS1="‘uname‘:‘pwd‘>" umask 022
21
LITERATURA
1. Brodský J., Skočovský L. Operační systém UNIX a jazyk C. SNTL Praha, 1989 2. Jelen M. UNIX V. Programování v systému. GRADA Praha 1993 3. Macur J. X-Window. Grafické rozhraní operačního systému UNIX. SCIENCE, Veletiny 1994
56
4. Skočovský L. Principy a problémy operačního systému UNIX. SCIENCE, Veletiny 1994 5. Sova M. UNIX V. Úvod do operačního systému. GRADA Praha 1991 6. Norton P., Harley Hahn. Pr˚ uvodce Unixem. Český překlad UNIS Brno, 1993 7. Thomas R., Yates J. A User Guide to the UNIX system. McGraw-Hill, Berkley, 1985 8. Welsh M. Linux Installation and Getting Started. Volně na síti Internet. 1996.
57