Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimused: faili nimi faili vanus faili tüüp... 1
Failiotsing: find tingimuste kombineerimine -tingimus -tingimus: konjunktsioon -tingimus -o -tingimus: disjunktsioon \(-tingimus -o -tingimus\): grupeerimine!\(-tingimus\): eitus arvuliste parameetrite tõlgendus: -n: vähem kui n +n: rohkem kui n n: täpselt n 2
Failiotsing: find enimkasutatavad tingimused: -name 'nime_mall' failinimi vastab mallile -print eelnenud tingimustele vastava failinime väljastamine -type [fdbc... ] faili tüüp -perm NNN õigused 3
Failiotsing: find -user nimi omanik -size arv suurus -mtime arv viimase muutmise aeg (päevades) -exec käsk \; täita käsk, {} asendatakse käsus jooksva faili nimega -ok käsk \; täita käsk loa küsimisega 4
Infokäsud date - kuupäev ja kellaaeg date '+formaat' date '+kuupäev: %D kell: %H:%M:%S' cal 5
Infokäsud finger finger @hostname.dom who w last last kasutajanimi last reboot 6
Käsureaintepretaator: skriptimine shelli käskudest saab moodustada programme (skripte) enamasti salvestatakse skript faili süntaksierinevused skriptimise ja interaktiivse kasutamise vahel on väga väikesed kasutusalad: perioodilised toimingud süsteemihaldusskriptid prototüüpimine 7
Päis, käivitamine skriptifaili päis näitab, mis on interpretaatoriks #!/bin/sh või #!/bin/bash intepretaator võib UNIX seisukohalt olla suvaline programm käsureaskriptide kokkuleppeline laiend.sh käivitamiseks vajalik käivitamisõigus: chmod 700 skriptifail.sh 8
Päis, käivitamine käivitamiseks:./skriptifail.sh või /bin/bash skriptifail.sh (ei arvestata päist) 9
Käivitamine Näide 1 #!/bin/sh echo "Esimene skript!!" 10
Muutujad vaid üks tüüp: sõne väärtustamine MUUTUJA=väärtus kasutamine echo $MUUTUJA echo ${MUUTUJA} defineerimata muutuja = tühi sõne 11
Muutujad lokaalsed muutujad keskkonnamuutujad päritakse alamprotsesside poolt muutuja lisamine keskkonda: export MUUTUJA muutuja tühistamine unset MUUTUJA 12
Muutujad erilised, eeldefineeritud muutujad: $1..$9 - käsureal antud parameetrid käsk shift nihutab neid $0 - välja kutsutud skripti nimi $@, $* - käsureaparameetrid koos $# - käsureaparameetrite arv $? - viimati käivitatud alamprotsessi tagastusväärtus $$ - skripti protsessi number 13
Muutujad Näide 2 14
Muutujad võimalik kasutada erinevaid konstruktsioone: ${MUUT:-avaldis} kui $MUUT on olemas ja pole tühi, asendatakse muutuja väärtusega, vastasel juhul avaldisega ${MUUT:=avaldis} käitub nagu eelnev, lisaks saab $MUUT oma väärtuseks avaldise väärtuse 15
Muutujad ${MUUT:?[avaldis]} kui $MUUT on olemas ja pole tühi, asendatakse muutuja väärtusega, vastasel juhul väljastatakse avaldis veaväljundisse ja lõpetatakse töö ${MUUT:+avaldis} kui $MUUT on olemas ja pole tühi, asendatakse tühja stringiga, vastasel juhul avaldisega ${#MUUT} $MUUT pikkus 16
Kontrollvood: if if tingimus ; then käsud [elif tingimus ; then käsud]... [else käsud] fi tingimuseks saab olla vaid käsk! 17
Kontrollvood: while while tingimus; do käsud done tingimuseks saab olla vaid käsk break - välju kordusest continue - jätka järgmise korduse algusest 18
Kontrollvood: for for muutuja in list; do käsud done break continue for (( av1 ; av2 ; av3 )) ; do done käsud 19
Kontrollvood: case case avaldis in mall) mall2)... esac käsud ;; käsud ;; 20
Kontrollvood Näide 3, Näide 4 21
Muud konstruktsioonid {käsud;} - käsublokk (käsud;) - käsublokk alamprotsessina : - tühi käsk.failinimi - välise skriptifaili lisamine jooksvasse skripti käsk1 && käsk2 - käsk2 käivitatakse vaid siis, kui käsk1 tagastab tõese tagastusväärtuse (0) 22
Muud konstruktsioonid käsk1 käsk2 - käsk2 käivitatakse vaid siis, kui käsk1 tagastab väära (0 erineva) tagastusväärtuse `käsk` - asendatakse käsu väljundiga ((aritmeetiline avaldis)) arvutatakse aritmeetiline avaldis (bash laiendus) 23
Kasulikke käske test, [ ], [[ ]] (bash laiendus) [ muutuja > string ] [ muutuja -gt arv ] arvude võrdlemiseks: lt, le, gt, ge, eq Näide 5 basename dirname 24
Funktsioonid defineerimine: funktsiooninimi () { käsud } väljakutse: funktsiooninimi param1 param2... käitub sarnaselt iseseisva skriptiga ei luua eraldi protsessi 25
Silumine silumisvõimalused on kesised #!/bin/sh -x sõlmpunktides käsu echo kasutamine sh -n : süntaksi kontroll 26
Soovitusi hinda ülesannet adekvaatselt raskema ülesande jaoks: Python, Perl muud, (veel) kõrgema taseme keeled... tekstitöötlemiseks AWK lihtne, järjestikune struktuur, vähe kordusi ära liialda funktsioonidega algväärtusta 27
Käsureaparameetrid võtmed muud parameetrid (failinimed jms) > minukäsk -v -i sisend -o väljund käsureaparameetrite ülesandeid: skripti käitumise muutmine skripti käitumise täpsustamine sisendfaili (sisendvoo) määramine väljundaili (väljundvoo) määramine konfiguratsioonifaili määramine 28
Käsureaparameetrid levinud stiilivead: kasutatakse parameetrite asemel interaktiivset sisendit kasutatakse parameetrite asemel keskkonnamuutujaid võtmeid ei saa koos anda (-a -b vs -ab) eritüübilised parameetrid on süntaktiliselt eristamata, neid eristatakse järjekorra järgi ei ole arvestatud võimalusega, et parameetrina kasutatakse malle (shell võib need asendada mitme parameetriga) 29
Käsureaparameetrid $0 - käivitatud skripti nimi $1.. $9 9 esimest parameetrit $# - järelejäänud parameetrite arv käsk shift nihutab parameetreid kasutaja poolt antud parameetrite arv ei ole kuidagi fikseeritav kasuta while kordust ($# väärtuse järgi) kasuta shifti, ära loe parameetreid otse 30
Käsureaparameetrid Näide 6 #!/bin/sh while [ $# -gt 0 ] do echo "$1" shift done 31
Käsureaparameetrid vastavalt võtmetele väärtusta nn. lippmuutujad, mida hiljem kasutatakse case konstruktsioon arvestada tuleb ka vigaste, väärade parameetritega Näide 7 32
Käsureaparameetrid muud parameetrid, mis kuuluvad eelneva võtmega kokku käsk -i sisendfail muud parameetrid, mis on iseseisvad enamasti pärast eelnevaid võtmeid käsk -c konfiguratsioonifail fail1 fail2 fail3... 33
Käsureaparameetrid Näide 8 34
Käsureaparameetrid: getopt eraldi käsk elementaarsete parameetrioperatsioonide jaoks tööpõhimõtted: on üksikud parameetrid on kaksik-parameetrid (võti+failinimi) parameetreid võib olla võimalik kombineerida lubatud on vaid kirjeldatud parameetrid 35
Käsureaparameetrid Näide 9 36
Käsureaparameetrid: getopts uuemates interpretaatorites sisekäsk parandatud mõningad getopt vead Näide 10 37
Käsureaparameetrid: kokkuvõte lippude kombineerimine mallidega arvestamine ühetähelised ja mitmetähelised võtmed -h, --help võtmed selge ja konkreetne käsureasüntaks 38