märts 29, 2015

Ikka need vi, perl ja regex (UNIX huvilistele)














Noh, jah.
See kole pilt peaks kujutama ühte koleda editori vi hingeelu ning sellest vanamoodsusest ei pääse üle ükski UNIX-iga tõsisemalt kokkupuutunud isik, sest varem või hiljem kohtab ta süsteemi, kus EI OLE teisi võimalusi tekstide muutmiseks, kui ikka see vana vi.
Näiteks kastid, mis ise ei ole arvutid, vaid spetsialiseerunud mingitele muudele toimingutele, aga mille peal jookseb Linux.
Mingit kaablit mööda olete sinna sisse loginud terminali aknasse (ja muid aknaid ei pruugi kast osata joonestadagi) ja mälu / ketta kokkuhoiu mõttes ei ole seal mitte pandud käima muid asju, peale Linuxi-i, /UNIX-i minimaalse standardvarustuse.
Probleem vi-ga on aga enamasti selles, et see natukene erineb meie "tänapäevastest" tavalistest editoridest. Et saada vi midagi tegema, tuleb saada ta Input Mode-sse, sealt, et tulemusi salvestada, jälle Command Mode-sse ja nii edasi....natuke tüütu tänapäeva editoride keskkonnas ärahellitatud tüüpidele ....
Soovitan ühel hetkel Linux-iga tegelemise käigus see vi siiski ette võtta ja sõrmede sisse harjutada. Ei olegi nii kole, nagu algul tundus. Ehk võib seda isegi nimetada natukene eksootiliseks. Linuxi-Unixi paradoks on ju selles, et need asjad tõesti on KOLE VANAD... ja endiselt toimivad, erinevalt näiteks DOS-st ...
Minu häda on olnud selles, et alati leidub ju kõrvaltee, näiteks emacs, gedit ja mõni muu natukene mugavam editor. (Aga tegelikult neil EI OLE suuremat vahet ka vi-ga). Nüüd aga ei pääsenud ma kuhugi. Kui teil on Linux-iga tõsi taga, ei pääse ka teie mitte kuhugi. Õppige teiste kogemustest!
Te ei pääse kuhugi ka dinosaurusest nimega Bourne shell, mis oma Linux reinkarnatsioonis on saanud nimetuse bash (Bourne again shell) ja natukene võiksite osata seal kirjutada shelli (kesta) skripte.
Minu arvates (ka eelmises Linux kirjutises tõin selle lingi) on selleks kõige sobivam algus
sait
http://linuxcommand.org/
Linuxi (aga ka muude programmeerimise alaste tekstide osas) ei ole väga palju väga hästi läbimõeldud tekste võtta. See siin on,
Kui te olete juba proff, võiksite kohe proovida
Advanced Bash Scripting Guide
peal toodud skripte.
Kuid milleks see kõik, kui te ei tea, milleks seda kõike vaja on? Praeguse kogemuse põhjal ma soovitan alustuseks kahte teost. Esimene meeldib mulle kõige rohkem:
1) Linux Fundamentals, Paul Cobbaut
Kui saate hakkama, võite piirduda alguseks just selle teosega. Jälle mulle meeldib läbimõeldus ja loogilisus.
2) Abiks või täienduseks sobib aga
Introduction to Linux Tille Garrels
ning ikkagi Linux man leheküljed iseseisvaks uurimiseks ja katsetamiseks. Mõnikord (üsna sageli) leiab mõne probleems kohe kohta midagi StackOverflow-st ...

Paul Cobbaut on kirjutanud ka natukene kobedama raamatu administraatoritele. See võiks olla järgmine aste või koht enesetäienduseks:
3) Linux system adminitration Palu Cobbaut

See kõik on kindlasti kasutu, kui teil ei ole silme ees mõnda installeeritud Linuxi versiooni ja vähemalt 40% ajast ei ole pühendanud iseseisvatele tegevustele Linux-iga.

Aga nüüd jõuame järgmiste loodusõnnetuste juurde nimetustega regex ja perl.
Olen nimelt jõudnud pisut lohutule järeldusele, et ka nendest ei ole pääsu.
Praktiliselt võib nendega tegelemise pisut edasi lükata, aga ühel ilusal hetkel saab villand natukene krüptilistest pöördumistest grep / sed  poole või koguni viidetest perl-le endale.
Ja siin praegu olen leidnud ühe (kahjuks liiga pika, aga mis parata) teose Mastering Regular Expressions
Laadige alla, lugege läbi, kui leiate aega, kui ei leia, alustage algusest ja võib juhtuda, et mõnest esimeseest ptk-st on küll praktilises mõttes, aga teoreetiliseks harimiseks võiks kogu teose läbi uurida ja teoreetilisest arvutiteadusest veel lisa võtta. Boonusena tekib huvi perl vastu ja nii võib ka see omapärane keel selgeks saada. Mina veel niikaugel ei ole, aga huvi juba on.
Perl on iga Unixi standardvarustuses tänapäeval olemas.

Kes nüüd kohe seda tegema ei hakka, sellele selgituseks:
Tuntud ls *.txt ja fai?.txt otsingusümbolite laienduseks võib pidada regulaarseid avaldisi.
Praktiliselt saab nendega üsna palju põnevaid tekstiotsinguid ja asendusi sooritada.
Arvutiasjanduses on regex nii sees, et ei ole leida vist enam ühtegi programeerimiskeelt, mis seda asjandust ei toetaks. Ja ei ole vist kuidagi võimalik jõuda IT-s ütleme baka tiitlini, et ei oskaks neid avaldisi ise kokku kompileerida.
Esimesel pilgul on tegemist üsna krüptiliste sümboljadadega ja see lisab ainult uhkust juurde, kui oskad ise ka sarnase ütleme kuupäevade teisendamiseks /URL testimiseks / meiliaadresside kontrolliks / kokku panna.
Teine boonus on hea sissejuhatus automaatide teooriasse, kust jälle saaks edasi minna kompilaatorite teooria juurde, mille esimene osa on programmeerimisteksti uurimine ja sealt igat sorti komavigade leidmine. Veel kutsutakse seda leksikaalseks analüüsiks ...
Mis võiks olla järgmised astmed Linuxi uurimisel? Tõenäoliselt sõltub see siin, pärast aabitsaetapi läbimist, juba konkreetsetest eesmärkidest.

Kui kõige muuga tegelemisest aega üle jääb, püüan teid ka oma Linux tegemistega aeg-ajalt kursis hoida. ...