Cviceni ze zakladu UNIXu

V akademickem roce 2012/2013 vedu cviceni z predmetu Uvod do UNIXu (NSWI095), najdete nas v laboratori SU2 kazde utery od 14:00. Tady najdete podminky pro zapocet, seznam domacich ukolu, a dle moznosti se budu snazit tvorit i nejake kratke zpravodajstvi ze cviceni.

Cvicim skupiny c. 31 a 75, ovsem i studenti odjinud jsou vrele vitani! Pokud ke mne chcete chodit na cviceni, musite se na cviceni zapsat v SISu _a_ zaroven mi poslat mail. (Evolucne stabilni strategii je psat do subjectu [NSWI095].)

Cilem cviceni je seznamit Vas se zaklady praktickeho a efektivniho pouzivani UNIXu a jeho prikazove radky – shelloveho interpreteru. Radu uloh, at uz se tykaji automatizace Vasi prace ci Vaseho systemu, nebo treba zpracovani velkeho mnozstvi dat, ktere byste museli drive zdlouhave delat rucne nebo na ne psat specialni programy, po absolvovani cviceni zvladnete naskriptovat behem nekolika minut prostou kombinaci hrsti UNIXovych prikazu. Nestihneme sice procvicit uplne vsechny prikazy zminene na prednasce, duraz vsak polozime na to zasadni – reseni konkretnich praktickych uloh ze zivota.

Ziskani zapoctu

Podminkou k ziskani zapoctu je odevzdat tri domaci ukoly behem semestru a v ramci zapoctove pisemky napsat slozitejsi skript. Studenti, kteri si jiz se shellem tykaji, mohou po individualni dohode vyuzit zkratku (zapoctovy program).

Semestr je rozdelen na tri checkpointy po cca ctyrech tydnech. Na kazdem checkpointu si vyberete (alespon) jeden z nekolika nabidnutych domacich ukolu, na jeho odladeni a finalni odevzdani pak budete mit 14 dni.

Ukoly poslete co nejdrive, abyste do zacatku dalsiho cviceni stihli jeste proiterovat pripadna opravena reseni, budu-li mit vyhrady (coz se stava dost casto). Propasle terminy je po individualni dohode vzdy mozne resit, ovsem za cenu rostouci obtiznosti uloh.

Zapoctova pisemka se bude programovat na poslednim cviceni (pokud budete planovat predtermin, dejte mi vcas vedet). Pisemka bude obnaset napsani (na pocitaci) nejakeho jemne netrivialniho programu vcetne jeho doladeni do funkcni podoby.

Primarni ucel pisemky je trenink na zkousku, tedy dat Vam moznost si na vetsi uloze vyzkouset, co Vas ceka pri zkousce a jake mate sance si s tim poradit; skript vsak ladime a hodnotime spolecne polointeraktivni formou a casu je stedre i pro loudavejsi. Pocet opravnych pokusu neni a priori omezen.

Domaci ukoly

Obecna poznamka: Ulohy nejsou dokonale formulovane, s takovymi se obvykle nepotkate ani v realnem zivote programatora; soucasti zadani je tedy aplikace Vaseho zdraveho rozumu. Kreativni (ale chytre) interpretace a reseni vitana.

Predpokladam, ze souhlasite se zverejnenim sveho jmena a informaci o splnenych ukolech (a s malou pravdepodobnosti i svych reseni) na teto strance. Neni-li tomu tak, staci se o tom v mailu zminit.

[an error occurred while processing this directive]

Novinky ze cviceni

  1. Motivace a jemny uvod do systemu a prikazove radky. Editace prikazoveho radku, souborovy system, dokumentace, zakladni presmerovani a pajpy, zakladni prikazy (cd, ls, man (+ (p)info, help [GNU]), cat, echo, sort, head). mail, ssh (a PuTTY) (zminka).
  2. Opakovani presmerovani a pajp (head, tail, wc). Jak editovat soubory (vim+vimtutor / emacs, mcedit / joe / nano, gedit / kate). Escaping (\ ) a quoting ('', "") (mail se subjectem). Vzdalene spousteni prikazu, kopirovani souboru pres ssh.
  3. Jak vypada skript? #!/bin/sh, chmod +x a ./. Vystup ls na terminal vs. do pipeline, rekurzivni ls a skryte soubory. Umazavani prvniho radku textoveho souboru. SMS ulozka. Prikaz wget. Docasne soubory. Expanze $$, $RANDOM, letmy uvod do promennych (x=blabla, echo $x). Aritmeticka expanze $((...)), prikazova substituce $(...) resp. `...`.
  4. Pokracovani SMS ulozky (nahodny radek). Kompendium ulozek na cut, sort, diff + comm, tr.
  5. Zaskocil Lada Laska. Idiom sort | uniq -c | sort -n. join.
  6. Opakovani tr, sort + uniq. grep, prvni regularni vyrazy a spetka sedu.
  7. Regularni vyrazy (zkousejte dalsi na tutor.fi.muni.cz), grep a sed.
  8. Trapeni se sedem; zpracovani mailu, dirname/basename. Predavani parametru skriptu, mezery v promennych, poznamka o xargs.
  9. Rekapitulace signalu a ps (idiom awk '{print$1}'). find, xargs. Druha varka domacich ukolu.
  10. Navratove kody, strucne intro do podminek (if, podmnozina testu) a cyklu (jen for a while). Zminka o seq, idiom while read. Hadani cisel.
  11. seq, trap. Plny seq, hadani cisel s Ctrl-C, budik (sleep + date). Parsovani parametru; idiom:
    while [ -n "$1" ]; do
    	case "$1" in
    		-r) rep=1;;
    		-m) shift; max="$1";;
    		*) echo "Bad parameter: $1" >&2; exit 1;;
    	esac
    	shift
    done
  12. Specialni parametrove expanze ${var%.txt}, ${var#prefix}. Opakovani date. eval a hledani bezpecnostni diry (viz priklad c. 4 tady). Podmnozina vseobecneho mixu ulozek. Posledni varka domacich ukolu.
  13. Pokracovani mixovani ulozek. Navic treba uloha pro manipulaci s anglicko-ceskym slovnikem. Pro zajemce pak "pisemka nanecisto" - velka uloha na cele cviceni (botnet client).
  14. Zapoctova pisemka - velka uloha na cele cviceni (i po) (data ze SISu)
  15. Plan: Ct 20.6. 13:00 dalsi termin pisemky
[an error occurred while processing this directive]

Dalsi zdroje

Pomoc!

Potrebujete-li s necim poradit, udelate nejlepe, kdyz mi napisete mail. Konkretni dotazy muzeme vyresit rovnou po mailu.

Pokud budete mit nejake obecnejsi nejasnosti, nezoufejte, domluvime se a nekdy se potkame. Idealni cas na konzultaci je v okoli cviceni, ale muzeme se domluvit i na jindy.

TOC

@TOC@
Edituje Petr Baudis. No counters, no frames, no syntax errors.