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

Společné informace k zápočtu

Výsledky zápočtu LS 2014–2016

Materiály

Přednášky

  1. Představení unixových operačních systémů: Operační systém, Unix, GNU, Linux, distribuce.
    slajdy
  2. 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
  3. 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
  4. Ú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
  5. 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
  6. Programování v shellu (Bash): Příkazy, proměnné (parametry), podmínky, cykly, celočíselná aritmetika, seskupování příkazů, funkce, skript.
    poznámky
  7. 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
  8. 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
  9. Zpracování textu: programovací jazyk awk: Pole řádku, vzorek a akce, proměnné, pole, operátory, podmínky, cykly, funkce.
    poznámky
  10. Národní prostředí (české): Lokalizace a lokalizační proměnné shellu, kódování textu a konce řádků.
    poznámky
  11. 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í

Na stránkách cvičícího.

  1. 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í).
  2. 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.
  3. 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].
  4. Programování v shellu (Bash): „Hádání“ čísla [2], zjednodušený seq [4].
  5. 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].
  6. Programování v shellu (Bash): Generování souborů [2] a jejich přesuny do podadresářů [5].
  7. 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].
  8. 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*].
  9. Zpracování textu: programovací jazyk awk: Zjednodušený wc [2], výměna řádků a sloupců tabulkového textu [3].
  10. 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*].
  11. 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*].
  12. Dodatečné úkoly: Zpracování tabulkových dat v CSV formátu [10*] a logovacího souboru webového serveru [10*].

Literatura