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