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
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
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
neboranger
) - procházet souborový systém pomocí příkazů
ls
acd
- 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
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
acat <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
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
agit 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
agit 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
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
(apull
apush
) 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
atraceroute
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
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
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