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. 2 HISTORIE UNIXU 6



Podobné dokumenty
Úvod. unx-predn_01-uvod.odt :13:43 1

Lekce 25 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu.

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Rámcový manuál pro práci s programem TopoL pro Windows

Computer Press Brno 2003

Unix je víceuživatelský a víceúlohový OS

Spinelterminal. Terminálový program pro ladění aplikací s protokolem Spinel. 20. září 2005 w w w. p a p o u c h. c o m v

ZOS CV1 Základy operačních systémů

LuxRiot uživatelský manuál verze Uživatelský manuál Verze , Stasa s.r.o.,pokorného 14, , PRAHA

Operační systém UNIX

PŘÍRUČKA UŽIVATELE KOMUNIKAČNÍHO ROZHRANÍ

FTC08 instalační manuál k dotykovému panelu systému Foxys

UŽIVATELSKÁ PŘÍRUČKA KLÁVESNICE

DUM 01 téma: Obecné vlastnosti tabulkového editoru, rozsah, zápis do buňky, klávesové zkratky

Základní příkazy pro práci se soubory

Základní příkazy UNIXu (Linuxu)

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Cvičení 2. Přesměrování vstupu a výstupu. Posloupnost příkazů. Příkazy pro informaci o uživatelích

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

Výukový materiál zpracovaný v rámci projektu. Základní škola Sokolov, Běžecká 2055 pracoviště Boženy Němcové 1784

MS WINDOWS UŽIVATELÉ

Program pro flexibilní tvorbu evidencí. VIKLAN - Evidence. Uživatelská příručka. pro seznámení se základními možnostmi programu

VAR-NET INTEGRAL Manuál správce VNI 5.1 VAR-NET INTEGRAL. verze 0.2. Manuál správce VNI 5.1

Operační systémy (OS)

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

M I S Y S - W E B. Intranet řešení systému MISYS. Verze Příručka uživatele

1. Uživatelská úprava příkazů I.

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Úvod do Operačních Systémů

UŽIV ATELSKÁ PŘÍRUČKA

Úvod do UNIXu. Okruh č. 1 - přihlášení, historie, práce se soubory. Jakub Galgonek. verze r1. inspirováno materiály Davida Hokszy

maximalizace okna složka - je něco jako pořadač, kam se mohou ukládat soubory, ale lze tam umísťovat i další složky

Příručka k programu Wkasa Restaurační verze

MANUÁL K OBSLUZE REDAKČNÍHO SYSTÉMU / wordpress

MAWIS. Uživatelská dokumentace

Kabelová televize Přerov, a.s.

ESTATIX INFORMAČNÍ SYSTÉM REALITNÍCH KANCELÁŘÍ UŽIVATELSKÁ PŘÍRUČKA UŽIVATELSKÁ PŘÍRUČKA STRANA 1 / 23

Acronis Backup Advanced Version 11.7

Vývoj, výroba, prodej a montáž docházkových a identifikačních systémů. Docházka 3000 Personalistika

NOVÁ VERZE OBD A JEJÍ VYUŽÍVÁNÍ Ing. Martina Valášková

7. Nástroje. 7.1 Pravopis. 7.2 Jazyk. Kapitola 7: Nástroje 47. Kontrola pravopisu

Rozdělení operačních systémů

Manuál k aplikaci SDO PILOT v.0.2

Program je určen pro děti se specifickými poruchami učení.

Úvod do Linuxu. SŠSI Tábor 1

Seznámení se shellem, textové editory numerické výpočty

BankKlient. FAQs. verze 9.50

LINUX SOUBORY. Zadejme příkaz ls l! V této lekci se odrazíme od dlouhého výpisu příkazu ls a uvidíme, kam nás to zanese. SPŠ Teplice - 3.

Cvičení 3. Plán. Procesy. procesy, jobs Find Wildcards Příklad uživatelé. ZOS 2005, L. Pešička. eryx4> ps x

Uživatelská příručka. BlackBerry 8700 Smartphone

