PR1ET12: Linux ja käsurida

Labori materjal

Käskude abi

Kui soovid abi mõne käsu kohta, siis selleks on sul 3 peamist meetodit.  Kolmas ja mõneti kõige aeglasem on internetist otsimine, seega seda me siin ei kajasta. Ülejäänud 2 infoallikat on aga kättesaadavad otse käsurealt.

tldr (simplified community-driven man pages)

See on Linuxi kasutajate poolt kokku pandud “käsiraamat”, mille eesmärk on kiiresti ja lihtsalt kirjeldada iga programmi kõige levinumad ja olulisemad kasutusviisid. Seetõttu on aga puudujäägiks sageli vajaliku detailsuse või selgituste puudumine.

Vaikimisi seda Linuxitega kaasa ei tule aga oleme selle tööriista laboriarvutitesse paigaldanud.

Kasutamiseks kirjuta käsureal tdlr käsu_nimi

Alternatiiv: kasuta veebist https://tldr.sh

Näiteks lugemaks kuidas faile kopeerida kirjuta tldr cp

man pages

man ehk manual pages on Linuxiga kaasa tulev manuaal. Siin on olemas manuaalid käskudele, teekidele, süsteemi käskudele jne. Enamasti on iga programmi manuaalis kirjeldatud kogu tema funktsionaalsus. Kasutamiseks kirjuta man käsu_nimi

Näiteks lugemaks kuidas faile kopeerida kirjuta man cp

Manuaali sulgemiseks kasuta klahvi q . Manuaalist otsimiseks sisesta /  ning seejärel mida otsida soovid. Abi teiste käskude näed kui vajutad h  klahvi.

man  eelis tldr  ees on põhjalikkus – üldiselt on selgitused väga detailsed ning mõeldud kogenud kasutajale (professionaalile). Sageli on need algajale liialt mahukad.

Esitamisele kuuluvad ülesanded

Selles laboris on kaks ülesannet, millest mõlemat lõppevad lõppevad veebivormiga, mis tuleb täita ja esitada! Eraldi ülesande lahendusi ette näitama ei pea.

Ülesanne 1: käsurea kasutamine

Selle ülesande raames tutvume väga põgusalt käsurea kasutamisega. Ülesanne lõppeb veebivormiga, mis tuleb täita. Veebivormi esitamine kinnitab ülesande lahendamist.

Kasutatavad terminid:

Käsuviip – Käsurea alguses olev informatsioon näitamaks ära kasutajanime ja asukohta failisüsteemis.

Käsurida / käsuaken / terminal – Programm, kus me oma käske jooksutame, nn terminal. Sisaldab käskude ajalugu, käsuviipa, võimalust käsku sisestada jms.

Vali viis ülesande lahendamiseks

Enne kui ülesande juurde saad minna oleks vaja meil Linux keskkonda ja käsuakent. Valikud pakun välja neli.

  1. Lahenda ülesande kooliarvutis.
  2. Lahenda ülesanne üle kaughalduse
    Juhend: RDP abil kaugligipääs
  3. Lahenda ülesanne luues SSH tunnel kooliarvutisse ning tehes kõik üle tunneli
    Juhend: SSH ühenduse loomine
Ülesande lahendamine

Ülesanne on kirjeldatud samm-sammulise töövoona. Kõik tegevused tuleb lahendada kasutades käsurida. Ülesande lõpus tuleb sul esitada oma käskude ajalugu!

Samm 1: Vali kaust kus labori faile hoiad

Esmalt peaksid otsustama kuhu paned selle labori jaoks vajalikud failid. Tõenäoliselt võiks see olla midagi sarnast nagu  ~/P/iax0583/labor11 .

Järgnevad käsud aitavad sind nagiveerimisel ja kausta loomisel:

  • Käsk pwd  näitab kus kaustas hetkel asud
  • Käsk cd  võimaldab kaustade vahel liikuda
  • Käsk mkdir  abil saad luua uue kausta
  • Käsk ls  näitab mis praeguse kausta sees asub. kasuta täiendavaid argumente detailide nägemiseks.
  • Käsk mv  lubab kaustasid ja faile ümber nimetada ja liigutada.
  • Kasuta tldr käsk  või man käsk , et näha abi käsu kasutamise kohta.

