• Non ci sono risultati.

# cop ia fil es o rg fil ed es t

N/A
N/A
Protected

Academic year: 2021

Condividi "# cop ia fil es o rg fil ed es t"

Copied!
22
0
0

Testo completo

(1)

Esercizi Shell --

1 # es em p io 1 # si i n se ris cono in un fil e il cu i no m e è d at o co m e p ar am et ro # d ell e li n ee le tt e d a inpu t ch e sodd is fa no # ce rte c ond iz ion i # non si ca n ce ll a il con te nu to p rece d en te d el fil e

# in se rt fil e

w h il e ec ho "vuo i fin ir e (s i/ no )? "; rea d fin e;t es t $ fin e != si do ec ho in se ris ci l a st ring a rea d a ec ho $ a ca se $ a in ? [b -g ]* a) ec ho OK 1 ;ec ho $ a >> $1 ;; ? s* [0 -9 ]? |[0 -9 ]s ) ec ho OK 2 ;ec ho $ a >> $1 ;; ?? o* [2 -9 ]) ec ho OK 3 ;ec ho $ a >> $1 ;; ?? [a -Z ]* r? |? r[ A -Z ]) ec ho OK 3 ;ec ho $ a >> $1 ;; * ) ec ho NO ca se ;; es ac don e

Eserciz

# es em p io 2 il fil e so rg en te v ie n e c op ia to su l fil e d es ti n az ion e # se qu es to es is te g ia ' s i ch ie d e p er m ess o d i sov ra sc riv er lo

# cop ia fil es o rg fil ed es t

ca se $# in 0 |1 ) ec ho U so $0 fil es o rg fil ed es t ex it;; 2 ) if te st ! - f $1 th en ec ho $1 non es is te ex it fi ;; es ac if te st -f $2 th en ec ho il fil e $2 es is te : vuo i ric op rir lo ? rea d an sw er ca se $ an sw er in n* |N * ) ex it;; es ac fi if te st -d $2 th en ec ho $2 "e ` un d ir ett o rio "; ex it el se if cp $1 $2 th en ec ho cop ia to fil e $1 in $2 el se ec ho err o re su ll a c op ia f i fi

(2)

Esercizi Shell --

3 # es em p io 3 si ce rca no fil e c on il no m e sp ec if ica to # ch e si ano le gg ib ili o sc riv ib ili n ell a g er ar ch ia a p ar ti re d al # no m e sp ec if ica to

# ce rca d ir fil e

ca se $# in 0 |1 ) ec ho U so $0 d ir fil e ex it;; 2 );; es ac

ec ho $ P A T H

P A T H = /ho m e/ d ei s33 /f ra n co /C A L C O L A T O R I:$ P A T H

# il fil e c o m and i si i nvo ca ric o rs iv am en te

if te st ! - d $1 th en ec ho err o re : $1 non es is te c o m e so tt od ir ett o rio ex it; fi

Esercizi Shell --

4 cd $1 if te st -f $2 th en if te st -r $2 -o -w $2 th en ec ho fil e $2 ; ca t $2 if te st -r $2 th en ec ho fil e $2 al m eno le gg ib il e in `p w d ` fi if te st -w $2 th en ec ho fil e $2 al m eno scc riv ib il e in `p w d ` fi fi fi fo r i i n * do if te st -d $ i th en es e3 $ i $2 fi don e

(3)

Esercizi Shell --

5 # es em p io 4 # si d anno 1 o 2 ar go m en ti conn fo rm at o li b er o # p er sp ec if ica re il m es e c on un fo rm at o li b er o es . Ja n G en

# ca le nd [m es e [a nno ]]

ca se $# in 0 ) se t `d at e` ;m = $2 ;y = $6 ;; # co l co m ando se t si pongono g li ar go m en ti $1 $2 .. con l'ou t d i d at e 1 ) m = $1 ; se t `d at e` ; y = $6 ;; * ) m = $1 ; y = $2 ;; es ac

# no ta c h e $0 rim an e ugu al e a n ch e dopo il se t

ca se $ m in ja n* | g en* | J an* | G e* ) m = 1 ;; f* | F * ) m = 2 ;; m ar * | M ar * ) m = 3 ;; ap* | A p* ) m = 4 # ecce te ra ecce te ra es ac

/u sr /b in /ca l $ m $ y

Eserciz

# es em p io 5 si fa il m on it o r d eg li u te n ti p re se n ti n el si st em a # si u sa il co m ando d iff tr a la li st a d eg li u te n ti # o tt enu ta in m o m en ti su cce ss iv i

# m at ch

n ew = /u sr /t m p /w ho1$$ o ld = /u sr /t m p /w ho2$$

> $o ld

w h il e : # ci cl o in fin it o do w ho > $n ew d iff $o ld $n ew ec ho m ov e m v $n ew $o ld sl ee p 60 # rit ar do d i un m inu to tr a i ci cli don e

(4)

Esercizi Shell --

7 # es em p io 6 si v er if ica la p re se n za d i un fil e in tu tti i so tt od ir ett o ri # d el p at h att u al e

# w h er e fil e

ca se $# in 0 ) ec ho al m eno un ar go m en to ; ex it ;; es ac

fo r i i n `ec ho $ P A T H | t r ':' ' ' ` do if [ -f $ i/ $1 ] th en ec ho $ i/ $1 fi don e

Esercizi Shell --

8 # es em p io 7 si rice rca un fil e d at o in un a g er ar ch ia # L a rice rca a vv ie n e in m odo ric o rs ivo a p er ti re d a un # so tt od ir ett o rio sp ec if ica to

#dov e d ir no m ef il e

P A T H = $ P A T H :/ ho m e/ fr an co /s o94 # m ett o n el p at h il d ir ett o rio d i re si d en za d i dov e

if te st -lt 2 th en ec ho al m eno du e a rgo m en ti fi

