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ř.
mcneboranger) - procházet souborový systém pomocí příkazů
lsacd - použit základní přepínače příkazu
ls, jako jsou-l,-hnebo-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.txtacat <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č
cdnemůž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 -Fpro 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í
EDITORv~/.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 addagit 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 pushagit 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í
.bashrca.profileskriptů - 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í
nmapobvykle omezeno/zakázáno správci sítě
Praktické dovednosti
- nastavit proměnnou
PS1pro rozlišení různých strojů - použít příkaz
sshna 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(apullapush) přes SSH - volitelné: nastavit zkratky pro SSH
- volitelné: používat základní funkce terminálového multiplexeru
tmux - použít
ncpro základní operace - použít
nmappro základní skenování sítě - použít
ipk dotazování na stav aktuální síťové konfigurace - použít utility
pingatraceroutejako 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 switch) - 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í viditelnosti (scoping) proměnných
- vysvětlit rozdíl mezi neexportovanou a exportovanou proměnnou (prostředí) v shellu
- vysvětlit, jak je proměnné
$PATHpoužívána v shellu - vysvětlit, jak změna
$PATHovlivní spouštění programů - vysvětlit, jak funguje expanze v shellu a rozdělení na argumenty příkazové řádky
- vysvětlit problémy se souběžností, které mohou nastat při používání dočasných souborů
- 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č
$PATHobvykle 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
- používat bezpečně v shellových skriptech dočasné soubory
- volitelné: číst proměnné prostředí v Pythonu
- volitelné: vytvoření vlastních šablon pro Pandoc
Cvičení #8
Znalosti konceptů
- vysvětlit, jak exit kódy umožňují řídit podmínky a cykly v shellových skriptech
- vysvětlit pro konstrukci shellu
if true; then echo "true"; fi, jaké příkazy se v ní provádějí a jakým způsobem se vyhodnocuje - vysvětlit, jaká hlediska jsou důležitá při rozhodování mezi použitím shellu a Pythonu
Praktické dovednosti
- používat v shellových skriptech řídicí struktury (
for,while,if,case) - použít příkaz
read - používat
getoptpro parsování argumentů příkazové řádky - používat
.asourcek načtení funkcí z různých souborů - použít
scpna kopírování souborů mezi místním a vzdáleným počítačem - volitelné: použít
rsyncpro synchronizaci celých adresářů