Liigu käsureaga kausta, kus ülejäänud labori teha kavatsed!

Samm 2: Lae alla testprogramm

Labori kulgemist jälgib testprogramm. Programm on kokku pakitud kujul.

Failide allalaadimiseks kasutatakse tööriista nimega wget . lae seda kasutades testprogramm alla. Selleks käivita järgnev käsk:

Samm 3: Paki testprogramm lahti ja käivita see

Tegu kokku pakitud zip arhiiviga. Kasuta programmi   unzip selle lahti pakkimiseks. Jälgi hoolikalt arhiivi lahti pakkimise käigus tekkivat väljundit. See on oluline, et teaksid mis lahti pakiti ja kuhu! Soovitavalt tee topeltkontroll kasutades ls -i, et veenduda selles.

Võimalik, et pead ka programmi käivitatavaks muutma

Mõnel juhul võib osutuda, et programmi ei pakitud lahti käivitusõigustega. Kui see nii juhtus (kontrolli esmalt), tuleb käivitusõigus lisada.  Selleks saad kasutada käsku chmod .

Käivita testprogramm

Nüüdsest on sul võimalik testprogrammi käivitada. Tee seda kohe – pane käima alla laetud programm!

Programm kontrollib labori kulgemist ja jääb seisma kohe kui märkab täitmata nõuet. Edaspidi jooksuta testprogrammi iga kord kui oled järgneva sammu ära teinud.

Praegu peaksid nägema järgmist väljundit:

Samm 4: Lae alla Vimi seadefaili

NB! Kui oled juba Vim-i kasutaja ning omad kodukataloogis seadefaili, jäta see samm vahele!

Vim on üks klassikalistest käsureal töötavatest tekstiredaktoritest. Sel on suur kogus erinevaid laiendusi ja seadistusvõimalusi võrreldes primitiivsete tekstiredaktoritega nagu nt nano.

Laeme alla seadefaili, mis teeb selles koodi redigeerimist veidi mugavamaks – nt lisab koodi värvimise, automaatse tabuleerimise jne. Vim’i seadefail tuleb laadida enda kasutaja kodukataloogi – sealt otsib vim seda automaatselt.

1. Mine käsuaknas oma kodukataloogi. Selleks kasuta käsku cd . Kodukataloogi sümboliks on ~ .

2. Kasuta programmi  wget  seadefaili allalaadimiseks. Seadefail asub aadressil  blue.pri.ee/.vimrc

Kasuta testprogrammi kontrollimaks, et seadefaili allalaadimine õnnestus!

Samm 5: Kopeeri üle andmefail, mis sisaldab saladust

Mine M kettale (~/M/). Leia sealt üles oma praktikumi juhendaja kaust ja mine sinna sisse. Selle kausta sees on üks peidetud alamkaust – otsi see üles ja mine sinna sisse. Peidetud alamkausta nimi algab punktiga. Peidetud kausta seest leiadki puuduoleva faili.

Nüüd tuleb sul see fail endale kopeerida. Kopeeri see samasse kausta kus asub su testprogramm! Kopeerimiseks pead kasutama käsku  cp . Määra ära mida soovid kopeerida ja kuhu!

Nüüd on aeg jälle testprogramm käivitada ja vaadata kas saladus leiti.

Samm 6: Järgmiseks pead looma tekstifaili oma matriklinumbriga

Loodava faili nimeks on matricula . See loo samasse kausta kus on ülejäänud failid.  Selleks pakun välja 2 võimalust.

1. võimalus: Ava endale meelepärane tekstiredaktor, loo seda kasutades antud fail ning kirjuta sisse oma matriklinumber.