Rozdělení operačních systémů

PRACUJEME S SHELLEM Ať žije BASH.

POKLADNÍ DISPLEJ LCD. hotline: strana 1

Helios RED a Internetový obchod

Přednáška 5. Identita uživatelů, procesů a souborů. Přístupová práva a jejich nastavení. Úvod do Operačních Systémů Přednáška 5

Naučit se, jak co nejsnadněji přejít od verze TopoLu pro Windows k verzi TopoL xt. Cílem není vysvětlení všech možností programu.

Tabulkové processory MS Excel (OpenOffice Calc)

Veřejné. Aplikace EP2W. Uživatelská příručka pro externího uživatele

Fotogalerie pro redakční systém Marwel Obscura v. 2.0

Smart PSS dohledový systém

Příručka k programu Wkasa Obchodní verze

Technologie počítačových sítí 5. cvičení

Základní příkazy OS UNIX

Internet protokol, IP adresy, návaznost IP na nižší vrstvy

MANUÁL MOBILNÍ APLIKACE GOLEM PRO OPERAČNÍ SYSTÉM ANDROID 4.X A VYŠŠÍ

UZ modul VVISION poslední změna

Dálkové ovládání HP Mobile Remote Control (pouze u vybraných modelů) Uživatelská příručka

1. Jak pracuje počítač 3. Už víme, jak pracuje počítač, ale jak se pracuje s počítačem? 9

Proměnné a parametry. predn_08.odt :00:38 1

Word 2007 Word 2007 egon. Spuštění, vzhled, zobrazení dokumentu

Rychlý průvodce konfigurací LAN SUITE 2002

Uživatelská příručka

Nastroje na zpracovani textu:

PRÁCE NA POČÍTAČI Charakteristika vyučovacího předmětu

Office podrobný průvodce. Tomáš Šimek

Uživatelská příručka pro program

Uživatelský manuál. A3600 DL ( Data Download)

Uživatelský manuál Mini přepínač počítačů (Klávesnice, VGA, Myš, Audio) 4:1 USB, integrované kabely Katalogové číslo:

Operační systém GNU/Linux

Systémy souborů (File Systems)

Funkce Chytrý dotyk. verze 1.4. A-61629_cs

10. Editor databází dotazy a relace

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

Manuál k aplikaci WANAS

Analýza dat na PC I.

Záznamník teploty ZT, ZT1ext Návod k použití

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Identita uživatelů, přístupová práva. Linux

WiFiS Uživatelská příručka Obsah

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

UŽIVATELSKÁ PŘÍRUČKA

Dálkové ovládání HP Mobile Remote Control (pouze u vybraných modelů) Uživatelská příručka

Uživatelská příručka IS KP14+: Pokyny pro vyplnění formuláře žádosti o podporu

Popis změn verze

Počítačové sítě Systém pro přenos souborů protokol FTP

PŘÍRUČKA PRO REDAKTORY UNIVERZITY PARDUBICE

Mobilní aplikace Novell Filr Stručný úvod

OPEL INSIGNIA. Infotainment System

Transkript:

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ůrci unixových standardů....................................... 7 4 ZÁKLADNÍ STRUKTURA 7 5 TYP A HISTORIE PROCESŮ 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ů.................................... 12 10.7.2 Kódy pro opravu chybně napsaných znaků........................... 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ů...................................... 13 10.9 Nastavení řídicích kódů......................................... 14 1

