Tato stránka poskytuje přehled očekávaných učebních výstupů ze všech cvičení. Může se hodit pokud hledáte nějaké konkrétní téma, ale nepamatujete si, na kterém cvičení se probíralo.

Cvičení #1

Přejít na stránku cvičení

Znalosti konceptů

  • vysvětlit, proč není grafické uživatelské rozhraní pevnou součástí Linuxu
  • vyjmenovat několik rozdílů mezi různými grafickými rozhraními dostupnými v systému Linux
  • vysvětlit v širších souvislostech, co je to distribuce Linuxu
  • vysvětlit, co lze chápat pod pojmem unixová rodina operačních systémů
  • vyjmenovat několik druhů objektů, které jsou obvykle potřebné pro softwarové projekty
  • vysvětlit v širším významu, co je to verzovací nástroj
  • vysvětlit základní (vysokoúrovňové) operace verzovacích nástrojů

Praktické dovednosti

  • nastartovat vlastní počítač do Linuxu (buď použitím USB disku, dual-bootem nebo přes virtuální stroj)
  • přihlásit se do grafického linuxového prostředí
  • přihlásit se do fakultní instance GitLabu
  • vytvořit nový projekt na GitLabu
  • nahrát nové změny na GitLab pomocí webového rozhraní a vytvořit na něm commit
  • upravit existující soubory v GitLabovém projektu (ve webovém rozhraní GitLabu)
  • upravit nastavení upřednostňovaného (Linuxového) grafického prostředí
  • vytvořit jednoduchou GitLabovou issue v projektu

Cvičení #2

Přejít na stránku cvičení

Znalosti konceptů

  • vysvětlit, kdy je rozhraní příkazového řádku lepší (či horší) volbou než grafická aplikace
  • vysvětlit rozdíl mezi (emulátorem) terminálu a shellem
  • vysvětlit, co je to cesta k souboru
  • vysvětlit rozdíl mezi relativní a absolutní cestou
  • vysvětlit, jak fungují tzv. shell wildcards (názvy souborů)
  • vysvětlit, co jsou argumenty příkazové řádky (options, switches)
  • vysvětlit užitečnost oddělovače -- (při použití wildcardů u zvláštně pojmenovaných souborů)
  • vysvětlit, co je domovský adresář (home directory)

Praktické dovednosti

  • spustit a ukončit emulátor terminálu
  • nastavit si oblíbený emulátor terminálu
  • procházet souborový systém pomocí nástrojů textového uživatelského rozhraní (např. mc nebo ranger)
  • procházet souborový systém pomocí příkazů ls a cd
  • použit základní přepínače příkazu ls, jako jsou -l, -h nebo -a
  • použít zástupné znaky (wildcards) pro omezení příkazů na určité podmnožiny souborů
  • spustit Pythoní skript z příkazové řádky
  • zobrazit obsah textových soubor pomocí utility cat
  • zobrazit obsah binárních souborů jako hexadecimální výpis pomocí programu hexdump
  • identifikovat typ souboru pomocí nástroje file
  • využívat vestavěné manuálové stránky (základní operace)
  • používat schránky dostupné v grafických prostředích Linuxu
  • používat doplňování tabelátorem pro rychlejší psaní názvů souborů a cest
  • používat soubory se neobvyklými názvy

Cvičení #3

Přejít na stránku cvičení

Znalosti konceptů

  • vysvětlit, co znamená skript (v kontextu Linuxového prostředí)
  • vysvětlit, co je to shebang a jak ovlivní spuštění skriptu
  • chápat rozdíl mezi tím, zda skript má nebo nemá nastavený spustitelný bit
  • vysvětlit, co je pracovní adresář (working directory)
  • vysvětlit, proč je pracovní adresář soukromou “vlastností” běžícího programu
  • vysvětlit, jak jsou argumenty (parametry) předané skriptu s shebangem
  • vysvětlit, co je standardní výstup a vstup
  • vysvětlit, proč přesměrování standardního vstupu/výstupu není (přímo) viditelné uvnitř programu
  • vysvětlit, jak se liší cat foo.txt a cat <foo.txt
  • vysvětlit, jak může být více programů používajících standardní vstup/výstup složeno (propojeno) dohromady
  • volitelné: vysvětlit, proč cd nemůže být normální spustitelný soubor jako /usr/bin/ls

Praktické dovednosti

  • vytvořit Linuxový skript se správným shebangem
  • nastavit executable bit skriptu pomocí utility chmod
  • přistupovat k argumentům příkazové řádky ve skriptu Pythonu
  • přesměrovat standardní vstup a výstup programů v shellu
  • používat standardní vstup a výstup v Pythonu
  • použít rouru (pipe) | pro řetězení více programů dohromady
  • používat základní filtry: cut, sort, …
  • použít grep -F pro filtrování řádků odpovídajících zadanému vzoru

Cvičení #4

Přejít na stránku cvičení

Znalosti konceptů

  • vysvětlit, co je pracovní kopie Gitu (klon, working copy)
  • vysvětlit, proč existují dva druhy výstupu (výstupních proudů): stdout a stderr
  • vysvětlit co je návratový kód programu (exit code)
  • vysvětlit rozdíly a typická využití pro pět hlavních rozhraní, která může využít CLI program: argumenty, stdin, stdout, stderr a návratová hodnota (exit code)\n
  • volitelné: vysvětlit, co je to deskriptor souboru (z pohledu aplikace, nikoliv OS/kernelu)

