Käske informatsiooni saamiseks * date - kuupäev ja kellaaeg * cal - kalender * du - ketta täidetus * df - vaba kettaruum, vt. ka quota -v * who - kes (ja kust) on masinas * w - kes on masinas ja mida teeb * niscat - (Solaris) info NIS+ tabelite kohta * stty - terminaali parameetrid cal [ kuu ] aasta du [-k] kataloog ... hõivatud blokkide arv (-k kilobaitides) df [-k] kataloog | seade ... vabade - " - who [ am i ] on ka lipud, vt. man who Näit. niscat -A passwd.org_dir.ut.ee info kasutajate kohta (sarnaneb failile /etc/passwd) stty [ -a ] ilma argumentideta näitab parameetreid, -a - all stty sane stty 9600 stty -lcase Terminaali parameetrite seadmise asjus on mõistlik pöörduda süsteemiadministraatori poole. Kui olete ise admin., uurige infot failide termcap ja terminfo kohta. Tekstitöötlus cat - failide ühendamine * grep - ridade otsimine * ed - rearedaktor * sed - programmi järgi töötav redaktor * sort - ridade sorteerimine * head - faili algusosa väljastamine * tail - faili lõpuosa väljastamine * diff, diff3 - erinevuste leidmine (võimalik failiversioonide kompaktne hoidmine ed-programmide abil) * cmp - failide võrdlemine * comm - ühisosa leidmine sorteeritud failidest * uniq - korduvate ridade eemaldamine sorteeritud failist * join - sorteeritud failide ühendamine * split - pika faili tükeldamine * wc - ridade, sõnade ja sümbolite arv * tr - sümbolikaupa teisendamine * awk - võimas tekstitöötlusvahend * perl - veel võimsam tekstitöötlusvahend grep < sed < awk < perl Tekstitoimeti ed ed [ lipud ] [ failinimi ] Vaatleme tugevasti lihtsustatud alamhulka. Redigeerimiskäsud saadakse standardsisendist, redigeeritava faili määrab failinimi (kui nime pole antud, siis on võimalik luua uus fail). Tulemus moodustub nn. puhvris, mis tuleb ise vastava käsu abil faili kirjutada. Redigeerimiskäsud on üldkujul: [aadress1 [ ,aadress2 ]] käsk [parameetrid] Aadressid on reanumbrid, alati on määratud jooksev rida. Tähistusi: . - jooksva rea number $ - viimase rea number arv - rida numbriga arv (loendamine alates 1-st) [ aadress ] + [ arv ] - suhteline aadress [ aadress ] - [ arv ] - sama ettepoole Aadressi puudumisel valitakse jooksev rida, arvu puudumisel valitakse 1 (näit. `-' - eelmine rida). / regexp / - esimene antud avaldist sisaldav rida ? regexp ? - sama otsimisel ettepoole Käske: e r w q Q a i p c d j m t s e failinimi - lugeda uus fail puhvrisse [ aadr ] r failinimi - lugeda fail puhvrisse antud rea järele (aadr puudumisel lõppu) [a1 ,a2]] w [ failinimi ] - kirjutada antud read faili (a1, a2 puudumisel kogu puhver) q - väljumine, Q - väljumine muutmiseta a - teksti lisamine antud aadressiga rea järele Teksti lõputunnuseks on punkt eraldi real. i - teksti lisamine antud aadressiga rea ette p - antud aadressi(de)ga ridade väljastamine c - antud aadressi(de)ga ridade kustutamine ja teksti lisamine sellele kohale d - antud aadressi(de)ga ridade kustutamine j - antud aadressidega ridade ühendamine m aadr - antud aadressi(de)ga ridade tõstmine rea aadr järele t aadr - sama, aga kopeerimine (vana jääb ka) s/regexp/asendus/[lipud] - asendus Näit: 1,$ s /[Rr]umal/viisakas/g global flag Stream editor - sed sed [-n] [[-e]'käsud'] [-f kfailinimi] [failinimi ...] Mitteinteraktiivne failitoimeti, tavaliselt kasutusel filtrina. failinimi ... (puudumisel standardsisend) redigeeritakse vastavalt käskudele ning kopeeritakse standardväljundisse. Käsud saab ette anda vahetult (e-lipp) või käsufailina (-fkfailinimi). -n - mitte väljastada ridu vaikimisi (s.t. väljastada ainult need read, mille jaoks antakse print-käsk. Redigeerimiskäsud on üldkujul: [ aadress1 [ , aadress2 ] ] käsk [ parameetrid ] Aadressidel lubatud kujud: arv - rida nr. arv (märgita kümnendarv) $ - sisendi viimane rida /regexp/- KÕIK read, mis rahuldavad regulaarset avaldist regexp Aadresside puudumisel võetakse kõik read, ühe aadressi olemasolul võetakse need read, mis sellele aadressile vastavad. !käsk tähendab käsu rakendamist neile ridadele, mida aadress(id) välja EI vali. Käskudeks on (alamhulk siin): d - delete, mitte väljastada valitud ridu ning alustada järgmise reaga käskude täitmist otsast peale n - next, väljastada valitud read (-n lipu korral mitte) ning valida järgmine rida. -n lipu korral jäetakse valitud read vahele ja käskude täitmine jätkub p - print, väljastada valitud read -n lipust hoolimata (kui -n lippu pole, tulevad valitud read kahekordselt) w failinimi - write, valitud read väljastatakse faili (lisatakse, kui samas sed-programmis on mitu write-käsku) r failinimi - read, fail loetakse valitud rea lõppu (üks rida valida), s.t. faili sisu väljastatakse enne järgmise rea lugemist a\ - append, teksti lisamine. Tekst antakse ette vahetult käsufailis ja loetakse valitud (ühe) rea lõppu. Väljastatakse igal juhul (-n lipust hoolimata). Näit. 2 a\ See tekst laheb\ teise rea jarele i\ - insert, nagu append, aga tekst lisatakse valitud rea ette c\ - change, valitud read kustutatakse ja väljastatakse etteantud tekst s - substitute, sarnane redaktoriga ed: [a1[,a2]] s/regexp/asendus/[g][p][w failinimi] g - global, asendada valitud ridades kõik regexp esinemised (vaikimisi ainult esimene igas valitud reas) p - print, väljastada (-n lipust hoolimata) kõik read, milles asendus tehti (kui mitu asendust, siis mitu eksemplari) w - write, nagu p, ainult väljastatakse etteantud nimega faili Ampersand asendusstringis tähendab seda alamstringi, mis rahuldab antud regulaarset avaldist. Näit. echo 'ma"a"rus' | sed 's/a"/\\"a/g' annab Tex-stiilis tulemuse: m\"a\"arus who | sed 's/..:../kell &/' lisab sõna `kell', kui reas on kellaaaeg kujul 13:55 sed -n '/[Jj]aanus/p' aruanne* on samaväärne käsuga grep '[Jj]aanus' aruanne* Sorteerimine - sort sort [ -b] [-d] [-f] [-i] [-n] [-o failinimi] [-r] [-tc] [-u] [ +field[.char] [ -field[.char] ] ... ] [ failinimi ... ] -b mitte lugeda tühikuid ja TAB-märke järgneva välja (field) osaks -tc kasutada väljaeraldajaks märki c -d ignoreerida mittetähti/numbreid -f lugeda väiketähed suurtähtedega võrdseks -i ignoreerida sümboleid, millel puudub trükikuju -n tõlgendada sorteerimisvõtit arvuna -ofailinimi suunata väljund faili -r tagurpidi sorteerimine -u mitte väljastada korduvaid ridu Sorteeritav(ad) fail(id) antakse ette failinime(de)ga, vaikimisi standardsisend Vaikimisi sorteeritakse ridu tekstina, võttes sorteerimisvõtmeks terve rea. Sorteerimisvõtme(d) saab ette anda väljavahemike loeteluna (kui vahemiku lõpp puudub, siis loetakse lõpuks rea lõppu). Lippe saab eraldi anda iga vahemiku jaoks (oluline n- ja f-lippudele) Väljade loetelu algab nullist. Võti võib alata etteantud sümbolist väljal (vaikimisi null). Näit.+0 -1 +4 primaarne võti on esimene väli, sekundaarne viiendast väljast lõpuni Näide. Tegeliku sõnastiku sorteerimine: sort -u +0f -1 +0 -1 sonastik Näide. /etc/passwd järjestamine kasutajate ID järgi sort -t: -n +2 -3 /etc/passwd Käsud head, tail, diff { head | tail } [ {+|-} arv [b|c|l] ] [ failinimi ] Väljastada etteantud arv (vaikimisi 10) blokke (b), sümboleid (c) või ridu (l) (vaikimisi ridu) etteantud faili (puudumisel standardsisendi) algusest (head) või lõpust (tail). diff [-e] [...] failinimi1 failinimi2 Kui failinime kohal on miinusmärk, siis kasutatakse vastaval kohal standardsisendit. Tulemus läheb standardväljundisse. Esimese faili unikaalsed read tähistatakse märgiga < rea alguses, teise omad märgiga >. -e lipu korral luuakse ed-programm, mis teisendaks esimese faili teiseks (write ja quit tuleb ise sellele programmile lõppu lisada): diff -e fail1 fail2 > muutus echo w >> muutus; echo q >> muutus cp fail1 tulemus; ed tulemus < muutus tulemus on sama, mis fail2 - seega piisab lähtefaili ja muutus(t)e alleshoidmisest. Käsud cmp, comm, uniq cmp [-s] failinimi1 failinimi2 Failide võrdlemine. Miinusmärk=stdin -s lipuga ainult lõpetuskood (0 - võrdsed, 1 - erinevad, 2 - viga) comm [ - {1|2|3|12|13|23} ] fnimi1 fnimi2 Lähtefailid peavad olema sorteeritud. Tulemus väljastatakse (stdout) 3 tulbas: esimese faili unikaalsed read, teise faili unikaalsed read ja ühised read. Lippudega võib keelata vastava tulba väljastamise (näit. -12 ainult ühised read) uniq [ -{c|d|u} ] [-field] [+char] [sisendfail] [väljundfail] Eemaldab (sorteeritud failist) järjestikused "võrdsed" read ( 1 eks. jäetakse). Võrdlemist võib alustada etteantud väljast ning etteantud sümbolist (numeratsioon algab nullist). -u korduvatest ei jäeta ühtegi eksemplari -d näidatakse ainult korduvaid (üks eks.) -c iga rea ette väljastatakse korduste arv. Käsud join, split, wc, tr join [ -tc -j fnr väli ...] failinimi1 failinimi2 Sorteeritud failide ühendamine standardväljundisse ridade kaupa. Ühendamisvõtme(d) j-lipuga (fnr=1|2), väljaeraldaja t-lipuga. Failinimi1 võib olla miinusmärk (stdin). Tulemusreas kõigepealt ühendamisvõti, siis ülejäänud osa esimese faili vastavast reast, seejärel teise faili vastavast reast. split [ -l ridu | -b baite [ k | m ] ] [ failinimi [ nimi ] ] Tekstifaili tükeldamine. k - kilobaite, m - megabaite, nimi - tükinimede prefiks (vaikimisi failinimi). Tükinimede lõppu aa, ab, ..., zz (hiljem saab kokku panna cat nimi* > ... ) wc [ -clw ] failinimi ... Ridade, sõnade ja baitide arv faili(de)s. Näit. who | wc -l tr [ -ds ] string1 string2 Teisendada standardsisend standardväljundiks, asendades string1 sümbolid vastavate string2 sümbolitega -d - kustutada string1 sümbolid -s - ühendada korduvad string2 sümbolid Näit. tr "[A-Z][a-z]" "[a-z][A-Z]" vahetab suur- ja väiketähed. Tekstitöötluse keel awk A.Aho, B.Kernighan, P.Weinberger. The AWK Programming Language. Addison-Wesley, 1988, 210 pp. awk -f programminimi [ failinimi ... ] awk 'programm' [ failinimi ... ] Teksti(de) töötlemine etteantud programmi järgi (tulemus stdout). Programm koosneb ridadest kujul: näidis { tegevus } Näidise järgi valitakse read, mida töödelda (vaikimisi kõik read). Vaikimisi tegevuseks on kirjutamine standardväljundisse. Töötluse välimine tsükkel käib üle töödeldavate ridade, sisemine üle näidiste. /regulaaravaldis/ - valib avaldist rahuldavad read muutuja ~ /regulaaravaldis/ - muutuja või kirjeväli rahuldab avaldist ( !~ EI rahulda) Tehtemärgid: < <= == != >= > || && Vahemik komaga, BEGIN- ja END-näidised Tegevused kasutavad valitud ridade (kirjete) välju ( $1 $2 ... ) ning muutujaid. Olulisemad muutujad: NR - töödeldava kirje number , number $0 - töödeldav kirje tervikuna NF - väljade arv töödeldavas kirjes, number of fields $1 $2 ... - töödeldava kirje väljad FS - sisendväljade eraldaja (tühik, TAB), field separator OFS - väljundväljade eraldaja (tühik), output field separator RS - sisendkirjete eraldaja (reavahetus), record separator ORS - väljundkirjete eraldaja (reavahetus), output record separator FILENAME - töödeldava sisendfaili nimi Tehete ( * / % + - = ++ -- += -= *= /= %= jne) ja funktsioonide abil saab moodustada avaldisi. length (str) - funktsioon sümbolite arvu leidmiseks stringis, ilma argumendita töödeldava kirje sümbolite arv print on käsk väärtuse väljastamiseks, printf lubab täpsustada ka formaati. Juhtimiskonstruktsioonid (if, for, while ...) olemas, samuti massiivid jpm. - AWK on täiemahuline programmeerimiskeel. Näiteid Vahemiku konstrueerimine: awk `$2 >= 100 && $2 < 300' andmed Pikkade ridade numbrite väljastamine: awk `length > 79 { print NR}' tekst Summa ja keskmine $1 järgi: BEGIN {s = 0} { s += $1 } END { print "summa ", s, " keskm", s/NR } Väljade järjekorra tagurpidi keeramine: { for (i = NF; i > 0; --i) print $i } Vaba UID otsimine /etc/passwd failist. Väljaeraldaja on koolon ja UID on kolmas väli (arvuline töötlus): BEGIN { FS = ":" vaba = 0} $3 > vaba { vaba = $3 } END { print "Vaba UID on ",vaba+1} awk -f aprog /etc/passwd Tekstioimetid ed - standardne, praktiliselt ebamugav, eesmärgiks rohkem mitteinteraktiivne töö vi - BSD päritolu, standardne, harjumise korral kasutatav, töökindel ka aeglastel liinidel emacs - R Stallman MIT, GNU projekt. Suhteliselt standardne, ääretult võimas ning seetõttu alguses raskem kasutada. Avatud ja programmeeritav. fpted, joe, pico, ... - mittestandardsed, "parimad", igameheredaktorid. Probleemid: ei ole igas keskkonnas kasutatavad, te ei leia neid igast masinast, probleeme aeglaste liinidega ... X-keskkonnas omad vahendid, Solarises omad. Igaüks võib tekstid teha oma lemmiktoimeti abil, aga peaks tundma vi-d ja omama mingit ettekujutust emacs-i võimalustest. Toimeti vi Olekud vi käsureziim (ühesümbolilised käsud) vi sisestusreziim (teksti sisestamiseks) ex reziim (nn. koolon-käsud) Koolon-käske (töötavad ka paljud ed käsud): :e failinimi lugeda fail puhvrisse (ei lisa!) :e! tühistada kõik tehtud muutused :r failinimi lugeda fail jooksva rea järele :f anda info käsiloleva faili ja rea kohta :vi minna tagasi vi käsureziimi :w [ failinimi ] kirjutada tulemus faili :w! failinimi kirjutada olemasolev fail üle :q väljumine :x väljumine salvestamisega :q! väljumine salvestamiseta vi käske: Kursori liigutamine: l ( ka nool paremale) - 1 pos. paremale h ( vasakule) - vasakule k ( üles) - 1 rida üles j ( alla) - alla ctrl-u - pool ekraani üles, ctrl-b - terve ctrl-d - pool ekraani alla, ctrl-f - terve [ n ] g - reale n (ilma n-ta puhvri lõppu) /regexp - otsimine jooksvast reast alla ?regexp - üles n - viimase otsimise kordamine Teksti sisestamine (lõpetab Esc): a - alustada sisestamist kursori järele i - ette o - alustada uue reaga kursorist allpool O - ülalpool A - alustada sisestamist jooksva rea lõppu R - siseneda ülekirjutamisreziimi rc - asendada kursori all olev märk märgiga c x - kustutada kursori all olev märk dd - kustutada kursori all olev rida dw - kustutada sõna u - undo, tühistada viimane parandus ZZ - väljuda redaktorist, salvestades puhvri sisu jooksvasse faili Käskude x dd ... ette võib kirjutada korduste arvu ex-reziimis töötab asendus :%s/regexp/asendus/g (siin: % - kogu failis, /g - kõik esinemised) Lipp -R avab faili read-only reziimis. Paljud võimalused jäid vaatlemata (järjehoidjad, liikumised sõnade, lausete, sulgude jms. järgi, change-käsk, shelli käivitamine, faili taastamine eriolukorra tekkimisel jm.) - nende võimaluste olemasolu tasub teada, konkreetset abi otsida oma süsteemi dokumentatsioonist. Teksti formaatijad nroff - teksti formaatija terminaali, printeri vm. madalgraafikaseadme jaoks, groff troff - teksti formaatija laserprinteri vm. kõrggraafikaseadme jaoks tex (latex) - D.Knuthi universaalne (matemaatilise) teksti formaatija nroff ja troff jaoks on välja töötatud makropaketid eri stiilide jaoks - mm, man, .. ning preprotsessorid - tbl, eqn ... Teksti formaatijad saavad sisendiks ASCII teksti, milles on lisaks laustekstile formaatimiskäsud, mis võimaldavad näiteks valida kirja tüüpi ja suurust, määrata ridade ja lõikude paigutust, poolituskohti, genereerida pealkirju, allmärkusi, leheküljenumbreid, loetelusid, teha valemeid ja tabeleid, jne. Tulemuseks on seadmest sõltumatu vormistus (nii hea, kui seade lubab). Näide. man-lehekülgede vormistamine nroff -man /usr/man/man1/ls.1 | more troff -a -man /usr/man/man1/gzip.1 | more Suhtlemiskäsud Unix-süsteemide standardsed võimalused (ei ole otseselt seotud Internetiga) + mail (mailx) - kirjade saatmine/lugemine + talk - interaktiivne vestlus teise kasutajaga + write - sõnumi saatmine terminaalile, wall + mesg - sõnumite/vestluse lubamine ja keelamine + who - kes on masinas (w - mida teeb) Elektronpost Internetis on omaette teema, kuid Unix lubabkirju saata ka lokaalselt. E-posti võib saata programselt kasutades Unixi mail-käsku. mail Saabunud kirjade lugemine: mail [ -N ] [ -f [ kaustanimi ] ] -N mitte näidata kirjade päiseid -f kaustanimi - lugeda vanu (kausta pandud) kirju. Vaikimisi kaustaks ~/mbox . Ilma -f liputa loetakse uued saabunud kirjad. Kirja saatmine (saaja - kasutajanimi või Interneti aadress, võib olla mitu): mail [ -s subject ] saaja ... [ < failinimi ] -s subject - üks rida teksti (teema, millest kiri tuleb) Kirja sisu vaikimisi standardsisendist. Kui saadetav kiri ei tule standardsisendist, siis kasutame programmi interaktiivselt. &-viiba käske: ? - help number - jooksva kirja määramine q - quit, salvestada kirjad kausta mbox x - exit, jätta kirjad alles uute kirjadena d - delete, kustutada jooksev kiri m saaja - mail, saata kiri s [ kaustanimi ] - save, salvestada kausta r - reply, vastata jooksvale kirjale p - print, kuvada jooksev kiri ~-viiba käske (kirja sisestamise ajal): ~? - help ~e - edit, kasutada kirjutamiseks redaktorit ~r failinimi - read, lugeda fail ~h - header, päisatribuutide määramine ~m [ number ] - message, lugeda määratud kiri kirjutatava kirja sisse (taandega) Kirja sisestamise lõpetab punkt eraldi real. talk talk aadress [ seadmenimi ] Aadress on kasutajanimi (samas masinas) või Interneti aadress (ei pruugi alati õnnestuda!) kujul kasutaja@masinanimi Seadmenimi on vajalik, kui kutsutaval on käimas mitu seanssi (vt. who-käsuga) Vestluse lõpetamiseks ctrl-C. write write kasutajanimi [ seadmenimi ] Teate saatmine kasutaja terminaalile. Teate tekst standardsisendist (interaktiivsel sisestusel lõputunnuseks ctrl-D) mesg mesg { y | n } - write- ja talk-teadete lubamine (y) või keelamine (n) Netiketireeglid suhtlemiskäskude kasutamisel: Ilma tungiva vajaduse või eelneva kokkuleppeta mitte kutsuda vestlusele, parem saata kiri - kiirus on enamasti sama. Mitte kasutada write-käsku, eriti algajatele, kes ei taipa veel mesg n seada.