UNIX operacins sistemos Simonas Kareiva 2013 m rudens

  • Slides: 34
Download presentation
UNIX operacinės sistemos Simonas Kareiva 2013 m. rudens semestras

UNIX operacinės sistemos Simonas Kareiva 2013 m. rudens semestras

Paskaita #3. 14

Paskaita #3. 14

Paskaita #3 – II dalis Kaip rašyti scenarijus? Scenarijų rašymo pradmenys. Komandinės eilutės argumentai

Paskaita #3 – II dalis Kaip rašyti scenarijus? Scenarijų rašymo pradmenys. Komandinės eilutės argumentai Valdymo struktūros (if, while, for, case) Pagalbiniai įrankiai (sed, awk, perl, ex) Pavyzdžiai ir “kam to reikia? ”

Kaip pradėti? Kuriame: vi programos-pavadinimas Suteikiame vykdymo teises: chmod +x programos-pavadinimas chmod ? ?

Kaip pradėti? Kuriame: vi programos-pavadinimas Suteikiame vykdymo teises: chmod +x programos-pavadinimas chmod ? ? ? programos-pavadinimas Vykdome: bash programos-pavadinimas . /programos-pavadinimas Taip pat vaidina: ed ee nvi emacs joe nano mcedit : ( pico. . .

Pavyzdys # Autorius: Simonas Kareiva # # Mano pirmoji programa # clear echo “Labas

Pavyzdys # Autorius: Simonas Kareiva # # Mano pirmoji programa # clear echo “Labas $USER" echo “Siandien yra c "; date echo “Prisijungusių vartotojų skaičius: c" ; who | wc -l echo “Kalendorius: " cal exit 0

Kintamieji Sisteminiai kintamieji: $SHELL $HOME $USER $OSTYPE $LINES $PWD $USERNAME $MAIL Namų darbai: pasibandykite

Kintamieji Sisteminiai kintamieji: $SHELL $HOME $USER $OSTYPE $LINES $PWD $USERNAME $MAIL Namų darbai: pasibandykite komandą env

Kintamieji Nustatymas: VARDAS=jonas VARDAS=“vardenis pavardenis” read VARDAS Neteisingas nustatymas: VARDAS = jonas VARDAS =jonas

Kintamieji Nustatymas: VARDAS=jonas VARDAS=“vardenis pavardenis” read VARDAS Neteisingas nustatymas: VARDAS = jonas VARDAS =jonas Naudojimas: echo $VARDAS echo “Mano vardas yra $VARDAS” who | grep $VARDAS

Pavyzdys (kalba netaisyta) # Autorius: Simonas Kareiva # # Mano antroji programa # #

Pavyzdys (kalba netaisyta) # Autorius: Simonas Kareiva # # Mano antroji programa # # myname=Simonas. K myos = Free. BSD myno=5 echo “Mano vardas yra $myname“ echo “Mano OS yra $myos“ echo “Mano skaicius yra myno, ar matote? "

Komanda echo -n Neužbaigia išvesties papildoma tuščia eilute. -e Įjungia šių simbolių interpretaciją: a

Komanda echo -n Neužbaigia išvesties papildoma tuščia eilute. -e Įjungia šių simbolių interpretaciją: a alert (skambutis) b backspace c namų darbai n nauja eilutė r grįžimas t horizontalus tab’as \ pasviras brūkšnys echo -e “Obuolys yra sveikas attmaistasrn"

Aritmetika Pvz: expr 1 + 3 expr 2 – 1 expr 10 / 2

Aritmetika Pvz: expr 1 + 3 expr 2 – 1 expr 10 / 2 expr 20 % 3 expr 10 * 3 echo `expr 6 + 3` Taip neveikia: echo "expr 6 + 3" # Atspausdins: expr 6 + 3 echo 'expr 6 + 3' # - ’’ -

Subkomandos Norime atspausdinti datą. Kuris variantas teisingas? echo "Today is date" echo "Today is

Subkomandos Norime atspausdinti datą. Kuris variantas teisingas? echo "Today is date" echo "Today is `date`"

Subkomandos Norėdami atspausdinti komandos rezultatą, naudosim ` echo "Today is date" echo "Today is

Subkomandos Norėdami atspausdinti komandos rezultatą, naudosim ` echo "Today is date" echo "Today is `date`"

Ne į temą Palyginkite: date; who date, who echo $?

Ne į temą Palyginkite: date; who date, who echo $?

Wildcards ls * ls a* ls *. c ls ut*. c ls ? ls

Wildcards ls * ls a* ls *. c ls ut*. c ls ? ls laba? ls [abc]*

Wildcards ls [a-c]* ls [!a-o]* ls [^a-o]* ls darbas. {txt, doc}

Wildcards ls [a-c]* ls [!a-o]* ls [^a-o]* ls darbas. {txt, doc}

Komandos ir argumentai ls blabla cp y y. bak mv y. bak y. geras

Komandos ir argumentai ls blabla cp y y. bak mv y. bak y. geras tail -10 manof mail –s demesio vilnius sort -r -n manof date clear

Pavyzdys (kalba netaisyta) #!/bin/sh # # Scenarijus kuris skaiciuoja viska # echo “Viso argumentu

Pavyzdys (kalba netaisyta) #!/bin/sh # # Scenarijus kuris skaiciuoja viska # echo “Viso argumentu yra $#“ echo "$0 yra bylos pavadinimas“ echo "$1 yra pirmas argumentas“ echo "$2 yra antras argumentas“ echo “O jie visi kartu yra : $* arba $@"

Nukreipimai ls > filename date >> manolaikas cat < skaityk. txt sort sarasas >

Nukreipimai ls > filename date >> manolaikas cat < skaityk. txt sort sarasas > surusiuotas echo “mano dienorasti” >> dienorastis. txt . /programa. sh > /dev/null

Nukreipimai ir perdavimai ls | less who | sort > sarasas. txt ls –l

Nukreipimai ir perdavimai ls | less who | sort > sarasas. txt ls –l | wc -l ( date; df -h ) >> ~/zurnalas. txt who | grep juozapavicius

Nukreipimai ir perdavimai (pvz) cat uzrasai. txt | grep tekstas | wc –l grep

Nukreipimai ir perdavimai (pvz) cat uzrasai. txt | grep tekstas | wc –l grep tekstas uzrasai. txt | wc –l grep –c tekstas uzrasai. txt

Sąlygos sakiniai if cat $1 then echo -e "n. Byla $1 perskaitytan" fi if

Sąlygos sakiniai if cat $1 then echo -e "n. Byla $1 perskaitytan" fi if rm $1 then echo “n. Byla $1 ištrintan” fi

Sąlygos sakiniai if test $1 = “read” then cat $2 echo -e "n. Byla

Sąlygos sakiniai if test $1 = “read” then cat $2 echo -e "n. Byla $2 perskaitytan" fi if test $1 = “del” then rm $2; echo “n. Byla $1 ištrintan” fi

Sąlygos sakiniai (skaičiai) -eq -ne -lt -le -gt -ge

Sąlygos sakiniai (skaičiai) -eq -ne -lt -le -gt -ge

Sąlygos sakiniai (eilutės, bylos) string 1 = string 2 string 1 != string 2

Sąlygos sakiniai (eilutės, bylos) string 1 = string 2 string 1 != string 2 -n string 1 -z string 1 -s file -f file -d dir -w file -r file -x file

Sąlygos sakiniai if test $1 -gt 0 then echo "$1 number is positive" else

Sąlygos sakiniai if test $1 -gt 0 then echo "$1 number is positive" else echo "$1 number is negative“ fi

Sąlygos sakiniai if [ $1 -gt 0 ]; then echo "$1 is positive" elif

Sąlygos sakiniai if [ $1 -gt 0 ]; then echo "$1 is positive" elif [ $1 -lt 0 ] then echo "$1 is negative" elif [ $1 -eq 0 ] then echo "$1 is zero" else echo "Oops! $1 is not number, give number" fi

Ciklo sakiniai for i in 1 2 3 4 5 do echo “Sveiki $i

Ciklo sakiniai for i in 1 2 3 4 5 do echo “Sveiki $i kartus" done for (( i = 0 ; i <= 5; i++ do echo “Sveiki $i kartus" done ))

