Академический Документы
Профессиональный Документы
Культура Документы
&amo proirenje zagradama# razdvajanje re"i i proirenje imena da!o!eka mog promeni!i broj re"i proirenj # os!ala proirenja proir j jedn re" jedn re".
Proirenje preko zagrade se izvrava pre bilo kog dr gog proirenja. Bilo koji karak!er koji ima specijalno zna"enje za os!ala proirenja " va se rez l!a! # odnosno ne dira se. ,o je s!rogo !eks! alno proirenje. Bash ne primenj je in!erpre!acij
Osnove shell programiranja - nastavak
kon%lik!e sa parame!arskim proirenjima niz ./0. se ne sma!ra pogodnim za proirenje preko zagrada. 1orek!no %ormirano proirenje preko zagrada mora sadra!i o!voren i za!voren zagrad koje s van navodnika# i barem jedn zape! . &vako nekorek!no proirenje se ne izvrava. 'va kons!r kcija se !ipi"no koris!i kao skraenica kada se is!i zajedni"ki pre%iks generie vie p !a. ,ako se: Primer.
$ mkdir /home/jsmith/{data,video,mp3}
proir je :
$ mkdir /home/jsmith/data $ mkdir /home/jsmith/video $ mkdir /home/jsmith/mp3
proir je se :
$ $ $ $ chown chown chown chown root root root root /home/jsmith/ss1 /home/jsmith/ss2 /home/nmacek/data /home/nmacek/ss3
Materijal za vebe iz Operativnih sistema 1, IMI PMF Kragujevac &lede'i primer demonstrira $potreb$ tilda pro(irenja )a promenljiv$ $O*+,-+. ~//misc $,-+/misc ~0/temp $O*+,-+/temp
Primer 1.
$ whoami jsmith $ pwd /etc $ cd ~/data 1 poddirektorij$m data home direktorij$ma $ pwd /home/jsmith/data $ cd ~jim 1 home direktorij$m korisnika jim $ pwd /home/jim
Primer 2.
$ pwd /etc $ cd /bin $ cd ~0/network $ pwd /etc/network
ili
`command`
Bash izvrava proirenje izvravanjem komande command i zamenj je komandn s bs!i! cij sa s!andardnim izlazom komande. (gra)ene nove linije se ne bri # ali mog da se klone za vreme razdvajanja re"i. 1ada se koris!i zamena s!ilom %orme obrn !og navodnika# karak!er obrn !a kosa cr!a zadrava doslovno zna"enje osim kada je praen sa ./.# .>.# ili .?.. Prvi obrn !i navodnik# koji nije praen obrn !om kosom cr!om# prekida komandn zamen . 1ada se koris!i $(command) %orma# svi karak!eri izme) malih zagrada !re!iraj se kao komande# ni!a se ne !re!ira specijalno. 2ko se zamena pojavlj je sa d plim navodnicima# razdvajanje re"i i proirenje imena da!o!eka da!o!eka se ne izvrava. Primer. Pronalaeanje svih da!o!eka sa eks!enzijom bak.
$ 2ind / 0name 34%bak3 5print
1omprimovanje is!ih
Materijal za vebe iz Operativnih sistema 1, IMI PMF Kragujevac $ 6)ip 7 2ind / 0name 34%bak3 5print 7
ili
$ 6)ip $" 2ind / 0name 34%bak3 5print #
ili
$[ expression ]
<zraz se !re!ira kao da je bio d plim navodnicima# ali d pli navodnici n !ar zagrada se ne !re!iraj specijalno. &vi simboli izraz podle parame!arskom proirenj # komandnoj zameni i navodni"kom klanjanj . 2ri!me!i"ke zamene mog da se gnezde. <zra" navanje se izvrava prema pravilima shell ari!me!ike. 2ko je izraz pogrean bash prikaz je por k koja prijavlj je o!kaz i zamena se ne izvrava. 7vo nekoliko primera:
$ echo 1 / 1 $ echo 2 $ echo 3 $ echo =%C< $ a91 $ b92 $ echo 3 1 / 1 $""1/1## $""C/2## 3/?Dbc 0l 1 shell interpretira 1 / 1 kao strin6 1 $""1/1## je aritmetiko pro(irenje 1 bash koristi celobrojn$ aritmetik$ 1 celobrojna aritmetika
$""$a/$b##
Bash koris!i celobrojn ari!me!ik + komanda echo $[3/4] na ekran prikaz je A. (koliko je po!rebno izvri!i nek operacij sa realnim rez l!a!om ili vie ma!ema!i"kih operacija# moe se koris!i!i program bc + rez l!a! komande echo 3/4 | bc -l je A.BC# !o je korek!no. 2ri!me!i"ko proirenje se moe iskoris!i!i za odre)ivanje is!ini!os!i izraza. ( !om sl "aj # proirenje vraa s!a! s A ili D zavisno od vrednos!i slovnog izraza expression. <zraz se kompon je pomo opera!ora E# E;# F# F;# ;; i G ;. -oda!no# izrazi mog da se kombin j koris!ei sledee opera!ore: ( expression ) vraa vrednos! izraza expression.
$!
!a"no koliko je expression ne!a"an (negacija) !a"no samo pod slovom ako s oba izraza (expD i expH) !a"ni !a"no ako je bar jedan od izraza (expD ili expH !a"an).
'pera!ori II i JJ ne izra" navaj vrednos! expH ako je vrednos! izraza expD dovoljna da odredi povra!n vrednos! celog slovnog izraza.
$ echo $""1E3DD2F?## 1 $ echo $""1E3GG2992## =
1ada se koris!e opera!ori .;;. i .G;. niz desnog opera!ora sma!ra se zorkom# a provera iden!i"nos!i odgovara pravilima za pronalaenje zorka (Pa!!ern 6a!ching). Krednos! A se vraa ako niz odgovara zork # a vrednos! D ako ne odgovara. *azdvajanje re"i i proirenje imena da!o!eka se ne izvravaj n !ar ovog proirenjaL !ilda proirenje# parame!arsko proirenje# komandna zamena# procesna zamena i po!reba navodnika se izvravaj .
$ ime9jsmith $ echo $""$ime99jsmith## 1 $ echo $""$imeH9jsmith## =
Shell funkcije
Sa deklarisanje % nkcije# bash koris!i slede sin!aks :
ime_funkcije (argumenti) { komande; }
<me % nkcije je praeno zagradama. @ nkcija mora bi!i deklarisana pre nego !o nas! pi bilo koji njen poziv. Primer.
1 2$nc 1 ; simple 2$nction repeat"# { echo 0n IJe po)najem $1 $2 I } repeat ,era ,eric
1ao !o se vidi# arg men!i se % nkciji prenose is!o kao !o se !o "ini sa arg men!ima komandne linije# !j. n !ar % nkcije /D /H... preds!avljaj prvi# dr gi# ... arg men! sa kojima je %+ja pozvana.
Povratne vre(nosti
-a bi se eskplici!no pos!avio izlazni s!a! s % nkcije# po!rebno je pozva!i komand re#$rn:
return code
)!
Veba 1
1oris!ei i% izraze# napisa!i skrip! %ajlskrip!.sh koji e: (zima!i jedan arg men! s komandne linije. ,aj arg men! !reba da b de neki direk!orij m. 2ko arg men! nije naveden# zee se !ek i direk!orij m kao podraz mevani. :is!a!i sve %ajlove koji imaj eks!enzij #x#. Pored lis!anja %ajlova# korisnik in!erak!ivno !reba da!i da bira !a eli da se prikae o da!om %ajl # veli"ina# dozvole# vlasnik# gr pa ili sve zajedno.
1H/bin/bash 1111111111111111111111111111111111111111111111111111111111111111111111111 1 2ajlskript%sh 1 1 +ec% >, 2==? 11 Knteraktivna skripta )a in2ormacije o tekst$alnim 2ajlovima 11 @H;JL!*OL. 11 12/>/=? 00 :his is version 1% Jo chan6es at this point 111111111111111111111111111111111111111111111111111111111111111111111111111 1 M)mi direktorij$m s komandne linije i proveri da li postoji 1 ;ko nema ar6$menta ili to nije direktorij$m, $)mi tek$ci direktorij$m i2 N 0d $1 O then +KP9$1 else +KP97pwd7 2i cd $+KP 1 ,ita korisnika )a opcij$ echo Q&ta )elite da )nate o 2ajlovima. "velicina, do)vole, vlasnik, 6r$pa, sve#RQ read O,@KS; i2 N $O,@KS; 9 QvelicinaQ O then ls 0la 4%t8t D awk 3{print $T Q . eli2 N $O,@KS; 9 Qdo)voleQ O then ls 0la 4%t8t D awk 3{print $T Q . eli2 N $O,@KS; 9 QvlasnikQ O then ls 0la 4%t8t D awk 3{print $T Q . eli2 N $O,@KS; 9 Q6r$paQ O then ls 0la 4%t8t D awk 3{print $T Q . eli2 N $O,@KS; 9 QsveQ O then ls 0la 4%t8t else echo QLP!&U;. Jije i)abrano nista 2i
od pon$djenih opcijaHQ
*!
Veba !
Mapravi!i home direk!orij m naloga na kome s!e prijavljeni poddirek!orij m &e'ba2. Mapisa!i bash shell scrip! (opira).sh koji kopira sve %ajlove iz direk!orij ma 4e!c koji imen sadre T!abU &e'ba2 ali !ako da ne sadre komen!are.
1H/bin/bash 1 1 &kripta koja kopira 1 cd /etc V;S*OWK97ls 4tab47 2ajlove /etc/4tab4 $ ~/ve)ba2, ali be) komentara
Veba "
<n!erak!ivno pon di!i korisnik izbor svih %ajlova iz /e#c "ije se ime zavrava slovom TbU. 1ada korisnik izabere %ajl# ispisa!i sve in%ormacije o !om %ajl # kao i sve linije iz njega koje sadre ci%re.
1H/bin/bash 1 1 &kripta daje korisnik$ da i)abere neki od 2ajlova /etc/4b, a )atim stampa in2o o tom 1 2ajl$ i linije koje sadr)e ci2re% 1 cd /etc V;S*OWK97ls 4b7 Osnove shell programiranja - nastavak +!
select V;S* in $V;S*OWKB do ls 0l $V;S* echo 0e QYnQ cat $V;S* D 6rep 0! 3N=0>O3 breakB done
!!