Martin Děcký – Výuka

Usenix button

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

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í)

Klávesy na příkazové řádce

Filozofie terminálových programů

Adresářová struktura

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 [-spř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

Regulární výrazy

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 a read (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