Ciklo sakiniai for i in 1 2 3 4 5 do echo “Sveiki $i

Ciklo sakiniai for i in 1 2 3 4 5 do echo “Sveiki $i kartus" done for (( i = 0 ; i <= 5; i++ do echo “Sveiki $i kartus" done ))

Ciklo sakiniai (misc) while [sąlyga] do command 1; command 2; done case $kintamasis in

Ciklo sakiniai (misc) while [sąlyga] do command 1; command 2; done case $kintamasis in reikšmė 1) komanda 1 ; ; *) komanda 2 ; ; esac

Pavyzdys (1) if [ $# -ne 1 ] then echo “Reikalingi argumentai“ exit 1

Pavyzdys (1) if [ $# -ne 1 ] then echo “Reikalingi argumentai“ exit 1 fi n=$1 sum=0 sd=0 while [ $n -gt 0 ] do sd=`expr $n % 10` sum=`expr $sum + $sd` n=`expr $n / 10` done echo "Suma lygi $sum"

Pavyzdys (2) temph=`date | cut -c 12 -13` dat=`date +"%A %d in %B of

Pavyzdys (2) temph=`date | cut -c 12 -13` dat=`date +"%A %d in %B of %Y (%r)"` if [ $temph -lt 12 ] then mess="Good Morning $LOGNAME, Have nice day!" fi if [ $temph -gt 12 -a $temph -le 16 ] then mess="Good Afternoon $LOGNAME" fi if [ $temph -gt 16 -a $temph -le 18 ] then mess="Good Evening $LOGNAME" fi

Pavyzdys (3) (/bin/bash) while : do ti=`date +"%r"` echo -e -n "�33[7 s" tput

Pavyzdys (3) (/bin/bash) while : do ti=`date +"%r"` echo -e -n "33[7 s" tput cup 0 69 echo -n $ti echo -e -n "33[8 u" sleep 1 done

Namų darbai for (( i = 1; i <= 9; i++ )) do for

Namų darbai for (( i = 1; i <= 9; i++ )) do for (( j = 1 ; j <= 9; j++ )) do tot=`expr $i + $j` tmp=`expr $tot % 2` if [ $tmp -eq 0 ]; then echo -e -n "33[47 m " else echo -e -n "33[40 m " fi done echo -e -n "33[40 m“ echo "" done

Pabaiga (galas) [ $[ $RANDOM % 6 ] == 0 ] &&  rm

Pabaiga (galas) [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo “You live”