Cviceni ze zakladu UNIXu

V akademickem roce 2011/2012 vedu cviceni z predmetu Uvod do UNIXu (NSWI095), najdete nas v laboratori SU2 kazdy ctvrtek 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 skupinu c. 33, ovsem i studenti odjinud jsou vrele vitani! Pokud ke mne chcete chodit na cviceni, musite se zapsat v grupicku _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 resp. 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. Podminkou k ziskani zapoctu je bud napsat zapoctovou pisemku a nejaky ten domaci ukol, nebo odevzdat zapoctak.

Cesta ditete: Semestr je rozdelen na tri bloky po cca ctyrech tydnech, na konci kazdeho bloku dostanete ctyri domaci ukoly, na jejich odladeni a finalni odevzdani budete mit 14 dni. Z kazdeho bloku byste pritom meli odevzdat alespon jednu ulohu; pokud nejaky blok propasnete, muzete si ulohu nahradit, ale jen ulozkou z dalsiho bloku. (Ovsem s prubehem semestru se slozitost zadani bude samozrejme zvysovat. ;-) Ukoly poslete co nejdrive, abyste do zacatku dalsiho cviceni stihli jeste proiterovat pripadna opravena reseni, budu-li mit vyhrady (coz se stava dost casto).

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 (v tom spravnem jazyce, pochopitelne). Primarni ucel pisemky je dat Vam moznost si na vetsi uloze vyzkouset, co Vas ceka pri zkousce a jake mate sance si s tim poradit. Pocet opravnych pokusu neni omezen.

Cesta lva: Zapoctovy program by mel byt v rozsahu minimalne dvojnasobku zkouskove pisemky, a to v libovolne kombinaci shellu, sedu a awku. Tato moznost je v zasade urcena pro ty, kteri se jiz s UNIXem dobre kamaradi, neco velkeho uz napsali a ted je nebavi chodit na cviceni a otravovat se s nejakou pisemkou - v posuzovani zapoctaku tedy budu relativne prisny. Na zapoctaku se se mnou pokud mozno domluvte predem a to do nejake trochu rozumne doby (pokud mozno ne 24. zari vecer). Na cvicenich budete samozrejme stale vitani. (Nemate-li zadny napad, co psat, zkuste bych se podivat na stranky cviceni z minulych let a vybrat si nektery z nejtezsich domacich ukolu: napada mne shop, nejaka lehce rozsirena verze jednoho z stur, rall, cprp, seex, shvm, find... Ovsem fantazii se meze nekladou!

Heuristika: Napiste one-liner, ktery jednoduse spocita vzdalenost dvou znaku v abecede. Zvladnete-li to bez potizi behem minuty, s UNIXem si asi celkem dobre rozumite.

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.

[an error occurred while processing this directive]

Pokud sami v mailu nenapisete opak, souhlasite s pripadnym vystavenim Vaseho dilka na webu.

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, cat, echo). mail, ssh (zminka).
  2. Opakovani pajp (rev, tac, less, head, tail, wc; plna uzivatelska databaze v ulabu: getent passwd). Umazavani prvniho radku. Jak editovat soubory (vim+vimtutor / emacs, mcedit / joe / nano, gedit / kate) a jak vypada skript. wget. SMS ulozka. Aritmeticka expanze $((...)), specialni promenna $RANDOM.
  3. Opakovani, bc. Prikazova substituce $(...) resp. `...`. Velmi jemny uvod do promennych x=...; echo $x, parametry ($1, ...). Prumerna delka radku, znaky a kodovani a konce radku. Rozsireni SMS ulohy (ruska ruleta, logovani). date. Docasne soubory ($$, mktemp). Escaping (\ ) + quoting ('', "").
  4. Pokrocile SSH (vzdalene spousteni prikazu, kopirovani souboru). Kompendium ulozek na cut, sort, uniq, tr. Idiom sort | uniq -c | sort -n.
  5. Opakovani tr, sort + uniq. diff + comm. Globy (*, ?, []). Prvni regularni vyrazy a spetka sedu.
  6. Regularni vyrazy (zkousejte dalsi na tutor.fi.muni.cz), grep a sed.
  7. Opakovani procesu z prednasky, ps axu. Vice sedariny (zpracovani mailu). find, xargs.
  8. Procesy, signaly, ps, idiom awk '{print$1}'. Navratove kody, podminky a cykly. Vlastni implementace seq. while read. Hadani cisel.
  9. trap. Kompendium ulozek. Zamysleni nad nahodnymi cisly. cc, clear, reset (IOCCC). 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
  10. eval a hledani bezpecnostni diry. Vseobecny mix ulozek.
  11. Mixovani uloh z minule.
  12. Pisemka nanecisto - sledovani adresaroveho stromu (priklad reseni).
  13. Pisemka nacisto - botnet'.
[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. Cas mivam obvykle po cviceni, jinak se na MS vyskytuji nikoliv uplne pravidelne, lec kazdopadne velmi casto, v kancelari c. 322 (3. patro, naproti S3) nebo v malostranskem Starbucks. ;-)

TOC

@TOC@
Edituje Petr Baudis. No counters, no frames, no syntax errors. Design borrowed from MJ.