Unixové systémy a shell [ KMI/UNIX ]
Předmět seznamuje studenty s unixovovými systémy, jejich principy a specifiky, programování v shellu a zpracování textu.
V první části předmětu jsou představeny unixové operační systémy, jejich uživatelská prostředí a systémy nápovědy, souborů a procesů. Hlavní náplní druhé části jsou pak základy programování v shellu (tzv. skriptování, primárně shell Bash) a jeho využití pro zpracování textu pomocí základního softwarového vybavení unixového operačního systému. V průběhu předmětu jsou zmíněna specifika systémů Linux, GNU a Apple Mac OS X. Vše je intenzivně praktikováno na cvičeních ve zmíněných operačních systémech a shellu Bash.
Předpoklady: Základní znalosti a dovednosti s operačními systémy na uživatelské úrovni a programování v libovolném jazyce.
Zápočet
- požadováno získání alespoň 2/3 celkového počtu základních bodů z úkolů na cvičeních (body v [], bonusové s *)
- při získání alespoň 1/3 možnost body doplnit na 2/3 body z dodatečných úkolů na konci předmětu
- za úkol vypracovaný po cvičení, na kterém je zadán, je poloviční počet bodů, s výjimkou dodatečných úkolů
- další info na stránkách cvičícího
- záznam informací k zápočtu a zkoušce pro ak. rok 2020/21
Materiály
- Outrata J.: Základy systémů UNIX a GNU/Linux (slajdy)
- Outrata J.: Unixové systémy a shell (poznámky)
Přednášky
- Představení unixových operačních systémů:
Operační systém, Unix, GNU, Linux, distribuce.
slajdy - Uživatelská prostředí, nápověda:
Grafické (desktop), textové (terminál), příkazový řádek a interpret (shell), manuálové stránky a nápověda shellu.
slajdy - Základní principy, systémy souborů a procesů:
Soubory a adresáře, příkazy a programy pro práci s nimi, (tradiční unixová) přístupová práva, procesy a manipulace s nimi.
slajdy, záznam přednášky 19. 10. 2020 - Úvod do shellu, úlohy a roura:
Řízení úloh, expanze jmen souborů a adresářů, vstup a výstup programu, roura.
slajdy, záznam přednášky 2. 11. 2020 - Zpracování textu: základní programy a grep:
(Plain) text, cat, head, tail, wc, sort, cut, paste, diff, …, regulární výrazy a grep.
slajdy, poznámky, záznam přednášky 2. 11. 2020, záznam přednášky 16. 11. 2020, záznam přednášky 30. 11. 2020, záznam přednášky 14. 12. 2020 - Programování v shellu (Bash):
Příkazy, proměnné (parametry), podmínky, cykly, celočíselná aritmetika, seskupování příkazů, funkce, skript.
poznámky - Programování v shellu (Bash):
Spouštění shellu, kvótování, speciální proměnné, pole, expanze ({}, proměnných a parametrů, slov, cesty), substituce výstupu příkazu, další příkazy.
poznámky - Zpracování textu: proudový editor sed:
Průběh editace, editovací příkaz, funkce, použití proměnných shellu.
poznámky, záznam přednášky 14. 12. 2020 - Zpracování textu: programovací jazyk awk:
Pole řádku, vzorek a akce, proměnné, pole, operátory, podmínky, cykly, funkce.
poznámky - Národní prostředí (české):
Lokalizace a lokalizační proměnné shellu, kódování textu a konce řádků.
poznámky - Specifika oproti Unixu (standardu POSIX):
Specifika Linuxu, GNU a Apple Mac OS X (desktop a terminál, příkazový řádek, nápověda, souborový systém, systém procesů, grep, Bash, sed, awk, lokalizace).
poznámky
Cvičení
- Příkazový řádek, nápověda, systém souborů: Desktop, příkazový řádek (pohyb, editace příkazu, doplňování, historie), manuálové stránky, soubory a adresáře (příkazy a programy pro práci s nimi), přístupová práva (nastavení).
- Systém procesů, úvod do shellu (Bash): Výpis a ukončení procesů, řízení úloh, expanze jmen souborů a adresářů, přesměrování vstupu a výstupu, roura.
- Zpracování textu: základní programy a grep: Výpis očíslovaných řádků v opačném pořadí [1], třídění podle sloupce [1] a manipulace se sloupci [1], „rozdíl“ souborů [2], filtrace řádků [3].
- Programování v shellu (Bash): „Hádání“ čísla [2], zjednodušený seq [4].
- Programování v shellu (Bash): Převody mezi číselnými soustavami [3], zjednodušené dirname [2] a basename [2], omezený rekurzivní výpis souborů [5].
- Programování v shellu (Bash): Generování souborů [2] a jejich přesuny do podadresářů [5].
- Zpracování textu: proudový editor sed: Manipulace se sloupci v tabulkovém textu [1], získání nadpisů z textu jako osnovy [2], sloučení rozdělených řádků [6], výpis řádků v opačném pořadí [4].
- Skriptování v shellu + sed: Generování textů ze šablony a seznamu emailových adres [4*], extrakce URL adres z odkazů v HTML dokumentu [5*].
- Zpracování textu: programovací jazyk awk: Zjednodušený wc [2], výměna řádků a sloupců tabulkového textu [3].
- Skriptování v shellu + sed + awk: Měření paměti procesů uživatelů [5], zjištění doby přihlášení uživatelů do minulosti [5*].
- Skriptování v shellu + sed + awk, národní prostředí (české): Počet jmen v seznamu pro křestní jména [3], přepis příjmení [4], transformace seznamu [5*].
- Dodatečné úkoly: Zpracování tabulkových dat v CSV formátu [10*] a logovacího souboru webového serveru [10*].
Literatura
- Vychodil V.: Linux: Příručka českého uživatele. Computer Press, 2003. ISBN 80-7226-333-1
- Sobell M. G., Helmke M.: A Practical Guide to Linux Commands, Editors, and Shell Programming (4nd Edition). Addison-Wesley, 2017
- Sobell M. G.: Mistrovství v Linuxu: Příkazový řádek, shell, programování. Computer Press, 2007. ISBN 9788025117262
- Herold H.: awk & sed: Příručka pro dávkové zpracování textu. Coputer Press, 2004. ISBN 9788025103098
- Blum R., Bresnahan C.: Linux Command Line and Shell Scripting Bible, 3rd Edition. Wiley, 2015
- kolektiv: Linux: Dokumentační projekt, 4. aktualizované vydání. Computer Press, 2008. ISBN 9788025115251
- Cannon J.: Linux for Beginners: An Introduction to the Linux Operating System and Command Line. CreateSpace Independent Publishing, 2014
- Čada O.: Mac OS X Shell krok za krokem. Grafika Publishing s.r.o., ISBN 80-903152-2-4
- Ray D. S., Ray Eric J.: Unix: podrobný průvodce. Grada, 2009. ISBN 978-80-247-2125-5
- Cooper M.: Advanced Bash-Scripting Guide. Open Publication License, 2007