Cvičení Úvod do UNIXu
LS 2005/2006, 2/2 Z+Zk, úterý 17:20 — 18:50 SU2
Konzultace: po skončení cvičení nebo po emailové dohodě
Podmínky pro získání zápočtu
Zápočet lze získat dvěma alternativními způsoby:
- Odevzdáním nejméně 6,5 vypracování různých domácích úloh do příslušného stanoveného termínu.
- Složení zápočtové písemky (charakterem, náročností i podmínkami odpovídající zkouškové písemce).
Cílem cvičení je připravit studenty na zkoušku, čemuž se bude podřizovat i hodnocení vypracování úloh a písemky. Iterativní způsob (odevzdávám úlohu, dokud není konečně správně, resp. chodím na zápočtovou písemku, dokud ji konečně neudělám) je v principu možný, ale můj čas bohužel neomezený není.
Domácí úlohy
Termín | Úlohy |
---|---|
7. 3. 2006 19:00 CET | Úloha č. 1 |
14. 3. 2006 19:00 CET | Úloha č. 2 |
Úloha č. 3 | |
4. 4. 2006 19:00 CEST | Úloha č. 4 |
18. 4. 2006 19:00 CEST | Úloha č. 5 |
25. 4. 2006 19:00 CEST | Úloha č. 6 |
12. 5. 2006 19:00 CEST | Úloha č. 7 |
17. 5. 2006 19:00 CEST | Úloha č. 8 |
30. 5. 2006 19:00 CEST | Úloha č. 9 |
4. 6. 2006 19:00 CEST | Úloha č. 10 |
12. 6. 2006 19:00 CEST | Úloha č. 11 |
Další úlohy již zadány nebudou, zájemci o zápočet, kteří zatím nedosáhli potřebného počtu bodů, nechť se zapíší na zápočtovou písemku (budu přihlížet k již dosaženým bodům). V případě velkého zájmu vypíši další termín.
Termíny zápočtových písemek
- 5. 6. 2006 od 14:00 v SU1
- 12. 6. 2006 od 14:00 v SU1
Písemka trvá dvě hodiny a zadáním je napsat na papír nejpodstatnější části a základní strukturu shellového skriptu řešícího komplexní úlohu. Povolena je libovolná literatura a pomůcky kromě sbírek řešených úloh.
Přihlašujte se pomocí SISu.
Literatura
- Stránka přednášky Libora Forsta
- Wiki k předmětu
- Introduction to UNIX
- Introduction to Linux, Advanced Bash-Scripting Guide (Linux-specific!)
Obsah cvičení
21. 2. 2006
Povinný úkol: zřitit si učet v unixové laboratoři
Axiomy:
- Unixové počítače se (až na výjimky) nerestartují a nevypínají, mohou na nich pracovat vzdáleně přihlášení uživatelé!
- Restartem se problém nevyřeší!
- Při odchodu od počítače se odhlašte nebo alespoň zamkněte svou session!
Grafické prostředí (X Window System, desktopové prostředí Gnome, KDE), multiuživatelská práce, vzdálené přihlašování (včetně grafických aplikací)
Filozofie terminálových programů
Základní systémové konfigurační soubory
První příkazy:
man
- manuálová stránka k danému tématu
pwd
- vypíše aktuální adresář
cd
- změna adresáře
ls
- výpis souboru v daném adresáři, bez parametru v aktuálním adresáři, základní přepínače
cat
- vypsání obsahu souboru (souborů) na standardní výstup
ssh
[-X
] [-Y
] uživatel@
stroj- přihlášení na vzdálený stroj, včetně možnosti přesměrování grafického výstupu; vždy si z důvěryhodného zdroje zkontrolujte správnost otisku veřejného klíče! (návod a vysvětlení)
28. 2. 2006
Ukázkový adresářový strom:
mkdir /tmp/uživatel cd /tmp/uživatel wget http://www.decky.cz/vyuka/unix/intro.tar.gz tar xvzf intro.tar.gz
Přesměrování standardního vstupu a výstupu
Argumenty na příkazové řádce, metaznaky shellu a jejich escapování
Divoké znaky a skryté soubory
První shellovský skript, nastavování přístupových práv, spouštění
Další příkazy:
mkdir
[adresář]- vytvoření adresáře/dd>
wget
url- stažení souboru pomocí protokolu FTP, HTTP apod.
tar
- vytvoření nebo rozbalení archívu
chmod
- změna práv souboru/adresáře
w
- aktuálně přihlášení uživatelé
finger
[uživatel][@
stroj]- informace o uživateli nebo výpis přihlášených uživatelů na daném stroji
mesg
- povolení nebo zákázání přijímání výzev od jiných uživatelů
write
uživatel- odeslání zprávy na terminál uživatele
talk
uživatel[@
stroj]- interaktivní chat s jiným uživatelem
mail
[-s
předmět] [email]- čtení přijatých emailů v INBOXu nebo odeslání emailu
id
- informace o aktuálním uživateli (UID, GID, skupiny)
wc
[-l
] [-w
] [-c
]- počet řádků, slov, znaků atd. vstupu nebo souboru
Úloha na rozmyšlenou: pošlete na email počet skupin, ve kterých je aktuální uživatel
7. 3. 2006
Roura a její použití
more
,less
- stránkování vstupu
tee
soubor- kopírování vstupu na výstup a do souboru
last
- seznam naposledy přihlášených uživatelů
tr
- náhrada znaků
cut
- výber záznamů z řádek vstupu
paste
- spojování řádků souborů
uniq
- vynechání duplicitních řádků
sort
- třídění vstupů
Příklady:
- Oprava velkých písmen na začátku jmen a příjmení v
/etc/passwd
- Seznam 10 naposledy přihlášených různých uživatelů
- Počet různých login shellů uživatelů
14. 3. 2006
Na cvičení mě zastoupil kolega Martin Trčka
Práce se soubory
touch
- změna access time souboru, vytvoření souboru
cp
,mv
,rm
- kopírování, přesunování, mazání souborů
mkdir
[-p
],rmdir
- vytváření, mazání adresářů
umask
- maska práv nově vytvářených souborů
xargs
[-i
] příkaz parametry- doplňování řádků vstupu do příkazu a jeho spouštění, standardně na konec příkazu, s
-i
místo{}
find
cesta podmínky příkazy- hledání souborů od dané cesty vyhovující dané podmínce a spouštění (na nich) daných příkazů
21. 3. 2006
Procvičování xargs
a find
- Souborové informace o login shellech uživatelů
- Vytvoření záloh všech souborů
- Vytvoření záloh souborů, které se nezměnily alespoň 1 den
- Seznam 5 souborů s největším počtem řádků
28. 3. 2006
Příkazy:
grep
pattern [file]
grep
[-e pattern | -f [pattern-file] [file]- hledá pattern v souborech
ed
[file]- [adresa[,adresa]]příkaz[parametry]
sed
[-n
] {script_if_no_other_script} [file]- streamová podoba
ed
Příklady:
- Soubory s danými právy
- Jména uživatelů z
/etc/passwd
s alespoň dvěma mezerami - Náhrada komentářů z C za komentáře z C++
4. 4. 2006
Příklady na sed:
- Informace o include souborech ze zdrojáků ve stromě
- Změna dobrého uzávorkování
11. 4. 2006
Přesměrování dalších file descriptorů, here document
Proměnné shellu, návratové hodnoty
Sekvence příkazů
Příklady:
- Vypsání parametrů skriptu
- Vytvoření adresáře a souboru (výpis chybových hlášek, když se operace nepovedou)
- Skript pro nalezení binárky v cestě
$PATH
18. 4. 2006
Náhrada výstupu (`
příkaz`
)
Cyklus while
a jeho použití
while
příkaz; do
sekvence; done
- sekvence příkazů se vykonává, dokud je návratová hodnota podmínky příkaz rovna 0
expr
výraz- vyhodnocení aritmetického výrazu (operandy a operátory jako jednotlivé parametry)
read
proměnná- čte řádku vstupu do proměnné, po úspěšném čtení vrací 0
Příklady:
- Simulace
cat
pomocíwhile
aread
(včetně číslování řádků) - Skript pro změnu login shellu daného uživatele
- Skript pro výpis počtu řádků souborů rekurzivně počínaje daným adresářem a jejich celkové velikosti
25. 4. 2006
Routa a řídící struktury shellu
Subshell, návrat hodnoty z něj
Vytváření bezpečných přechodných souborů
Uklizení po běhu skriptu
Další řídící struktury shellu: if
.. then
.. elif
.. else
.. fi
, cyklus for
Příkaz test
(resp. [
.. ]
)
Příklady:
- Skript pro třídění přístupového logu webového serveru
- Skript pro rekurzivní spouštění příkazu na všech souborech (včetně skrytých)
2. 5. 2006
Výuka odpadá
9. 5. 2006
Funkce v shellu
nc
[-q sec
] hostname port
nc -l -p port
Pojmenovaná roura (FIFO), mkfifo
Příklady:
- Kopírování souborů po síti pomocí
nc
- Klient a server pro rwho (vzdálený výpis přihlášených uživatelů)
16. 5. 2006
awk
Příklady:
- Počet řádků a slov pomocí
awk
- Změna komentářů pomocí
awk
23. 5. 2006
Fotky z posledního cvičení (album vytvořeno shellovým skriptem)
Zpracování příchozího emailu, .forward
Hardlinky a symlinky
case
ln
- vytvoření hardlinku nebo symlinku
diff
- porovnání rozdílů dvou souborů
split
- rozdělení souboru podle počtu řádků, velikosti apod.
sleep
- pasivní čekání
time
příkaz- měření skutečného času běhu příkazu
date
- výpis reálného času
Příklady:
- Spouštění příkazu pomocí emailu
- Zpracování přepínačů na příkazové řádce
Co se nestihlo
eval
— vícenásobné zpracování řádky shellu- Podmíněná substituce proměnných
- Speciality některých shellů (Korn Shell, C-Shell)
- Funkce v
awk
join
vi
ex
ps