cd $1 # non con tr o lli am o ch e l'a rg si a e ff etti v am en te un so tt od ir ett o rio

fo r i i n * do if te st -d $ i th en es e7 $ i $2 #qu i si i nvo ca ric o rs iv am en te fi don e

if te st -f $2 th en ec ho in `p w d `:$2 fi

#v ed er e il co m ando find

(5)

Esercizi Shell --

9 # es em p io 8 si v is u ali zza il con te nu to d ei fil e p ass ati co m e a rgo m en to # ch ie d endo p rim a a ss en so all o u te n te

# choo se fil e1 fil e2 fil e3 .... fil en

fo r i do ec ho -n "$ i si/ ? " rea d an sw er ca se $ an sw er in y * |Y * |s * |S * ) ca t $ i;; es ac don e

# si p rov ino invo caz ion i d i ti po d iv er so

# choo se .* # choo se p*

# è p èo ss ib il e u sa re qu es to co m ando in un a p ip e ? # choo se * .c | g re p st ring a

Eserc

# es em p io 9 il co m ando nuov e su ric h ie st a i fil e p ass ati co m e # ar go m en to n el d ir ett o rio p ass at o co m e p rim o ar go m en to

# m ov ea t d ir fil e1 fil e2 .... fil en

ca se $# in 0 | 1 ) ec ho du e a rgo m en ti; ex it ;; es ac

if te st -d $1 th en fo r i i n $* do if te st $ i != $1 th en ec ho $ i i n $1 ? rea d ris po st a if te st $ ris po st a = "s i" -o $ ris po st a = "s " th en if m v $ i $1 # il ris u lt at o d ell a m ov e c o m and a la a lt er n ati v a th en ec ho si $1 /$ i el se ec ho p rob le m i p er $1 fi fi fi don e fi

(6)

Esercizi Shell --

11 # es em p io 10 v al u taz ion e d i un co m ando p ass at o co m e p ar am et ro # in tu tti i so tt od ir ett o ri d i un d io re tt o rio sp ec if ica to

# co mm ric d ir ett o rio co m ando

P A T H = $ P A T H :$ HO M E /e se rc iz i_ so

cd $1

ec ho es eguo la e v al d el co m ando con `p w d `

ev al $2

fo r i i n * do if te st -d $ i th en ec ho nuovo d ir ett o rio $ i co mm ric $ i "$2 " fi don e

# si p rov ino co m and i ch e non ric h ie dono so stit u zi on i # e a lt ri ch e le ric h ie dono

Esercizi Shell --

12 # E se m p io 11 p er ogn i d ir ett o rio in cu i ci sono al m eno 4 fil e le gg ib ili # e sc riv ib ili i n cu i e' con te nu to il 2 ar g # si st am p ino ta li fil e c h ie d endo il con se n so all 'u te n te

# con ta d ir ett o rio ass o lt o st ring a

P A T H = $ P A T H :$ HO M E /C A L C O L A T O R I/S H ELL expo rt P A T H

ca se $# in 0 |1 ) ec ho err o re n ei p ar am et ri; ex it 1 ;; * ) if te st ! - d $1 th en ec ho p rim o ar go m en to d ev e e ss er e d ir ett o rio ; ex it 2 el se ca se $1 in /* ) ;; * ) no m e d i d ir ett o rio non ass o lu to ; ex it 3 ;; es ac fi ;; es ac

(7)

Esercizi Shell --

13 cd $1 # m i po rto n el d ir ett o rio e m ett o il con ta to re a ze ro con ta = 0 # ci cl o su tu tti i fil e p er con ta re qu elli ch e v er if ica no la c ond iz ion e fo r i i n * do if te st -f $ i -a -r $ i -a -w $ i th en if g re p $2 $ i > /d ev /nu ll th en no m i= "$no m i $1 /$ i" con ta = `e xp r $ con ta + 1 ` fi fi don e # ad ess o gu ar do se ce n 'e ra no abb as ta n za e li v is u ali zz o if te st $ con ta -g e 4 th en ec ho n e ho tr ov ati al m eno 4 in $1 fo r i i n $no m i do ec ho $ i don e el se ec ho non v e n e e ra no 4 fi # ch ia m o ric o rs iv am en te c on ta p er i so tt od ir ett o ri fo r i i n * do if te st -d $ i th en con ta $1 /$ i $2 fi don e

Eserc

# es em p io 12 ce rcaa tu tti i fil e c h e a pp ar te ngono a un ce rto u te n te

#11 a u te n te d ir n am es # tr ov a il fil e c o rr is pond en te # dopo invo ca e se 11b e e se 11 c

P A T H = $ HO M E /C A L C O L A T O R I:$ P A T H

U TE N TE = $1 cd /ho m e/ d ei s33 /f ra n co

expo rt U TE N TE ;e xpo rt P A T H

sh if t # co si eli m ino d a $* il p rim o ar go m en to

es e11b $*

(8)

Esercizi Shell --

15 # es e11b

fo r i i n * # ci o e p er ogn i fil e d el d ir ett o rio do if [ -d $ i ] th en fo r j i n $* # ci o e p er ogn i ar go m en to p ass at o do if [ $ i = $ j ] th en cd $ i; es e11 c $* ;c d .. el se c d $ i; es e11b $* ;c d .. fi don e fi don e

--- # es e11 c d ir n am es

ec ho `p w d ` $* $ U TE N TE ls -lg a | g re p $ U TE N TE > /u sr /t m p /f il e ec ho rit rov at o `p w d ` ca t / u sr /t m p /f il e rm /u sr /t m p /f il e es e11b $*

Esercizi Shell --

16 E se m p io 1 c C o m p it o S is te m i O p er a tiv i 11 A p ril e 1997