Vim-i juhis:

    • Käivita programm kirjutades  vim matricula . See käivitab Vim-i ja avab (vajadusel loob) sealjuures faili nimega matricula.
    • Vajuta klahvi ’i’, et minna sisestamise režiimi (insert mode).
    • Nüüd kirjuta sisse oma matriklinumber.
    • Seejärel vajuta klahvi ‘esc’, et tühistada kirjutamisrežiim.
    • Nüüd kirjuta seal aknas  :wq . w ütleb Vim’ile, et muudatused tuleb faili kirjutada ja q ütleb, et seejärel tuleb programm sulgeda. Neid saab ka eraldi kasutada.

2. võimalus: See on see, mida enamik ninapidi asjas olevad inimesed tegelikult teeksid sellise lühikese faili kirjutamiseks. Kasutusele võetaks käsk echo, mis kuvab sellele antud teksti terminaliekraanile tagasi. Echo väljundvoog (stdout) aga suunataks ümber faili, mille tulemusena vajaminev fail valmis kirjutatakse – nt echo "tekst" > fail

Samm 7: Kirjuta programm, mis väljastab “Hello  world!”

NB! Enne selle sammu teostamist meenuta mis asi on faili laiend (file extension) ning mis laiendeid kasutatakse C-programmeerimiskeele lähtekoodi failidel ning millist programmidel Linuxi keskkonnas.

Taaskord, kasuta koodi loomiseks käsurea tekstiredaktorit. Meie soovitame Vim i kuna see toetab C koodi aga sa võid kasutada ka mõnda teist tekstiredaktorit.

Kui sul on programmi kood kirjutatud, tuleb see kompileerida (meenuta, mis meie kompilaatori programmi nimi oli!). Kasuta kompilaatorile lipuna -o hello , et määrata väljundprogrammi nimeks “hello”.

Hoiatus: Ära mingil juhul kirjuta -o järele oma lähtekoodi (.c) faili nime. Sedasi kirjutad sa oma lähtekoodi üle.

Nüüd on aeg taas jooksutada meie antud testprogrammi! Kui kõik on edukalt sooritatud, loob see sulle uue faili mille sisse on kirjutatud juhised. Jälgides neid juhiseid saad ülesande esitada.

Ülesanne 2: Andmete otsimine ja veebikodu

Selle ülesande raames tutvume tööriistaga, mida kasutatakse laialdaselt oluliste andmete otsimiseks suurematest andmekogudest ning tutvustame sulle kus asub sinu veebikodu. Lisaks vaatleme ka kuidas töötab toru ehk ühe programmi standardse väljundvoo (stdout) suunamist teise programmi standardsesse sisendvoogu (stdin).

Lähteandmed

Olen genereerinud täiesti juhuslike andmetega tekstifaili, mis võiks matkida roboti poolt tekitatud logisid. Sellised failid on loomult pikad (tavaliselt olulisemalt pikemad kui minu poolt antav) ning enamasti vajame neid vaid siis, kui midagi läheb valesti. Sellisel juhul on aga vaja paljude andmete hulgast just meile vajalik info kätte saada.

Logi asub veebikodus: http://www.tud.ttu.ee/web/Risto.Heinsar/sensors.txt

Andmete filtreerimisest

Pikkade tekstifailide filtreerimiseks on väga hõlbus abiline programm nimega grep . Sellele programmile on võimalik anda parameetrina otsitav muster ning programm kuvab ekraanile ainult need read, mis sisaldavad otsitud mustrit. Ülejäänud ridu ei näidata.

Mustrid võivad olla lihtsad – näiteks ühesõnalised nagu SENSOR , ERROR , firefox jne. Sellisel juhul käivitamegi programmi kirjutades grep muster .

Mustrid võivad olla aga ka keerulisemad – need saavad koosneda regulaaravaldistest (regular expression). Regulaaravaldiste kasutamiseks lisame käivitamisel argumendi -E . Näiteks kirjutades grep -E sensor[1-3]:  leitakse meile kõik read, mis on vastavalt kas sensor1: , sensor2:  või sensor3: . Märka, et ka koolon on otsitav.

Oma regulaaravaldisi saad testida lehel: https://regex101.com

Vihje 1: Sa võid grepi väljundi uuesti greppi saata teise mustriga – kõike ei pea ühe korraga tegema kui see tundub keeruline.