Praktické dovednosti

  • nastavit informace o autorovi v Gitu
  • nastavit výchozí editor v shellu (nastavení EDITOR v ~/.bashrc)
  • naklonovat Gitový repozitář v shellu přes HTTPS
  • prohlédnout změny v Gitové pracovní kopii (příkaz git status)
  • vytvořit commit v Gitu z příkazové řádky (příkazy git add a git commit)
  • nahrát nové commity na Git server nebo stáhnout nové do pracovní kopie\n(za předpokladu projektu s jedním uživatelem, příkazy git push a git pull)\n
  • prohlédnout si souhrnné informace o předchozích commitech pomocí git log
  • volitelné: upravit si chování Gitu pomocí aliasů
  • přesměrovat standardní výstup a standardní chybový výstup programu v shellu
  • změnit návratovou hodnotu (exit code) pro Pythoní skripty
  • používat speciální soubor /dev/null
  • používat standardní chybový výstup v Pythonu
  • volitelné: upravit si chování shellu pomocí aliasů
  • volitelné: upravit si konfiguraci shellu pomocí .bashrc a .profile skriptů
  • volitelné: upravit si vzhled promptu pomocí proměnné PS1

Cvičení #5

Přejít na stránku cvičení

Znalosti konceptů

  • vysvětlit základní principy síťové komunikace (bez ohledu na OS/zařízení)
  • vysvětlit základní principy asymetrické kryptografie
  • do detailu vysvětlit, jak se dá použít asymetrická kryptografie (privátní a veřejný klíč) pro autentizaci uživatele\n
  • vysvětlit, co je SSH a jaké funkce nabízí
  • vysvětlit, jak se liší spouštění programů lokálně a vzdáleně přes SSH
  • vysvětlit rozdíl mezi používáním Gitu přes HTTPS a přes SSH
  • vysvětlit, proč je použití nmap obvykle omezeno/zakázáno správci sítě

Praktické dovednosti

  • nastavit proměnnou PS1 pro rozlišení různých strojů
  • použít příkaz ssh na přihlášení se ke vzdálenému stroji
  • spouštět příkazy na vzdáleném stroji pomocí SSH
  • používat příkaz hostname
  • přenášet soubory přes SSH pomocí cat
  • nastavit přihlašování bez hesla na vzdáleném Linuxovém stroji pomocí páru privátního a veřejného klíče
  • nastavit autentizaci veřejným klíčem na GitLabu
  • použít git clone (a pull a push) přes SSH
  • volitelné: nastavit zkratky pro SSH
  • volitelné: používat základní funkce terminálového multiplexeru tmux
  • použít nc pro základní operace
  • použít nmap pro základní skenování sítě
  • použít ip k dotazování na stav aktuální síťové konfigurace
  • použít utility ping a traceroute jako základní nástroje pro ladění síťových problémů
  • volitelné: použít NetworkManager k nastavení statických IP adres

Cvičení #6

Přejít na stránku cvičení

Znalosti konceptů

  • vysvětlit rozdíl mezi forkem projektu a klonem (pracovní kopií) repozitáře
  • vysvětlit, co je větev v Gitu
  • vysvětlit, co je feature branch
  • vysvětlit, co je mergování větví v Gitu
  • vysvětlit, co je to merge (pull) request a kdy je užitečný
  • vysvětlit, co je to Git remote
  • vysvětlit, kdy může dojít ke konfliktu při slučování (merge) v Gitu a jak jej lze vyřešit
  • vysvětlit, co se obvykle míní tzv. upstream repozitářem (projektem)

Praktické dovednosti

  • vytvořit větev v Gitu lokálně pomocí příkazu git branch
  • nahrát novou větev v Gitu na vzdálený server
  • vytvořit merge request (žádost o začlenění) z feature větve v GitLabu
  • přepínat mezi větvemi (git checkout)
  • sloučit (merge) lokální větve Gitu pomocí git merge
  • řešit konflikty při mergování
  • nastavit Git remotes
  • volitelné: používání prográmku youtube-dl
  • volitelné: používání VLC z příkazové řádky

Cvičení #7

Přejít na stránku cvičení

Znalosti konceptů

  • vysvětlit, co je to proměnná prostředí
  • vysvětlit, jak v shellu funguje omezení oblasti platnosti (scoping) pro proměnné
  • vysvětlit rozdíl mezi neexportovanou a exportovanou proměnnou (prostředí) v shellu
  • vysvětlit, jak je proměnné $PATH používána v shellu
  • vysvětlit, jak změna $PATH ovlivní spouštění programů
  • vysvětlit jak funguje expanze v shellu a rozdělení na argumenty příkazové řádky
  • vysvětlit, co je to kontrola stylu a linter
  • vysvětlit, jaké problémy mohou odhalit nástroje pro kontrolu stylu
  • volitelné: vysvětlit, proč $PATH obvykle neobsahuje aktuální adresář

Praktické dovednosti

  • použít Pandoc pro převod mezi různými textovými formáty
  • nastavovat a číst proměnné prostředí v shellu
  • vyhodnocovat matematické výrazy v shellu pomocí konstrukce $(( ))
  • používat nahrazování příkazů (command substitution) ($( ))
  • skládat programy pomocí && a || v shellových skriptech
  • vytvářet a používat funkce v shellu
  • využít subshell pro seskupení několika příkazů
  • používat a interpretovat výsledky ShellChecku
  • volitelné : číst proměnné prostředí v Pythonu
  • volitelné: vytvoření vlastních šablon pro Pandoc