25.5.2004

Z?PO?TOV? TEST Z UNIXU

Filed under: school,Unix — nax @ 09:24

U? je docela dost pozd? a dnes byl na??t?st? u? p??edposledn? dlouhat??nsk?? pond?lek od (p??edn????ky a jedno cvičen? – pr??v? z unixu) od 7:30 do 19:30. Pravda, dnes jsme skončili asi o t??i čtvrt? hodinku d???v, proto?e m?sto posledn? p??edn????ky se ve velk? posluch??rn? K1 psal z??počtov?? test a ten byl jen na 40 minut (p??vodn? ???kal ?e na 30 minut, ale trochu nastavoval).

Ten test byl – jak bych to jen ??ekl – ne zrovna ???dn?? trivka. V linuxu u? d?l??m n?jak?? ten p??tek, ale s n?kter??mi v?cmi jsem m?l docela probl?my. Cel?? test byl na oboustrann? potiskl? A4, p??ičem? odpov?ď byla v?t??inou jen p??r slov, maximum snad byl skript?k v awku na 3 ????dky. Ot??zky byly hlavn? z p??edn????ek a v?t??inou ne zrovna v?ci na prvn? pohled z??ejm?.

No pravda – mohli jsme pou??vat jakoukoli literaturu a sakra bylo zn??t, ?e jsem si vytiskl p??edn????ky a dop??edu jsem si dal program p??edn????ek (harmonogram z webu). Pak u ot??zky jako t??eba co znamenaj? prom?nn? prost??ed? a) ? b) * c) 1 d) $ nalistovat osmou p??edn????ku a napsat a) n??vratov?? k??d b) parametry c) prvn? parametr d) č?slo procesu pid.

Podobn? sem ??e??il t??eba ot??zku: napi??te 4 p???kazy, kter? mus?te prov?st pro p??id??n? u?ivatele bez pou?it? p???kazu adduser (p??edn????ka 9, slajd 2) nebo ??prava p???kazu p1 | p2 tak aby p2 dost??val chybov?? v??stup p1 a standardn? v??stup p1 se zahazoval. V?ce m?n? jsem to p??esm?rov??n? tu??il, ale v??bec jsem si nebyl jist?? jak maj? b??t na ????dce za sebou ty p??esm?rov??n?. P??edn????ka 2 slajd 15 to na??t?st? vy??e??il:
p1 2>&1 1>/dev/null | p2

P??esm?rov??v??n? se toti? vyhodnocuje zleva do pr??va. Kdybych to ud?lal obr??cen?, tak bych nejd???v sm?chal chybov?? v??stup s standardn?m a pak bych je oba zahodil.

Pak tam byly n?jak? v?ci co jsem dal z voleje, jako t??eba č?m shell nahrad? $HOME, *, $(date) a je??t? cosi. Pak tam taky bylo napsat skript, kter?? vr??t? nejvy????? GID pou?it? v passwd. J?? to ??e??il pomoc? awku (hlavn? ?e jsem si ???kal, ?e pokud to jen bude mo?n? budu se sna?it awku vyhnout, proto?e jsem v n?m nikdy nic po????dn?ho nenapsal). Ud?lal jsem to takhle:
$ awk -F: ‘BEGIN{GID=0}
> { if (GID < $4) GID = $4}
> END{print GID+1}’ /etc/passwd
Pro ty, kdo by snad awk neznaly: parametr -F ud??v?? separ??tor sloupc??. Vzhledem k t?mto separ??tor??m pak budou napln?ny prom?nn? $1 $2 $3 a mnou pou?it?? $4 atd. Pokud si prohl?dnete passwd tak hned pochop?te proč. Sekce BEGIN se provede p??ed zpracov??n?m vstupu, dal??? sekce nen? n?jak omezena p??edch??zej?c?mi regul??rn?mi v??razy nebo č?sly ????dk?? a tak je jimi zpracuj? v??echny ????dky co p??ijdou na vstup a sekce END se vykon?? a? po zpracov??n? v??ech ????dk??. Jak jednoduch?, ?e?

Na dal??? p???klady si u? nepamatuji a u? se mi kl??? kukadla, tak?e toho pro dne??ek nech??m. Tohle teď p???u na sv?m termin??lu a nem??m to tedy jak vlepit do blogu, tak?e to tam d??m z?tra.

Comments are closed.

Powered by WordPress