S i p rog etti u tili zza ndo il li ngu agg io C e le fun zi on i p rim iti v e c h e op er ano su i fil e un filt ro fil tr o c h e acce tt a c o m e p ar am et ri i no m i d i du e fil e (F 1 e F 2 ). Il fil e d ev e ripo rta re su ll o st and ar d ou tpu t un a fu si on e d ei ca ra tt er i d i F 1 e F 2 : in p ar ti co la re , in u sc it a d ev e e ss er e ripo rta to il p rim o ca ra tt er e d i F 1 , l’ u lti m o d i F 2 , il sec ondo d i F 1 , il p enu lti m o d i F 2 e c o si ’ v ia . Il p ro ce d im en to d ev e av er e te rm in e non app en a te rm in a uno d ei du e fil e.

In o lt re , u tili zza ndo il B o u rn e Sh ell d i UN IX , si p rog etti un al go rit m o ch e p re v ed a un nu m er o v ar ia b il e d i p ar am et ri (m agg io re o ugu al e a 3 ): i p rim i du e p ar am et ri d evono ess er e c on si d er ati no m i re la ti v i d i fil e, m en tr e g li alt ri d evono ess er e no m i ass o lu ti d i d ir ett o ri (D 1 , .. ., D k ) ch e id en ti fica no d ell e g er ar ch ie a ll ’in te rno d el fil e sy st em . Il p rog ra mm a d ev e ce rca re n ell e g er ar ch ie sp ec if ica te D 1 , .. ., D k , tu tti i d ir ett o ri ch e c on te ngono un a c opp ia d i fil e le gg ib ili a v en ti no m e F 1 e F 2 : si ripo rti il no m e a ss o lu to d i t ali fil e su ll o st and ar d ou tpu t. In ognuno d ei d ir ett o ri t rov ati si d ev e a pp li ca re il filt ro fil tr o p ass andog li co m e p ar am et ri i no m i d ei du e fil e tr ov ati .

(9)

Esercizi Shell --

