Cílem „video-seriálu Programování v shellu“ je seznámení se s příkazovou řádkou a se základní sadou programů pro začínajícího uživatele Unixových operačních systémů. Seriál nepředpokládá žádné předchozí znalosti a je rozdělen do několika částí.
V současné době má seriál 12 částí, které obsahují 69 dílů o celkové délce 32,5 hodin. Další, rozšiřující, díly budou postupně přibývat. Předpokládám, že budou pokrývat praktické ukázky použití příkazů a konstrukcí jak v praktických situacích, tak i v jednodých situacích pro procvičení. Námětem další dílů mohou být také některá témata probraná více do hloubky.
Náměty na doplňující nebo rozšiřující obsah jsou velmi vítány. Stejně tak otázky nebo problémy při praktickém používání shellu a externích nástrojů.
Konceptuální obsah
Seriál neprochází systematicky od jednoho tématu ke druhému (do hloubky). Spíš se jedná o několikanásobný průchod (do šířky), kdy se nejprve povrchně proberou základní témata, která se později podrobněji rozebírají a kombinují. Proto jsou některá témata zmíněna několikrát, pokaždé na vyšší úrovni, resp. detailněji.
- Příkazová řádka (shell)
- Základní seznámení se s shellem
- Interpretace příkazové řádky
- Základní práce se soubory a jejich obsahem
- Manipulace s filesystémem
- Primitivní textové filtry
- Zpracování textů regulárními výrazy
- Statické filtry
- Programovatelné filtry
- Přístupová práva a programové konstrukce v shellu
- Pokročilejší práce
- Hledání, archivace, komprese souborů
- Procesy a úlohy
Seriál začíná vysvětlením činnosti shellu, tedy programu, který zprostředkovává rozhraní mezi uživatelem a operačním systémem. Od prostého použítí shellu pro spouštění jednoduchých příkazů až po komplexní možnosti interpretace příkazové řádky. Ukazuje různé možnosti, které shell nabízí svým uživatelům, aby jim usnadnil a zrychlil práci.
V dalších částech se seriál zabývá různými externími nástroji (příkazy mimo shell), které umožňují pracovat se soubory (filesystémem) a s obsahem soborů. Představuje koncepci (textových) fitrů, která postupně, pomocí jednoduchých kroků, dokáže upravovat obsah souborů. Filtry jsou obvykle spouštěny paralelně a proudovým způsobem (pipeline) manipulují s jednotlivými řádky.
Speciálními kapitolami jsou textové filtry, které využívají síly regulárních výrazů. Ať už se jedná o jednoduchý filtr „grep“ nebo programovatelné filtry (programovací jazyky) „sed“ a „awk“.
Další části se zabývají přístupovými právy a řídícími konstrukcemi v shellu, t.j. podmínkami, cykly, aritmetikou a logickými výrazy a bloky příkazů.
V závěru se seriál zabývá problematikou adresářových struktur, procesů v operačním systému a úlohami v shellu. Konkrétně hledáním, archivací a kompresí souborů a adresářů a hledáním a řízením procesů (běžících programů) a úloh (skupin procesů v shellu).
Detailní obsah
Ukázky jsou primárně vytvořeny na systému Solaris 11, ale je možné je zkoušet (občas s mírnou úpravou) také na Linuxu (nebo MacOS). Smyslem je ukázat rozmanitost světa Unixových operačních systémů a zároveň jejich jednotu v přístupu k uživatelům, souborům, programům a v celkové filozofii používání OS.
Příklady často využívají soubory, které jsou na Unixových systémech nebo
Linux běžně k dispozici. Pro snadnější zkoušení představovaných nástrojů a
konstrukcí je k dispozici také repozitář s daty a ukázkovými skripty a nástroji.
Git repozitář je volně přístupný na
gitlabu a je možné jej stáhnout např. pomocí příkazu
git clone https://gitlab.com/lukasbarinka/ps.git
- Úvod do příkazové řádky [02:42:31] — Prezentace k úvodu do příkazové řádky
- Spouštění příkazů [27:04]
- Pohyb v souborovém systému [18:19]
- Přesměrování výpis souboru [11:47]
- Práce s proměnnou [18:45]
- Dokumentace příkazů [14:41]
- Sekvenční a paralelní spouštění příkazů [08:43]
- Roury a primitivní filtry [13:47]
- Pohyb po příkazové řádce [21:59]
- Vzdálená práce pomocí ssh [27:26]
- Zpracování příkazové řádky (Command line interpretation) [07:02:43] — Prezentace ke zpracování příkazové řádky
- TL;DR - shrnutí [31:27]
- Speciální znaky (Quoting) [54:33]
- Ostranění komentářů (Comments) [07:06]
- Příkazy (Lists, Pipelines, Simple commands) [24:32]
- Náhrady (Expansions) [47:33]
- Rozdělení náhrady na slova (Word splitting) [29:48]
- Expanze jmen souborů (Globbing) [36:08]
- Přesměrování (Redirection) [52:30]
- Spouštění příkazů (Command Execution) [55:34]
- Magie [11:00]
- Příkazová řádka vs skript [39:03]
- GNU vs UNIX [33:29]
- Textový editor „vim“ [00:24:39] — Prezentace k textovému editoru vim
- TL;DR - shrnutí [24:39]
- Systém souborů (Filesystem) [03:07:11] — Prezentace k filesystému
- Informace o souborech a FS [36:56]
- Velikost souboru [14:12]
- Informace o obashu souboru [29:45]
- Vytváření a rušení souborů [36:06]
- Linky [33:25]
- Co je to soubor [29:00]
- „mv“: přejmenování/přesun souboru [07:47]
- Filtry (Filters) [03:28:55] — Prezentace k textovým filtrům
- TL;DR - shrnutí [06:33]
- Přesměrování vstupu a výstupu - pokračování [41:21]
- Co je to filtr [06:14]
- „head“ + „tail“ [31:22]
- „split“ + „cat“ [21:34]
- „cut“ + „paste“ [18:12]
- „tr“ + „join“ [27:03]
- „sort“ + „uniq“ + „comm“ [34:15]
- „cmp“ + „diff“ + „patch“ [22:21]
- Regulární výrazy (Regular expressions) [02:29:31] — Prezentace k regulárním výrazům
- „grep“/„egrep“/„fgrep“ [49:07]
- Syntaxe [11:10]
- Atomické výrazy a kotvy [32:52]
- Kvantifikátory [25:12]
- Podvýrazy a speciální znaky [31:10]
- „sed“ (Stream editor) [02:37:48] — Prezentace ke stream editoru
- Syntaxe [23:10]
- Vzory (adresy) [21:05]
- Akce (příkazy) [34:23]
- Substituce (náhrady) [37:43]
- Blok příkazů a praktické použití [41:27]
- „awk“ [02:35:42] — Prezentace k awk
- Syntaxe [21:16]
- Pracovní prostředí [44:44]
- Vzory [44:49]
- Akce a praktické příklady [44:53]
- Složené příkazy, t.j. podmínky a cykly (Compound commands) [02:57:18] — Prezentace k složeným příkazům
- Podmínky [32:37]
- Cykly [35:56]
- „test“ [43:46]
- „test“ prakické použití [24:36]
- Bloky příkazů [22:02]
- Ukázka skriptu (analýza) [18:21]
- Přístupová práva (Permissions) [01:26:13] — Prezentace k přístupovým právům
- Soubory a adresáře [24:48]
- Praktické důsledky [21:32]
- Nastavení práv - „chmod“ [14:42]
- Maska - „umask“ [25:11]
- Hledání, archivace a komprese souborů [02:09:23] — Prezentace ke hledání, archivaci a kompresi souborů
- „find“ - syntaxe [36:15]
- „find“ - spouštění příkazů (exec) [24:58]
- „tar“ - archivace [36:43]
- „gzip“ - komprese [31:27]
- Procesy a úlohy [01:28:02] — Prezentace k procesům a úlohám v shellu
- Informace o procesech [38:41]
- Řízení procesů [28:06]
- Úlohy v shellu [21:15]
- Rozšíření přístupových práv a ACL [02:15:01] — Prezentace k rozšíření přístupových práv
- TL;DR - shrnutí [30:29]
- Speciální přístupová práva [40:33]
- ACL [35:07]
- ACL mask + default [28:52]