11 SYSTÉM SOUBORŮ V UNIXU 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ů............................................. 18 12.2 Syntaxe příkazů.............................................. 19 12.3 Vstup a výstup příkazů......................................... 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ů bez stránkování..................................... 24 15.2 Výpis souborů 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ů............................................ 25 15.8 Přejmenování souborů.......................................... 25 15.9 Přesun souborů do jiného adresáře................................... 25 15.10Kopírování souborů............................................ 25 15.11Hledání souboru ve stromu adresářů.................................. 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ůj 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ů 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ůzné 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ů, slov a znaků........................................ 41 17.2 Hledání vzoru v souboru......................................... 41 17.3 Porovnání souborů............................................ 41 17.4 Jiné porovnání souborů......................................... 42 17.5 Rozdělení souboru na části....................................... 42 17.6 Náhrada znaků.............................................. 42 17.7 Šifrování souboru............................................. 42 17.8 Jména dalších příkazů 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ů................................. 43 18.1.2 Dialog uživatelů......................................... 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ů z místního na vzdálený stroj......................... 44 18.2.2 Přenos souborů 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ů........................... 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čů v Internetu.......................... 47 18.5 Základní síťové služby.......................................... 48 18.5.1 FTP - přenos souborů 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 51 19.1 Zařízení pro zálohování......................................... 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ŘIZPŮSOBENÍ UŽIVATELSKÉHO PROSTŘEDÍ 54 20.1 Elementy shellovských skriptů...................................... 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ů asembleru inspirace pro další OS základní OS v Internetu k dispozici zdrojové texty dnes především u výkonných serverů, superpočítačů 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ůvodně v asm jazyk BPCL => jazyk C, přepis UNIXU do C 70. léta: předání zdrojových textů 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ů a like Unixů např. HP-UX Hewlett Packard, Microsoft Xenix, Santa Cruz Operation SCO Unix, IBM AIX, Dec Ultrix, OSF1, Siemens Sinix... řada free Unixů, Free BSD, GNU Linux... 3 LIDÉ KOLEM UNIXU 1. Vývojáři 2. Tvůrci unixových standardů 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ůrci unixových standardů 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ů 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ů 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 PROCESŮ 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ů ten vytvoří pomocí mechanismu fork synovský proces init, který řídí stav systému a je otcem dalších procesů, např. pro inicializaci terminálů (getty), tiskárny (lpsched), update (aktualizace dat na disku) procesy mohou dědit řadu atributů 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ůže běžný uživatel pouze snížit, zvýšit ji můž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ům 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ůže patřit současně do více skupin uživatel i skupina mají různá práva k souborům a tedy i k programům 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ů (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ův shell $ pro C shell % root má # prompt lze modifikovat nepracuje-li terminál, pak zkoušet Enter Del <CTRL> C Break nakonec vypnout/zapnout emulace terminálu - např. z PC: telnet [jméno stroje] pomatený terminál - příkaz stty sane <CTRL> J zastavení/spuštění rolování textu <CTRL> S/<CTRL> Q 9.2 Odhlášení uživatele od systému logout nebo exit někdy <CTRL> 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ůže mít myš a tiskárnu typy terminálů neinteligentní alfanumerický, dumb, vše hostitelský počítač inteligentní alfanumerický, paměť, můž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ů nejrůzně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ů 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ů 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ů - 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ů 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ů, 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ů a řádků cr=ˆ M návrat vozíku nl=ˆ J nový řádek do=ˆ J kurzor dolů le=ˆ H kurzor vlevo cl=50\e[j;h\e[2j:\ 10.4 Databáze TERMINFO novější způsob, 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ů 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, <RL>: <CTRL> M návrat vozíku <CTRL> J nový řádek (UNIX končí řádek pouze novým řádkem, DOS cr lf) <CTRL> I tabulátor <CTRL> H backspace 10.7.1 Kódy s významem znaků eof esc konec souboru, <CTRL> D (v Dosu <CTRL> Z), někdy též odhlášení ze systému únik, stisk Esc newline <CTRL> J, konec řádku, vhodné u pomateného terminálu místo RETURN return <CTRL> M, cr, návrat vozíku, generuje se stiskem RETURN, RET, ENTER space stisk mezerníku tab <CTRL> I, lze nastavit, umí-li to terminál 12

10.7.2 Kódy pro opravu chybně napsaných znaků erase označí poslední znak jako chybný. Původně to byl #, který znak nesmazal (nešlo to u dálnopisu). Např.: daw#te, darwe###te je date. Nyní zpravidla Backspace, <CTRL> H, který znak smaže kill původně @, např.: wrrrrrrrrrrrrrrrrrrrrrrrrrrr@,dnes zpravidla kill je <CTRL> X nebo <CTRL> U lnext slouží pro přídady, kdy chceme použít kontrolní znak jako normální - např. napsat skutečné <CTRL> M v textovém editoru a zabránit unixu aby to interpretoval jako return, pak tomu musí předcházet lnext. Je to zpravidla <CTRL> V, takže tedy je třeba psát <CTRL> V <CTRL> M werase <CTRL> W, smaže poslední slovo 10.7.3 Znaky pro řízení práce programu intr quit přerušení programu, zpravidla <CTRL> C nebo DELETE, v Unixu DELETE nemaže znaky při psaní. přeruší program a vydumpuje paměť do souboru core, zpravidla <CTRL> \ 10.7.4 Rolování výstupu na obrazovku nefunguje Scroll Lock při emulaci na PC standardně: stop <CTRL> S, přeruší výstup na obrazovku, jako v Dosu Pause, ale ta nefunguje v emulátoru terminálu start <CTRL> Q, spuštění výstupu 10.7.5 Další znaky <CTRL> A až <CTRL> Z <CTRL> [ 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<ctrl>?. 10.8 Výpis nastavení řídicích kódů krátký výpis stty všechno stty -a 13

10.9 Nastavení řídicích kódů stty jméno kódu klávesa Např.: vymazání znaku=backspace stty erase ^ H vymazání řádku=<ctrl> X stty kill ^ X Přerušení programu=delete stty intr ^? kód start=stop=<ctrl> S,používat rolování jako přepínač stty start ^ S pokud se nám nové nastavení řídicích znaků líbí, je vhodné přidat příkazy stty do.profile nebo.login. 11 SYSTÉM SOUBORŮ V UNIXU 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ů) čí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ů, 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ůž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ů 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ů, 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ů do domovského $HOME dotaz kde stojím pwd aktuální. nadřazený.. v Unixu určitým způsobem standardizovaná struktura adresářů uživatelé mají svoje adresáře v /usr či /users nebo /home 17