Vihje 2: grep väljundi saad väljundvoo suunamise abil hõlpsasti uude faili kirjutada.

Vihje 3: Ka loogikaavaldisi saab teha – nt üks või teine otsitav muster.

Ülesande esitamine (baas- ja lisaülesanne)
  1. Otsusta kas soovid lahendada baas- või edasijõudnute ülesande ning lahenda see
  2. Kopeeri oma fail veebikodusse ja leia selle veebiaadress
  3. Täida lahenduse kinnituseks järgmine veebivorm: https://forms.office.com/r/DcHWy2DVqk

NB! Kui sa oma veebikodu aadressi tuvastada ei suuda või tekivad tehnilised probleemid, anna meile pärast vormi täitmist märku ja näita oma faili asukohta ning aadresse mis proovisid.

Baasülesande nõuded

Sinu ülesandeks on leida üles minu antud failist kõik read, mille teabetase on viga ehk ERROR ja sensoriks on sinu matriklinumber % 10 .

Näide:

Üliõpilaskood 123456IACB, matrikkel seega 123456.
123456 % 10 on 6

Järelikult tuleb otsida kõik veaolukorrad SENSOR6 kohta. Mõned näited oodatavatest ridadest:

Ülesannet võid lahendada kirjutades kõik käsud ühele reale või tehes seda mitmes osas.

Kirjuta väljund faili, kasutades selleks väljundvoo ümbersuunamist. Loodava faili nimeks peab olema sinu üliõpilaskood.txt – näiteks kui su üliõpilaskood on 123456IACB, siis sa kirjutad tekstifaili 123456iacb.txt

Lisaülesande nõuded

Sinu ülesandeks on leida üles minu antud failist kõik read, mille teabetase on viga ehk ERROR. Ositavad read sisaldavad veateadet kas sensorilt sinu matriklinumber % 10  või mootorilt sinu matriklinumber % 4 .

Leitud read peavad jääma samasse ajalisse järjestusse nagu nad on antud sisendfailis.

Näide:

Üliõpilaskood 123456IACB, matrikkel seega 123456.
123456 % 10 on 6
123456 % 4 on 0

Järelikult tuleb otsida kõik veaolukorrad SENSOR6 või MOTOR0 kohta. Mõned näited oodatavatest ridadest:

Ülesannet võid lahendada kirjutades kõik käsud ühele reale või tehes seda mitmes osas.

Kirjuta väljund faili, kasutades selleks väljundvoo ümbersuunamist. Loodava faili nimeks peab olema sinu üliõpilaskood.txt – näiteks kui su üliõpilaskood on 123456IACB, siis sa kirjutad tekstifaili 123456iacb.txt

Veebiketta kasutamine
NB!

NB! Osadel tudengitel on veebiketas miskil põhjusel katki! Kui tundub, et teed kõik õigesti aga brauser viskab 404, siis anna meile märku ja me vaatame üle, et kõik paistab õige – kui tegid kõik õigesti, siis paneme eraldi kirja, et labori mõttes midagi katki ei jääks. Vorm ülesande täitmise kohta tuleb ikkagi täita, sisestades oletatava aadressi kus fail peaks olema.

Soovi korral võid rikketeate koostada, et su veebiketas korda tehtaks: https://helpdesk.taltech.ee

Kõigil üliõpilastel on oma veebiketas. Selleks on W ketas. Veebiketta kohta võid rohkem lugeda siit: https://taltech.atlassian.net/wiki/spaces/ITI/pages/38994529/li+pilase+veebikataloog+Online+student+directory

Kopeeri oma loodud fail sensorite väljundiga oma veebikettale. Kopeerimiseks kasutada cp  käsku.

Sinu fail on nüüd veebist kättesaadav ühel järgnevatest aadressidest:

  • http://www.tud.ttu.ee/web/uni-id/üliõpilaskood.txt
  • http://www.tud.ttu.ee/web/Eesnimi.Perenimi/üliõpilaskood.txt

Nüüd täida ära veebivorm!