Cvičení se koná ve středu, 14:00 v SU2 na Malé Straně.
Podmínky k získání zápočtu
Zápočet získáte jedním z následujících způsobů:
- splněním 2/3 domácích úkolů (budou zadávány na cvičení a uvedeny zde na webu) - vždy do dalšího týdne, NEBO (kolik má kdo splněno můžete zjistit na stránce úkoly)
- vypracováním netriviálního zápočtového programu v shellu nebo awk, rozsahu asi 3-krát většího než zkoušková písemka - pro více informací mi napište email nebo se zeptejte na hodině
Domácí úkoly
Domácí úkoly, které se dají odevzdat mi prosím posílejte jako přílohy emailu. Úkoly, které nejde odevzdat,
nebudu nijak kontrolovat, je ale ve vašem zájmu je splnit.
- Vytvořte soubor s obsahem passwd. Změnte ho tak, aby obsahoval setříděné uživatele podle gid. Nepoužívejte pomocný soubor. (Odevzdávejte do začátku cvičení 20. 3.)
- Vytvořte skript ``seq'', který bere až tři argumenty a vypíše podle nich sekvenci čísel. Možné vstupy jsou: LAST, nebo FIRST LAST, nebo FIRST INCREMENT LAST. Výchozí hodnoty pro FIRST i INCREMENT jsou 1, pokud nejsou zadány. Program se rozhodne podle počtu argumentů (proměnná $#). Argumenty předané programu jsou dostupné v proměnných $n, kde n je pozice argumentu (počítáno od 0). (Odevzdávejte do začátku cvičení 20. 3.)
- Vytvořte skript, který zjistí, zda zadaný soubor má lichý nebo sudý počet řádků bez použití wc. (Odevzdávejte do začátku cvičení 27. 3.)
- Napište skript v sedu, který vypíše soubor pozadu (tj. jeho řádky pozpátku). (Odevzdávejte do začátku cvičení 10.4.)
- Odevzdejte libovolný ze svátečních úkolů jako domácí úkol. (Odevzdávejte do 15.3 .)
Probraná látka
1. hodina
Seznámení s prostředím, shell
Základní příkazy - cd, mv, mkdir, ls, cat, head, tail, rev, wc
Úlohy ze cvičení:
- Prozkoumejte svůj domovský adresář.
- Vyvořte si nějaké podadresáře, vnořené, jedním příkazem, popřesouvejte se v nich a zorientujte.
- Smažte některé z vyvořených adresářů, jedním příkazem, vnořené.
- Vytvořte soubor, v adresáři, s obsahem, víceřádkovým.
- Prozkoumejte běžící procesy, své, cizí, spočítejte je.
- Zjistěte aktuálně přihlášené uživatele, za poslední den, přihlašte se vzdáleně na jiný stroj.
- Vytvořte soubor "-r" a smažte ho po sobě.
- Vytvořte soubor obsahující v názvu i vnitřku znak nového řádku, vypište všechny soubory ve stejném adresáři jako je on, spočítejte je.
- Vypište prvních 10 řádků /etc/passwd, posledních, 3, 15, .bashrc, pozpátku (řádky), do souboru.
- Vypište své uživatelské jméno, název počítače, pozpátku (znaky na řádku).
- BONUS: Napište skript, který vytvoří soubor s uživateli přihlášenými dnes, tento týden, za posledních 24 hodin, 7 dní, pouze jména, s datem přihlášení, na cizím stroji.
2. hodina
- Další hrátky v shellu.
- Oprávnění. Všechna cvičení na oprávnění je potřeba zkoušet v adresáři /tmp, v ~ funguje podivná hiearchie ACL práv, která není probírána a nechová se stejně.
- Úlohy ze cvičení:
- Prozkoumejte práva k souborům v adresářích ~, /etc, /lib, /tmp.
- Změnte práva k nějakému soboru. Vytvořte adresář s právy 0777 jedním příkazem, změnte tato práva na 0666 (vyzkoušejte více možností, včetně relativní změny). Čtěte ze souboru s právy 0000, přístupujte do adresáře s právy -x.
- Věnujte nějaký svůj soubor kamarádovi (tj. učiňte z něj vlastníka toho souboru).
- Sečtěte soubory v /usr/lib končící na ".so", začínající na "lib". Jedno nebo druhé.
- Zajistěte, aby se vaše soubory vytvářely s maskou 0600 (automaticky).
- Vypište domovské adresáře uživatelů přihlášených na cizím stroji.
- Vypište uživatele v labu pomocí ,,getent passwd``. Setřiďte podle jména, příjmení, uid, skupiny, komabinací. BONUS: Podle iniciálů, při nerozhonosti podle UID.
- Vypište rekurzivně soubory v /proc a spočítejte chybové hlášky, které takový příkaz vyprodukuje (předpokládejte 1 řádek == jedna chyba).
- Vytvořte soubor s obsahem passwd. Změnte ho tak, aby obsahoval setříděné uživatele podle gid. Nepoužívejte pomocný soubor (Tato úloha se stala domácím úkolem).
3. hodina
Zaskakoval Petr "Pasky" Baudiš.
- Jednoduchá práce s textem.
- Psaní skriptů.
- Programy mail, date, expr.
- Příkazová a aritmetická substituce.
- Úlohy ze cvičení:
- Vypište 3. řádek v souboru, vše kromě prvního řádku.
- Romantické sms, logování a ruská ruleta.
4. hodina
- Práce s textem.
- Proměnné a evaluace.
- Úlohy ze cvičení
- Vypište adresáře a soubory v /usr/lib malými písmeny, rekurzivně, pouze soubory, bez samohlásek.
- Vytvořte zálohovací skript, který zkopíruje celý adresář ~ do adresáře /tmp/zaloha-$datum. Do jediného souboru.
- Upravte zálohovací skript, aby uměl zálohovat vícekrát za den tak, že když už záloha z daného dne existuje, uloží ji do souboru s přilepeným ".1".
- Soubor se zálohou nechte automaticky komprimovat.
- Umožněte nepovinně zvolit cílovou cestu a název souboru, do kterého se zálohuje.
- Upravte skript, aby poctivě nahlašoval chyby, které nastaly.
- BONUS: Zajistěte, aby soubor nebylo možné spustit 2x současně.
5.hodina
- Regulární výrazy.
- Úlohy ze cvičení (jenom některé, zapoměl jsem si je zapsat)
- Setřiďte posloupnost nul a jedniček v souboru
6.hodina
- Regulární výrazy a sed.
- Úlohy ze cvičení
- Napište skript v sedu, který smaže vícenásobné prázdné řádky (tj. z více po sobě jdoucích prázdných řádků udělá jeden).
- Napište skript v sedu, který vypíše soubor pozadu (tj. jeho řádky pozpátku).
- Napište skript v sedu, který vypíše soubor pozadu co se týče řádků i znaků na každém řádku.
- Napište skript v sedu, který v souboru, kde na každém řádku je číslo, každé z těchto čísel zvýší o 1.
- Napište skript v sedu, který smaže vícenásobné řádky (tedy simuluje uniq). (Pozor, tohle lze pouze v rozumě novém GNU sedu!)
Sváteční hodina
- Úlohy na procvičování přes svátky
- Naprogramujte v shellu script, který si bude myslet číslo, číst odpovědi a napovídat "větší" a "menší". Zkuste si také modifikaci, že odpoví správně pouze s jistou pravděpodobností.
- Naprogramujte v shellu script, který přejmenuje všechny soubory v adresáři pomocí uživatelem zadaného regulárního výrazu. Dejte si pozor na speciální znaky!
- Naprogramujte skript, který vyčistí adresář od bordelu -- například thumbs.db, swap souborů vimu (třeba těch končící na ~ atp.) a dalších co vás napadne. Zajistěte ale, aby nejdříve vypsal soubory které se chystá smazat a zeptal se na ně (abychom si nesmazali něco dobrého).
- Napiště program na kopírování souborů, ale umí navázat předchozí práci (stačí podle délky). (Nápověda: použijte dd a stat).
Doporučená literatura
Pokud jste něco nepochopili na přednášce, cvičení, nebo se chcete jenom zdokonalit, nabízím několik hodnotných odkazů,
kam má cenu se podívat.
Další odkazy
- PuTTY - SSH klient pro windows