17 /* filt ro * / # in cl ud e < st d io .h > # in cl ud e < fc n tl .h > # in cl ud e < st d li b .h > # in cl ud e < sy s/ st at .h >

vo id m ai n (a rg c, ar gv ) in t ar g c; ch ar ** ar gv ; { in t fd ,f d1 ,f d2 ; long i; ch ar ca r; /* con tr o ll o d el nu m er o d ei p ar am et ri* / if (a rg c! = 3 ) { p rin tf (" err o re su l nu m er o d ei p ar am et ri\ n ") ; ex it (- 1 ); } /* ap ro i fil es in le tt u ra * / if (( fd1 = op en (a rgv [1 ],O _ R DON L Y )) < 0 ) { p rin tf (" err o re in fil e % s\ n ,a rgv [1 ]" ); ex it (- 2 ); } if (( fd2 = op en (a rgv [2 ],O _ R DON L Y )) < 0 ) { p rin tf (" err o re in fil e % s\ n ,a rgv [2 ]" ); ex it (- 2 ); }

/* in iz io d el ci cl o d i l ett u ra d ei fil es * / i= 1 ; fd = fd1 ; w h il e (r ea d (f d ,& ca r,1 )) { w rit e (1 ,& ca r,1 ); if (f d == fd1 ) { fd = fd2 ; ls ee k (f d ,- i,2 ) ; i++ ; } el se { fd = fd1 ; } } }

Eserc

#p ar te in sh ell ca se $# in 0 |1 |2 ) ec ho err o re su l nu m er o d ei p ar am et ri ex it;; * ) ;; es ac F 1 = $1 F 2 = $2 expo rt F 1 expo rt F 2 sh if t sh if t

fo r j do ca se $ j i n /* ) if te st ! - d $ j -o ! - x $ j th en ec ho err o re d ir ett o rio $ j ex it fi;; * ) ec ho $ j non d ir ett o rio ass o lu to ex it ;; es ac don e

P A T H = $ P A T H : `p w d ` expo rt P A T H

fo r j do ec ho $ j ce rca fil e $ j don e

(10)

Esercizi Shell --

19 # fil e ce rca fil e cd $1 fil ee x is t1 = no fil ee x is t2 = no

fo r k in * do if te st -d $k -a -x $k th en ec ho sono n el d ir ett o rio `p w d `/$k ce rca fil e $k el se if te st -f $k -a -r $k th en ca se $k in $ F 1 ) fil ee x is t1 = si ;; $ F 2 ) fil ee x is t2 = si ;; es ac fi fi don e

if te st $ fil ee x is t1 = si -a $ fil ee x is t2 = si th en ec ho tr ov ati fil e `p w d `/$ F 1 e `p w d `/$ F 2 filt ro $ F 1 $ F 2 f i

Esercizi Shell --

20 E se m p io 2 c C o m p it o S is te m i O p er a tiv i G iu g n o 1997

S i p rog etti , u tili zza ndo il li n g u agg io C e le p rim iti v e d i b ass o li v ell o ch e op er ano su i fil e, un filt ro

filtro

c h e acce tt a c o m e p ar am et ri i no m i d i du e fil e (f 1 e f2 ). Il filt ro fil tr o d ev e le gg er e d al fil e f1 un a li n ea a ll a vo lt a. U n a

selezione

d ei ca ra tt er i d i ogn i li n ea v a ripo rta ta su l fil e f2 sec ondo qu es ta re go la : p er ogn i li n ea d is p ar i si d evono ripo rta re su f2 i ca ra tt er i d is p ar i d ell a li n ea , m en tr e p er ogn i li n ea p ar i si d evono ripo rta re su f2 i ca ra tt er i p ar i d ell a li n ea .

Inoltre

, u tili zza ndo il B o u rn e Sh ell d i UN IX , si p rog etti un al go rit m o ch e p re v ed a un nu m er o v ar ia b il e d i p ar am et ri (m agg io re od ugu al e a 3 ): il p rim o p ar am et ro d ev e e ss er e il n o m e a ss o lu to d i un d ire tt o ri o c h e id en ti fica un a g er ar ch ia a ll 'in te rno d el fil e sy st em (G ), m en tr e g li alt ri d evono ess er e con si d er ati no m i re la ti v i d i fil e (F 1 ... F N ). S i con tr o lli p re v en ti v am en te c h e ognuno d ei no m i F i s ia un no m e d is ti n to . Il p rog ra mm a d ev e v er if ica re in ogn i d ir ett o rio d ell a g er ar ch ia G s p ec if ica ta (d al li v ell o d i p ar te n za in po i) ch e e si st ano al m eno du e fil e il cu i no m e c o rr is pond a a d uno d ei no m i F 1 ... F N . P er ogn i copp ia d i fil e c o sì d et er m in at a, dopo av er v er if ica to ch e uno si a le gg ib il e e l'a lt ro si a scr iv ib il e, si ripo rti il n o m e a ss o lu to d i t ali fil e su ll o st and ar d ou tpu t. P er ogn i copp ia d i fil e c h e v er if ica le c ond iz ion i p rece d en ti , si d ev e a pp li ca re il filt ro

filtro

p ass ando co m e p ar am et ri i no m i d ei fil e tr ov ati (f 1 si a il fil e le gg ib il e e f2 si a il fil e sc riv ib il e) .

(11)

Esercizi Shell --

21 /* filt ro * / # in cl ud e< st d li b .h > # in cl ud e< sy s/ st at .h > # in cl ud e< fc n tl .h > # in cl ud e< st d io .h >

m ai n (a rg c, ar gv ) in t ar g c; ch ar ** ar gv ; { in t fd1 ,f d2 ,li n ea = 1 ,c = 0 ; c h ar ch ;

if (a rg c! = 3 ) ex it (- 1 ); if (( fd1 = op en (a rgv [1 ],O _ R DON L Y )) < 0 ){ p rin tf (" err ap \n ") ;e x it (- 2 );} if (( fd2 = op en (a rgv [2 ],O _ W R ON L Y )) < 0 ){ p rin tf (" err cr e\ n ") ;e x it (- 3 );}

w h il e(r ea d (f d1 ,& ch ,1 )> 0 ) { if (c != '\n ') { c++ ; if (( li n ea % 2 == 0 ) && (c % 2 == 0 )) w rit e( fd2 ,& ch ,1 ); el se if (( li n ea % 2 != 0 ) && (c % 2 != 0 )) w rit e( fd2 ,& ch ,1 ); } el se if (c h == '\n ') { w rit e( fd2 ,& ch ,1 ); li n ea ++ ;c = 0 ; } } cl o se (f d1 ); cl o se (f d2 ); }

Eserc

# fil e c o m p it o ca se $# in 0 |1 |2 ) ec ho err o re n el nu m er o d ei p ar am et ri; ex it ;; 3 |* ) if te st ! - d $1 th en ec ho err o re non un d ir ett o rio ;e x it el se ca se $1 in /* );; * )ec ho err o re d ev e e ss er e un no m e a ss o lu to ;e es ac fi ;; e sac P A T H = $ P A T H :` p w d ` expo rt P A T H D IR A SS = $1 sh if t con t= 0 fo r i i n $* do con t= 0 fo r j i n $* do if te st $ j = $ i th en con t= ` exp r $ con t + 1 ` fi don e if te st $ con t -g t 1 th en ec ho du e fil e c on ugu al e no m e tr a i p ar am et ri ex it fi don e

cd $ D IR A SS T rov af il e $*

(12)

Esercizi Shell --

23 # fil e T rov af il e fo r i i n $* do if te st -f $ i th en fo r j i n $* do if te st -f $ j -a $ i != $ j th en ec ho es is te a lm eno un a c opp ia if te st -r $ i -a -w $ j th en ec ho copp ia in `p w d ` le gg ib il e $ i sc riv ib il e $ j filt ro $ i $ j el se if te st -w $ i -a -r $ j th en ec ho copp ia in `p w d ` le gg ib il e $ j sc riv ib il e $ i filt ro $ j $ i fi fi fi don e fi don e fo r i i n * do if te st -d $ i th en cd $ i T rov af il e $* cd .. fi don e

Esercizi Shell --

24 E se m p io 3 c C o m p it o S is te m i O p er a tiv i 18 L u g li o 1997

S i p rog etti u tili zza ndo il li ngu agg io C e le fun zi on i p rim iti v e c h e op er ano su i fil e un filt ro fil tr o c h e acce tt a un nu m er o v ar ia b il e d i p ar am et ri (m agg io re o ugu al e a d 1 ) ch e c o rr is pondono a no m i re la ti v i d i fil e f1 ,...., fn . Il filt ro d ev e ripo rta re su ll o st and ar d ou tpu t alt er n at am en te un ca ra tt er e d i f1 , un ca ra tt er e d i f2 , .. ., un ca ra tt er e d i fn , e po i d i nuovo un ca ra tt er e d i f1 , un ca ra tt er e d i f2 , fino all a te rm in az ion e d i t u tti i fil e.

In o lt re , u tili zza ndo il B o u rn e Sh ell d i UN IX , si p rog etti un al go rit m o ch e p re v ed a un nu m er o v ar ia b il e d i p ar am et ri (m agg io re o ugu al e a 3 ): il p rim o p ar am et ro d ev e e ss er e il no m e a ss o lu to d i un d ir ett o rio , il sec ondo un no m e re la ti vo d i d ir ett o rio , m en tr e i su cce ss iv i d evono ess er e si ngo li ca ra tt er i (C 1 , .. ., C k ). Il p rog ra mm a d ev e ce rca re n ell a g er ar ch ia sp ec if ica ta d al p rim o p ar am et ro tu tti i d ir ett o ri il cu i no m e re la ti vo co rr is pond e a l sec ondo p ar am et ro : si ripo rti il no m e a ss o lu to d i t ali d ir ett o ri su ll o st and ar d ou tpu t. In ognuno d ei d ir ett o ri t rov ati , si d evono id en ti fica re tu tti i fil e il cu i no m e in iz i con uno d ei ca ra tt er i d ati co m e p ar am et ri (C 1 , .. ., C k ): si ripo rti il no m e a ss o lu to d i t ali fil e su ll o st and ar d ou tpu t. Q u ind i, p er ognuno d ei d ir ett o ri t rov ati , si app li ch i il filt ro fil tr o c h e acce tt a c o m e p ar am et ri i no m i d i t u tti i fil e id en ti fica ti .

(13)

Esercizi Shell --

25 /* F ilt ro 18 L ug li o 1997 * /

# in cl ud e < st d io .h > # in cl ud e< fc n tl .h >

m ai n (a rg c, ar gv ) in t ar g c; ch ar ** ar gv ; { in t * fd , i, fin iti = 0 ; c h ar ca r;

if (a rg c< 2 ) { pu ts (" E rr o re p ar am et ri" ); ex it (- 1 ); }

fd = (in t* )m all o c( ar g c* si ze o f( in t)) ;

fo r ( i= 0 ;i < ar g c;i ++ ) { fd [i] = op en (a rgv [i] ,O _ R DON L Y ); if (f d [i] < 0 ) { p rin tf (" E rr o re in ap er tu ra fil e % s\ n ", ar gv [i+ 1 ]) ; ex it (- 2 ); } }

w h il e (f in iti < ar g c) { fo r ( i= 0 ;i < ar g c;i ++ ) { if (f d [i] > 0 ) if (r ea d (f d [i] ,& ca r,1 )> 0 ) w rit e( 1 ,& ca r,1 ); el se { fd [i] = -1 ; fin iti ++ ; } } }

fo r ( i= 0 ;i < ar g c;i ++ ) cl o se (f d [i]) ;

}

Eserc

/* S h ell 18 L ug li o 1997 * / # F il e c o m p it o ca se $# in 0 | 1 | 2 ) ec ho E rr o re n el nu m er o d ei p ar am et ri : $0 d ir ass d irr el C 1 ex it 1 ;; * ) ;; es ac ca se $1 in /* ) ;; * ) ec ho E rr o re : d ev e e ss er e il no m e a ss o lu to d i un a d ir ex it 2 ;; es ac ca se $2 in /* ) ec ho E rr o re : d ev e e ss er e il no m e re la ti vo d i un a d ir ex it 3 ;; * ) ;; es ac P A T H = $ P A T H :` p w d ` expo rt P A T H D IR A SS = $1 D IRR EL = $2 expo rt D IRR EL sh if t; sh if t fo r i i n $* do if te st `ec ho $ i | w c -c ` - g t 2 th en ec ho err o re i p ar am et ri dopo 2 d evono ess er e ca ra tt er i fi # oppu re : ca se $ i i n # ? ) OK un so lo ca ra tt er e ... don e

cd $ D IR A SS ce rca d ir $*

(14)

Esercizi Shell --

27 # fil e ce rca d ir

fo r i i n * do if te st -d $ i -a -x $ i th en cd $ i if te st $ i = $ D IRR EL th en ec ho T rov at a d ir ec to ry `p w d ` fo r j i n $* do fo r k in $ j* do if te st -f $k th en ec ho T rov at o fil e `p w d `/$k ec ho $k >> /t m p /t em p fi don e don e if te st -f /t m p /t em p th en filt ro `ca t /t m p /t em p ` rm /t m p /t em p fi fi ce rca d ir $* cd .. fi don e

Esercizi Shell --

28 E se m p io 4 c C o m p it o S is te m i O p er a tiv i 29 N ov em b re 1996

S i p rog etti , u tili zza ndo il li n g u agg io C e le p rim iti v e d i b ass o li v ell o ch e op er ano su i fil e, un filt ro

filtro

c h e p re v ed e n ar go m en ti d i i nvo caz ion e (c on n >= 1 ) ch e d evono ess er e c on si d er ati no m i d i fil e (F 1 ... F n ). Il filt ro fil tr o d ev e, face ndo u so d ell e fun zi o n i p ri m it iv e d i acce ss o ai fil e, ripo rta re su ll o st and ar d ou tpu t p er ogn i fil e F i p ass at o : a) il no m e d i t al e fil e; b ) un nu m er o d i li n ee d el fil e F i p ar i all a su a po si zi on e re la ti v a a ll 'in te rno d ell a li st a p ass at a: ci o é, p er il p rim o fil e (F 1 ) si d ev e sc riv er e la p rim a li n ea , p er il sec ondo fil e (F 2 ), le p rim e du e li n ee , p er l'n -e si m o fil e (F n ), le p rim e n li n ee .

Inoltre

, u tili zza ndo il B o u rn e Sh ell d i UN IX , si p rog etti un al go rit m o ch e p re v ed a tr e p ar am et ri: il p rim o p ar am et ro d ev e e ss er e il n o m e a ss o lu to d i un d ire tt o ri o c h e id en ti fica un a g er ar ch ia a ll 'in te rno d el fil e sy st em ; il sec ondo p ar am et ro si a il n o m e re la tivo d i un d ire tt o ri o ; il t er zo p ar am et ro d ev e ess er e il no m e re la ti vo d i un fil e (F ). Il p rog ra mm a d ev e ce rca re n ell a g er ar ch ia sp ec if ica ta tu tt e le g er ar ch ie G

st and ar d ou tpu t. In ognun a d ell e g er ar ch ie tr ov at e G co m e sec ondo p ar am et ro : si ripo rti il n o m e a ss o lu to d i t ali g er ar ch ie su ll o i id en ti fica te d al no m e re la ti vo d at o

es p lo raz ion e d i ogn i g er ar ch ia G i fil e le gg ib ili il cu i no m e si a F (te rz o p ar am et ro ). A l t er m in e d ell a i , si d evono ce rca re tu tti

d is tr ugg er n e il con te nu to p rece d en te ). fil e F tr ov ati . L 'ou tpu t d i qu es to filt ro v a rid ir ett o in u sc it a su l fil e F 1 (s en za ch e acce tt a un in si em e v ar ia b il e d i p ar am et ri ch e d evono ess er e i no m i d ei all 'u te n te il no m e d i un fil e (F 1 ) e qu ind i si d ev e a pp li ca re la fun zi on e fil tr o i , si d ev e ric h ie d er e in te ra tti v am en te

(15)

Esercizi Shell --

29 #29nov96 .s h d ir ass o lu to d irr el ati vo no m ef il e

ca se $# in 3 ) ;; * ) ec ho E rr o re : U sa g e is $0 d ir ass o lu to d irr el ati vo no m ef il e ex it;; es ac ca se $1 in /* ) ;; * ) ec ho E rr o re : $1 non d ir ass o lu to ex it;; es ac ca se $2 in /* ) ec ho E rr o re : $2 non d irr el ati vo ex it;; * ) ;; es ac ca se $3 in /* ) ec ho E rr o re : $3 non no m ef il e re la ti vo ex it;; * ) ;; es ac

if te st ! - d $1 th en ec ho E rr o re : P rim o p ar am et ro non un d ir ett o rio ex it fi

P A T H = $ P A T H :` p w d ` expo rt P A T H

cd $1 tr ov ag er ar ch ia $2 $3

Eserc

# tr ov af il e no m ef il e if te st -f $1 -a -r $1 th en ec ho `p w d `/$1 >> /t m p /t em p fi fo r i i n * do if te st -d $ i -a -x $ i th en cd $ i tr ov af il e $* cd .. fi don e

# tr ov ag er ar ch ia no m ed ir no m ef il e fo r i i n * do if te st -d $ i -a -x $ i th en cd $ i if te st $ i = $1 th en ec ho T rov at a g er ar ch ia `p w d ` tr ov af il e $2 if te st -s /t m p /t em p th en ec ho D amm i il no m e d el fil e su cu i app end er rea d f filt ro `ca t /t m p /t em p ` >> $ f rm /t m p /t em p fi fi tr ov ag er ar ch ia $1 $2 cd .. fi don e

(16)

Esercizi Shell --

31 # in cl ud e < st d io .h > # in cl ud e < st d li b .h > # in cl ud e < fc n tl .h > # in cl ud e < st ring .h > vo id h ea d (f w , fr , n ) in t fw ; i n t fr ; i n t n ;

/* la fun zi on e h ea d () sc riv e su l fil e fw , n li n ee d el fil e fr * / { in t i ; ch ar c;

i = 1 ; w h il e (r ea d (f r, & c, 1 )) { w rit e( fw , & c, 1 ); if (c == '\n ') { i++ ; if (i > n ) r et u rn ; } } }

Esercizi Shell --

32 m ai n (a rg c, ar gv ) in t ar g c; ch ar ** ar gv ; { in t * fd , i; ch ar eo ln = '\n ';

if (a rg c < 2 ) { pu ts (" E rr o re n el nu m er o d i p ar am et ri" ); ex it (- 1 ); } /* con tr o lli am o ch e si a st at o in se rit o al m eno un p ar am et ro * / fd = (in t * ) m all o c( ar g c - 1 ); /* all o ch ia m o un nu m er o d i i n te ri (c h e con te rr anno fil e d es cr ip to r) p ar i al nu m er o d i u lt er io ri fil e p ass ati co m e p ar am et ri * / fo r ( i = 1 ; i < ar g c; i ++ ) /* ci cl o d i ap er tu re d eg li u lt er io ri fil e c on re la ti v i con tr o lli * / if (( fd [i- 1 ] = op en (a rgv [i] , O _ R DON L Y )) < 0 ) { pu ts (" E rr o re in ap er tu ra ") ; ex it (- 3 ); }

fo r ( i = 1 ; i < ar g c; i ++ ) /* p er ogn i u lt er io re fil e * / { w rit e( 1 , ar gv [i] , st rle n (a rgv [i] )) ; /* sc riv ia m o il suo no m e * / w rit e( 1 , & eo ln , 1 ); /* con il ca ra tt er e d i E O L N e po i * / h ea d (1 , fd [i- 1 ], i) ; /* sc riv ia m o un nu m er o d i li n ee p ar i all a po si zi on e re la ti v a n ell a li st a * / }}

(17)

Esercizi Shell --

33 E se rc iz io 5 c C O M P IT O D I S IS TE M I O P E RA T IV I 5 O tt o b re 1994

S i p rog etti , u tili zza ndo il li ngu agg io C e le p rim iti v e d i b ass o li v ell o ch e op er ano su i fil e, un filt ro filt ro ch e p re v ed e tr e a rgo m en ti d i invo caz ion e. Il p rim o p ar am et ro d ev e e ss er e c on si d er at o co m e un nu m er o in te ro (N ), m en tr e g li alt ri du e ra pp re se n ta no du e no m i d i fil e (f 1 e f2 ). I l filt ro d ev e ripo rta re su ll o st and ar d ou tpu t un a "f u si on e" d el con te nu to d ei du e fil e f1 e f2 . P iu ' p rec is am en te si d ev e ripo rta re in u sc it a N ca ra tt er i d el fil e f1 , po i N ca ra tt er i d el fil e f2 e c o si ' v ia .

Ino lt re , u tili zza ndo il B ou rn e S h ell d i UN IX , si p rog etti un al go rit m o ch e p re v ed a tr e p ar am et ri: il p rim o p ar am et ro si a il no m e a ss o lu to d i un d ir ett o rio , il sec ondo p ar am et ro si a il no m e a ss o lu to d i un fil e, m en tr e il t er zo si a un a st ring a. Il p rim o p ar am et ro d et er m in a un a g er ar ch ia d el fil e sy st em ch e h a o rig in e d a ta le d ir ett o rio . In ta le g er ar ch ia , si ce rc h ino tu tti i fil e il cu i no m e c on ti en e la st ring a p ass at a c o m e te rz o p ar am et ro (in un a qu al unqu e po si zi on e) . P er ognuno d ei fil e tr ov ati , si d ev e sc riv er n e il no m e a ss o lu to su ll o st and ar d ou tpu t e si d ev e ric h ie d er e in te ra tti v am en te a ll 'u te n te un nu m er o in te ro N . Q u ind i si app li ch i il filt ro filt ro d i cu i sop ra , p ass andog li co m e p ar am et ri : 1 ) il v al o re d i N , 2 ) il no m e d el fil e tr ov at o , 3 ) il sec ondo p ar am et ro d el fil e c o m and i.

Eserc

# co m p it o d ir fil ea ss s tr ing a

ca se $# in 0 | 1 | 2 ) ec ho E rr o re : U so $0 d ir fil e st ring a ex it 1 ;; * ) if te st ! - d $1 th en ec ho D ir ett o rio $1 in es is te n te ex it 2 fi;; es ac

P A T H = $ P A T H :$ HO M E expo rt P A T H

cd $1 sca n $2 $3

(18)

Esercizi Shell --

35 # sca n fil ea ss s tr ing a

fo r i i n *$2* do if te st -f $ i th en if te st -r $ i th en ec ho fil e `p w d `/$ i ec ho In se ris ci nu m er o rea d ar g filt ro $ ar g $ i $1 el se ec ho fil e `p w d `/$ i non acce ss ib il e in le tt u ra fi fi don e

fo r i i n * do if te st -d $ i -a -x $ i th en cd $ i sca n $* cd .. fi don e

Esercizi Shell --

36 /* qu es to è il filt ro * /

# in cl ud e < st d io .h > # in cl ud e < fc n tl .h >

m ai n (a rg c, ar gv ) in t ar g c; ch ar ** ar gv ; { in t fd1 , fd2 , N , n rea d1 , n rea d2 ; ch ar *bu ff 1 , *bu ff 2 ;

if (a rg c != 4 ) { pu ts (" E rr o re n el nu m er o d i p ar am et ri" ); ex it (- 1 );}

N = at o i( ar gv [1 ]) ;

if (( fd1 = op en (a rgv [2 ], O _ R DON L Y )) < 0 ) { pu ts (" E rr o re n ell 'a p er tu ra p rim o fil e" ); ex it (- 2 );}

if (( fd2 = op en (a rgv [3 ], O _ R DON L Y )) < 0 ) { pu ts (" E rr o re n ell 'a p er tu ra sec ondo fil e" ); ex it (- 2 );}

bu ff 1 = (c h ar * ) m all o c( N ); bu ff 2 = (c h ar * ) m all o c( N );

(19)

Esercizi Shell --

37 w h il e ((( n rea d1 = rea d (f d1 , bu ff 1 , N )) > 0 ) && (( n rea d2 = rea d (f d2 , bu ff 2 , N )) > 0 ) ) { w rit e (1 , bu ff 1 , n rea d1 ); w rit e (1 , bu ff 2 , n rea d2 ); }

if (n rea d1 > 0 ) w rit e (1 , bu ff 1 , n rea d1 );

w h il e (( n rea d1 = rea d (f d1 , bu ff 1 , N )) > 0 ) w rit e (1 , bu ff 1 , n rea d1 );

w h il e (( n rea d2 = rea d (f d2 , bu ff 2 , N )) > 0 ) w rit e (1 , bu ff 2 , n rea d2 );

cl o se (f d1 ); cl o se (f d2 ); fr ee (bu ff 1 ); fr ee (bu ff 2 ); }

Esercizi

E se rc iz io 6 c C o m p it o d i S is te m i O p er a tiv i 7 N ov em b re 1996

S i p rog etti u tili zza ndo il li n g u agg io C e le p ri m it iv e d i b a ss o li op er ano su i fil e un filt ro

filtro

, ch e p re v ed e du e a rgo m en ti d i i nvo caz d evono ess er e c on si d er ati nu m er i i n te ri po siti v i (N 1 e N 2 ). Il filt face ndo u so d ell e fun zi on i p rim iti v e d i acce ss o ai fil e, ripo rta re su ll o ou tpu t un a se lez ion e d ei ca ra tt er i d ell o st and ar d inpu t: i n u sc it ess er e ripo rta ti so lo i ca ra tt er i il cu i cod ice a sc ii è c o m p re so tr a N 1 ed

Ino lt re , u tili zza ndo il B o u rn e Sh ell d i U n ix , si p rog etti un al go rit p re v ed a du e p ar am et ri: il p rim o p ar am et ro d ev e e ss er e il no m d ir ett o rio ass o lu to ; il sec ondo p ar am et ro d ev e e ss er e c on si d er at o un nu in te ro po siti vo (N 1 ). Il p rog ra mm a d ev e d app rim a ric h ie d er e a ll ’u nu m er o in te ro po siti vo (N 2 ) ch e d ev e e ss er e m agg io re d i N 1 . Q u v er if ica re n ell a g er ar ch ia id en ti fica ta d al p rim o p ar am et ro (d al li p ar te n za in po i) se i fil e le gg ib ili h anno un a d im en si on e m ino re m agg io re d i N 2 , oppu re c o m p re sa tr a N 1 ed N 2 . P er ogn i fil e le gg v er if ica la c ond iz ion e d i av er e la d im en si on e c o m p re sa tr a N 1 ed N app li ca re il filt ro

filtro

u sa ndo il fil e c o m e st and ar d inpu t e p ass andog p ar am et ri i du e nu m er i N 1 ed N 2 .

(20)

Esercizi Shell --

39 F ILT R O # in cl ud e < st d io .h > # in cl ud e < st d li b .h >

m ai n (in t ar g c, ch ar ** ar gv ) { in t N 1 , N 2 ; in t n rea d ; ch ar bu f;

N 1 = at o i( ar gv [1 ]) ; N 2 = at o i( ar gv [2 ]) ;

w h il e(( n rea d = rea d (0 ,& bu f,1 )) > 0 ) if ((( in t) bu f>= N 1 ) && (( in t) bu f<= N 2 )) w rit e( 1 , & bu f, 1 ); }

Esercizi Shell --

40 S H ELL

#71196 d ir ass N 1

ca se $# in

0 |1 ) ec ho err o re a rgo m en ti; ex it 1 ;;

2)

if te st -d $1 -a -x $1 th en cd $1 el se ec ho err o re d ir ett o rio ass o lu to ex it fi ;;

P A T H = $ P A T H :d ir ett o riodov es ta il fle expo rt P A T H

ec ho imm etti nu m er o in te ro po siti vo rea d N 2 w h il e te st $ N 2 -le $2 do ec ho err o re su l nu m er o re in se ris ci rea d N 2 don e

es p lo ra $ N 1 $ N 2

(21)

Esercizi Shell --

41 # es p lo ra

fo r i i n * do if te st -d $ i -a -x $ i th en cd $ i es p lo ra $* cd .. fi if te st -f $ i -a -r $ i th en d im = ’w c -c $ i’ if te st $d im -lt $1 th en ec ho d im en si on e m ino re d i N 1 fi if te st $d im -g t $2 th en ec ho d im en si on e m agg io re d i N 2 fi if te st $d im -g e $1 -a $d im -le $2 th en ec ho d im en si on e c o m p re sa tr a N 1 e N 2 filt ro $1 $2 < $ i fi fi don e

Eserc

A L CUN I S E M P L IC I E S E RC IZ I S U I P R O C E SS I I N UN IX

/* * un p ro ce ss o g en er a N p ro ce ss i fig li * / # in cl ud e < st d io .h >

m ai n (in t ar g c, ch ar * ar gv []) { in t i , N ; in t p id ;

if (a rg c < 2 ) { p rin tf (" U S O : % s N \ng en er a N p ro ce ss i fig li\ n \n ", ar gv [0 ]) ; ex it (0 ); }

N = at o i( ar gv [1 ]) ; p rin tf (" p ad re % d g en er a % d fig li\ n ", g et p id () , N );

fo r ( i= 0 ; i < N ; i ++ ) { if (( p id = fo rk ()) < 0 ) { p rin tf (" E rr o re n ell a fo rk \n \n ") ; ex it (1 ); } if (p id == 0 ) /* il fig li o * / { p rin tf (" fig li o % d d el p ad re % d \n ", g et p id () , g et pp id ()) ; b rea k ; / * es ce d al ci cl o * / } } }

(22)

Esercizi Shell --

43 /* un p ro ce ss o g en er a N p ro ce ss i fig li * po i att end e c h e tu tti i fig li si ano te rm in ati * / # in cl ud e < st d io .h > m ai n (in t ar g c, ch ar * ar gv []) { in t i , N ; in t p id , st at u s; if (a rg c < 2 ) { p rin tf (" U S O : % s N \ng en er a N p ro ce ss i fig li\ n \n ", ar gv [0 ]) ; ex it (0 ); }

N = at o i( ar gv [1 ]) ; p rin tf (" p ad re % d g en er a % d fig li\ n ", g et p id () , N ); fo r ( i= 0 ; i < N ; i ++ ) { if (( p id = fo rk ()) < 0 ) { p rin tf (" E rr o re n ell a fo rk \n \n ") ; ex it (1 ); } if (p id == 0 ) /* il fig li o * / { p rin tf (" fig li o % d d el p ad re % d \n ", g et p id () , g et pp id ()) ; b rea k ; / * es ce d al ci cl o * / } } if (p id != 0 ) { p rin tf (" g en er ati % d fig li\ n ", N ); fo r ( i= 0 ; i < N ; i ++ ) { p id = w ait (& st at u s) ; p rin tf (" il fig li o % d h a te rm in at o con st at o % d \n ", p id , (s ta tu s>> 8 )) ; } } el se e x it (i) ; }

Riferimenti

Documenti correlati

Spiegare, tramite un disegno, come il suo integrale pu` o essere definito tramite le somme di Riemann inferiori e superiori.. Enunciare il teorema fondamentale del

Analisi Matematica 1 (Informatica, Universit` a di Cagliari), 2007/2008 Scritto Generale, 22 Ottobre 2010, Soltanto Studenti Fuori Corso Cognome e nome:... Enunciare il

Fondamenti di Fisica Matematica: Secondo parziale 12.06.2012. Cognome

La matrice del sistema lineare ` e tri- diagonale con elementi

Fondamenti di Fisica Matematica: Secondo parziale 12.12.2014.. Cognome

Consideriamo il pendolo semplice, dove un punto materiale di massa m ` e vincolato a muoversi su una circonferenza liscia situata nel piano xz.. Trovare la forza

Un corpo di massa m si muove nel piano xz sotto l’effetto della forza gravitazionale e di una forza di attrito orizzontale proporzionale alla velocit` a orizzontaleb. Determinare

In tal caso il baricentro del rettangolo totale viene calcolato come baricentro dei suddetti punti