12 PŘÍKAZY externí (názvy programů v /bin, /usr/bin, /etc...) interní příkazy shellu (cd) koncepce: příkaz plní jednu funkci, ale důkladně, Unix jako stavebnice pokračování příkazu na dalším řádku více příkazů na jednom řádku se oddělí ; 12.1 Příklady příkazů 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ů 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ů expanzní znaky ls *txt; ls *.txt 12.3 Vstup a výstup příkazů 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 <CTRL> D (v Dosu <CTRL> Z) Př. Setřídění vstupu z klávesnice na obrazovku sort 3 2 1 <CTRL> D Př. Setřídění vstupu z klávesnice do souboru a prohlédnutí výsledku sort -o vysledek 3 2 1 <CTRL> 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 Přesměrování vstupu a výstupu, roura 12.5.1 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 P 1 P 2... P n standardní výstup příkazu P 1 je standardním vstupem příkazu P 2 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ů 6. hry 7. různé 8. příkazy systémové údržby 20

13.1.1 Syntaxe man man [číslo sekce] název stránky příkaz můž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ů man 7 man lze zadat manuál pro více příkazů - 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ů a zvláštních znaků, bez parametrů dialog, bývá v Systemu V. help záleží na implementaci, nejrůzně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ů, 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ů, které se týkají klíčového slova pomocí locate [klíčové slovo...], bez parametrů se spustí dialog. Př.: locate internet ftp telnet usage [-deo] [povel], význam parametrů: -d popis -e příklady -o volby bez parametrů standardně dialog 13.3 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ů místní informace o instalaci zabudované výukové prostředky BSD UNIX learn learn [předmět[číslo lekce]], bez parametrů dialog předmět files editor vi morefiles macros eqn C 13.4 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ů, 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 ZÁKLADNÍ OPERACE S ADRESÁŘI 14.1 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ů bez stránkování cat [-u] [-s] [-v[t][e]] soubor... cat /etc/passwd /etc/group 15.2 Výpis souborů 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.. <CTRL> <D> jako v Dosu copy con prac2. <CTRL> <Z> 15.6 Vymazání souboru rm [-ifr] soubor... -r maže rekursivně vše včetně adresářů (jako deltree v Dosu) rm -r prac*!nikdy! - zvláště ne jako root!!! cd / rm -r * 24

