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í 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é
$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 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č
$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
- 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 a proč je software distribuován ve formě balíčků
- vysvětlit jaké druhy účtů existují na Linuxu a čím se liší (např.
johndoe
,root
anobody
) - vysvětlit rozdíl mezi účtem
root
a ostatními účty - vysvětlit, proč se obecně nedoporučuje provádět neadministrativní úlohy pod účtem
root
- obecně vysvětlit, jak lze
sudo
použít pro správu systému - porozumět nebezpečím používání
sudo
- vysvětlit, co je to služba (démon)
- vysvětlit životní cyklus a možné stavy služeb
- vysvětlit, co je to protokol programu a jak jej lze spravovat
Praktické dovednosti
- používat
getent
na získání informací o existujících uživatelských účtech - používat
sudo
pro zvýšení oprávnění spouštěného programu - používat správce balíčků (package manager) pro instalaci a odinstalaci balíčků
- používat správce balíčků (package manager) pro upgrade celého systému
- používat systemctl ke spuštění/zastavení služeb
- používat
systemctl
pro zajištění automatického spuštění služby při startu počítače - tisknout a skenovat v Linuxu
- volitelné: používat
journalctl
k zobrazení logů - volitelné: používat
useradd
pro vytvoření nového uživatelského účtu
Cvičení #9
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
getopt
pro parsování argumentů příkazové řádky - používat
.
asource
k načtení funkcí z různých souborů - použít
scp
na kopírování souborů mezi místním a vzdáleným počítačem - volitelné: použít
rsync
pro synchronizaci celých adresářů
Cvičení #10
Znalosti konceptů
- vyjmenovat několik kroků, které jsou často nutné k vytvoření distribuovatelného softwaru\n(např. balíček nebo instalační program) ze zdrojového kódu a dalších základních artefaktů\n
- vysvětlit, proč by sestavování softwaru mělo být reprodukovatelným procesem
- vysvětlit, jak je možné zachytit proces sestavení softwaru
- vysvětlit pojmy jazyků, které se používají pro zachycení potřebných kroků\npro sestavení (distribuci) softwaru\n
- vysvětlit, co je to regulární výraz (regex)
Praktické dovednosti
- sestavit projekty používající
make
- vytvořit Makefile, který řídí sestavení jednoduchého projektu
- používat pravidla se zástupnými znaky v
Makefile
- volitelné: používat proměnné v
Makefile
- volitelné: používat základní rozšíření GNU Make pro zjednodušení složitějších
Makefile
- vytvářet a používat jednoduché regulární výrazy na filtrování textu
grep
em - provádět nahrazení vzoru pomocí
sed
u
Cvičení #11
Znalosti konceptů
- vysvětlit, jaká jsou základní přístupová práva na unixových operačních systémech soubory a pro adresáře
- vysvětlit co znamenají jednotlivá oprávnění
r
,w
ax
pro běžné soubory a pro adresáře\n - vysvětlit, co je to signál v kontextu Linux procesů
- vysvětlit rozdíl mezi normálním (obyčejným) souborem, adresářem, symbolickým odkazem, souborem zařízení a souborem reprezentujícím stav systému (např. ze souborového systému
/proc
)\n - vyjmenovat základní adresáře nejvyšší úrovně v typické instalaci Linuxu a popsat jejich funkci
- vysvětlit v obecné rovině, jak je strom adresářů vytvořen připojením jednotlivých (souborových) podsystémů
- vysvětlit, proč Linux zachovává oddělení archivace a komprese (např.
tar
agzip
) - vysvětlit co je to set-uid bit
- vysvětlit, co je proces a jak se liší od spustitelného souboru
- vysvětlit rozdíl mezi vlastnictvím souboru a běžícího programu
- volitelné: vysvětlit, co je POSIX ACL, jen základní přehled
Praktické dovednosti
- zobrazovat a měnit základní přístupová oprávnění souborů
- pomocí
ps
zobrazit seznam existujících procesů (včetně přepínačů-e
,-f
a--forest
) - použít
pgrep
pro vyhledání konkrétních procesů - poslat signál běžícímu procesu
- použít
htop
k interaktivnímu sledování existujících procesů - připojit a pracovat s disky pomocí příkazu
mount
(jak s fyzickými tak s obrazy disků) - získat souhrnné informací o využití disku pomocí příkazu
df
- použít pro práci se standardními linuxovými archivy
tar
neboatool
- použít
find
se základními predikáty (-name
,-type
) a akcemi (-exec
,-delete
)