Installfest 2020

Installfest 2020 Seznam všech příspěvků

Přednáškou „Bash script from scratch“ je tentokrát přispěl k linuxové konferenci InstallFest. Ta proběhla opět první víkend v březnu na ČVUT FEL na Karlově náměstí. I tentokrát to tedy bylo o shellu. Tématem mého povídání byla tvorba shell skriptu od počáteční řádky s #! až po komplexní skript. Díky záznamu Strahovského AVC se můžete na přednášku podívat. Vzhledem k tomu, že je přednáška samotná naprogramovaná v shellu, není možné si ji jednoduše prohlédnout na webu.

Přednáška se věnovala postupu, kterým je možné dojít od prvotní myšlenky na řešení nějakého problému, přes prototyp až ke konečnému skriptu v bashi (shellu). Konkrétní úkol, který jsem si zvolil, bylo vytvořit animaci (video) ze zadaných vstupních hodnot.

Představte si, že měříme nějakou veličinu, například teplotu nebo zátěž CPU, nebo cokoli jiného. Pokud máme v souboru data, řekněme každou hodnotu na samostatném řádku, mohli bychom vykreslit graf. Ten by zobrazoval, jak se hodnota měřené veličiny vyvíjela v čase. A tento vývoj bychom pak rádi viděli jako video.

Příklad animace měřené veličiny
Ukázka výsledné animace měřené veličiny. Zde exportovaná do formátu GIF. Pro zajímavost: soubor se 100 snímky animace (640 x 480 px) má velikost pouze 8,5 KiB.

To vše se dá v rámci prototypu napsat na několik jednoduchých řádků. Aby však bylo možné skript parametrizovat, aby mohl zpracovávat více vstupních souborů, aby byly ošetřené předvídatelné problémy a aby skript po sobě uklidil dočasná data již vyžaduje trochu více úsilí. A o tom je tato přednáška.

Jelikož jsem při prezentaci nepoužíval klasické slidy, ale ovládal interaktivní shell skript, není možné si jednoduše stáhnout celou prezentaci. Protože však obdobu této přednášky prezentuji studentům již několik let a vždy se najde někdo, kdo by rád výsledný skript měl k dispozici, mám jich několik verzí.

Soubory z Installfestu 2020
Soubory z předmětu „Programování v shellu 2“
  • anim-b132 - výsledný skript ze semestru B132
  • anim-b142 - výsledný skript ze semestru B142
  • anim-b142 - výsledný skript ze semestru B142 (kombinované studium)
  • anim-b152 - výsledný skript ze semestru B152
  • anim-b152 - výsledný skript ze semestru B152 (kombinované studium)
  • anim-b172 - výsledný skript ze semestru B172
  • anim-b172 - výsledný skript ze semestru B182

Obsah přednášky

  1. Intro
  2. How to solve problems using shell script
  3. Problem
  4. Overview
    • Data generator (awk)
    • Tools: gnuplot and ffmpeg
  5. Skeleton using comments
  6. Prototype 1 and 2
  7. Complex script
    • Data processing
    • Temporary files
    • Tests
    • Functions
    • Traps (signals)
    • Messages
    • Options processing
    • Arguments processing