15.7 Spojování souborů 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ů mv staré jméno nové jméno touch stary mv stary novy 15.9 Přesun souborů 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ů jeden soubor do druhého cp zdrojový soubor cílový soubor jeden nebo více souborů do jiného adresáře cp zdrojový soubor... cílový adresář 15.11 Hledání souboru ve stromu adresářů 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 verejny.text ls -l verejny.text chmod go+w verejny.text ls -l verejny.text chmod o-w verejny.tex ls -l verejny.text absolutní formát chmod přístup soubor... touch milostn\ {y} dopis ls -l milostn\ {y} dopis chmod 600 milostn\ {y} dopis (jako chmod go-rw milostn\ {y} dopis) ls -l chmod 666 milostn\ {y} dopis (jako chmod go+rw milostn\ {y} dopis) ls -l 15.13 Změna vlastníka souboru chown vlastník soubor... změnit vlastníka souboru může jen vlastník nebo root pozor! pokud předám soubor někomu jinému, může být pro mne nedostupný 15.14 Změna skupinového vlastníka souboru chgrp skupina soubor... změnit skupinové vlastnictví souboru může jen člen skupiny nebo root pozor! pokud předám soubor jiné skupině, můž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ů 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ů, 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 -R editor pracuje v okně o n řádcích 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ůžeme pracovat s více soubory, mezi nimiž lze během práce přecházet 27

16.2 Můj 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ů 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 manu\ {a}l vi editoru a esej V\ {a}clava Havla v angli\v{c}tin\v{e}. Jsem tak \v{s}\v{t}astn\ {a}! 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ůž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ůž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]<ctrl>f vpřed o stránku [n]<ctrl>b vzad o stránku [n]<ctrl>d dolů o půl stránky :z dolů o půl stránky [n]<ctrl>u nahoru o půl stránky [n]<ctrl>e dolů o řádek [n]<ctrl>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]<return> jako [n]+ [n]j další řádek a stejný sloupec šipka dolů 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ůzné od písmen, číslic a podtržítka [n]b [n]e směrem vzad na další slovo; oddělovači jsou znaky různé od písmen, číslic a podtržítka směrem vpřed na konec slova; oddělovači jsou znaky různé 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 Vyhovující posloupnost znaků 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 [řetězec] znak, obsažený v řetězci, lze použít intervaly znaků, ve tvaru počátečníkoncový. Např. [A-Z] značí velká písmena [ˆ řetězec] znaky, které nejsou obsaženy v řetězci řetězec* žádný nebo libovolný počet řetězců (lze použít i interval znaků) řetězec1řetězec2 ř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 \(řetězec\) 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ů v povelech náhrady. Příklady regulárních výrazů Vzor Vyhovuje /ˆ $/ prázdná řádka /./ nejméně jeden znak na řádce /ˆ / všechny řádky /ˆ vzor/ řetězec vzor na začátku řádky /vzor/ řetězec vzor kdekoliv na řádce /vzor$/ řetězec vzor na konci řádky /ˆ vzor$/ řádky obsahující pouze řetězec vzor /vzor\./ řetězec vzor. kdekoliv na řádce /[Vv]arianta[1-3]/ řetězce Varianta1, Varianta2, Varianta3, varianta1, varianta2, varianta3 /ˆ V Praze.*1\.1.97$/ řádky obsahující na začátku řetězec V Praze a na konci řetězec 1.1.97 16.6 Pohyb kurzoru po obrazovce [n]h na n-tý řádek od začátku stránky, standardně na prvý [n]l M na n-tý řádek od konce stránky, standardně na poslední na prostřední řádek obrazovky 16.7 Pohyb kurzoru na řádce 0 [n]ˆ [n]$ [n] začátek řádku znak na řádku, různý od tabelátoru nebo mezery poslední znak na řádku 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]<backspace> další znak vlevo, jako [n]h [n]<ctrl>h další znak vlevo, jako [n]h [n]<šipka vlevo> další znak vlevo, jako [n]h [n]fc 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]; [n], opakuj poslední povel f, F, t nebo T 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<return> aktuální řádek uprostřed z. z- aktuální řádek nahoře aktuální řádek dole 16.9 Pohyb kurzoru po značkách mc c c návrat kurzoru na předcházející pozici návrat kurzoru na prvý nebílý znak řádku na kterém byl kurzor. označení aktuální polohy kurzoru značkou c (a-z) jdi na značku 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]<objekt posun objektu o tabulátor vlevo [n]yobjekt zapamatování objektu [n]!objekt povel textový objekt se přefiltruje přes shellovský povel. Povel používá jako standardní vstup i výstup objekt a může pochopitelně mít argumenty. Pokud se namísto objektu zopakuje manipulační povel, znamená to jeho aplikaci na celý řádek na němž stojí kurzor. dd vymaže celý řádek, na němž stojí kurzor 20>> posune dvacet řádků 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ů 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ům režimu vi. Obecný formát povelu editoru ex [adresa] [povel] [!][parametry][počet][příznak] Adresa udává rozsah řádků, na kterých operuje povel: 33

adresa význam. tečka značí aktuální řádek. Pracuje-li povel pouze s jedním řádkem, není třeba psát (standardní hodnotou povelů je zpravidla aktuální řádek n n-tý řádek $ poslední řádek vyrovnávací paměti 0 začátek vyrovnávací paměti % celá vyrovnávací paměť (zkratka pro adresu 1,$) +n n-tý řádek za řádkem aktuálním -n n-tý řádek před řádkem aktuálním /vzor/ 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 c řá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ů, 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ů 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ůsobí 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 [n]x vymaže text od kurzoru do konce řádku 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 U obnoví soubor do stavu před poslední změnou 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ů 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ůže nabývat hodnot a - z. Povely povel mazání jsou uvedeny v kap. Vymazání textu. 35

rp rp p P vloží vymazaný text z registru r za kurzor vloží vymazaný text z registru r před kurzor vloží poslední vymazaný text za kurzor 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ůž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ů (standardně jednoho) do registru ; r můž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ůž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ů (standardně jednoho) do registru ; R můž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 :w :w! uložení aktuálního souboru, pokud se změnil a výstup z vi editoru uložení aktuálního souboru uložení aktuálního souboru i v případě, že je do něj zakázán zápis 36

:sh :q :q! vyvolání nového shellu, po jeho opuštění návrat zpět do vi opuštění editoru opuštění editoru s ignorováním změn :e soubor přechod k editování dalšího souboru :e! obnovení původní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 <CTRL>ˆ 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 :!! :n :n! zopakuje poslední shellovský povel edituje další soubor ze seznamu argumentů, byl-li editor vyvolán s několika argumenty před editováním dalšího souboru neuloží změny v do souboru aktuálníhp :n [+povel soubor...] definuje nový seznam souborů 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ů :f zobrazí jméno aktuálního souboru a číslo řádku, obsahujícího kurzor 37

<CTRL>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ů 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ů, 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ů, 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ůž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ů 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ůzné povely a triky <CTRL>? zruší přerušení i<return> rozdělení řádku před kurzorem a<return> rozdělení řádku za kurzorem <CTRL>l překreslení obrazovky [n]j spojení n následujících řádků do jednoho :[rozmezí]j spojení řádků 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ů 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 <CTRL>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