Documente Academic
Documente Profesional
Documente Cultură
Suportlaborator
12.Shellscripting[http://books.google.com/books?id=_JFGzyRxQGcC&pg=PA365] PuteiurmritutorialulvideocorespunztorlaboratoruluifcutdeITAssistant
[http://itassistant.org/diverse/utilizareasistemelordeoperare/utilizareasistemelordeoperare10.html].
Cheatsheet
Comand Descrierescurt
s e d a w k
prelucrareaunuifluxdedate prelucrareaunorfiieretext
Arhivlaborator
lab11.tar.gz
Introducere
bashfunctions
AacumntrunprogramCputemfolosifunciipentruafaceprogramulmailizibilputemfaceacelailucruin Bash. OfuncieBashnuestealtcevadectoconstruciedeforma
n u m e _ f u n c t i e( ) { c o d _ f u n c t i e }
Variabiledemediu
Variabileledemediusuntunsetdevariabilecareafecteazmodulncareunprogramruleaz.ngeneral,unproces motenetevariabileledemediualeprocesuluiprinte.Astfel,pentruprocesulasociatrulriiuneicomenzi,sunt motenitevariabileleshellului. Pentruavedeavariablieledemediudefinite,putemfolosicomandae n v frniciunparametru.
s t u d e n t @ u s o : ~ $e n v
Pentruadefiniovariabildemediufolosim:
s t u d e n t @ u s o : ~ $e x p o r tV A R I A B L E = v a l u e
FunciivsaliasvsscriptnPATH
OaltmodalitatedeaextindeBashestesfolosimaliasuri.nfiierul. b a s h r c aveictevaaliasuridefinite,le puteilistautilizndcomandaa l i a s . Una l i a s sedefinetetotutilizndcomandaa l i a s .
s t u d e n t @ u s o : ~ $a l i a sm y _ p w d = ' e c h o" " ;p w d ;e c h o" " '
Pentruasalvaunaliaslvomscrien. b a s h r c . Cumalegemcefolosim? Folosimscripturidacscopullorestelocaldirectoruluincareledefinimproiectuluincarelefolosim.Dacvrem sfolosimscripturioriundensistemvatrebuisleadugmlaP A T H sauslefolosimmereucucaleaabsolut sauslecopiemntrundirectordejaaflatnP A T H .Ultimaalternativvacauzaproblemelareinstalareasistemului deoperare. Pentrucomenzilecompusedesfolositeserecomandfolosireaunuialiassauauneifuncii,ambelesalvaten . b a s h r c .Folosimaliascndargumentelepotrmnenespecificatencomand(deexemplua l i a s l l = ' l sl 'functioneazdeoarececaleadelistatvafimereulafinal).nrest,folosimfuncii.Deexemplun cazulncarevremcanmomentulncareajungemntrundirectorsseafiezedirectorulcurent,comandaarfic d $ d i r ;p w d inumaiputemfolosiunalias.Soluiaestesdefinimofuncie:
m y _ c d ( ) { c d$ 1 p w d }
regex
Expresiileregulatesuntometoddeadefiniunirdupcarefacemocutare. Oexpresieregulatpoatefiformardintrunsimplucaractersauir.Atuncicndcutmutilizndg r e p ,noi scriem,deobicei,oexpresieregulat.
Expresiileregulateneoferposibilitateadeaspecificaolistdecaracterecarearputeaexistafolosind [ c h a r a c t e r s ] .
s t u d e n t @ u s o : ~ $l s|g r e p' [ a b ] ' [ . . . ]
Putemdaunintervaldecaractereutiliznd.Pentruoricecaracteralfanumeric,folosim:
' [ a z A Z 0 9 ] '
Deasemenea,avemposibilataeadeaspecificao r i c e
s t u d e n t @ u s o : ~ $l s|g r e p' . ' [ . . . ]
c a r a c t e r utilizndcaractreulpunct:.
Expresiademaisussepotrivetecuoriceircarencepecua isetermincub .Pentru* ,vedeimaijos. ncontextulactual,caracterul* nespunecocricecaractercareseaflnaintesepoaterepetadeoricteori (incluzndniciodat).Acestaestemotivulpentrucare. * facematchpeorice( o r i c ec a r a c t e rd e o r i c t eo r i ) .Pentruadefiniunircareareorictecaracteredea lanceputulirului,scriem:
' ^ a * '
case
Construciac a s e esteasemntoareluis w i t c h dinC/C++nBash,fiindoprescurtarepentrumaimulte construciiif/then/else.Totuivaloarea,asociatunuibloc,cucaresecomparoutputulexpresieipoatefinunumai unnumr,daritextsauoexpresieregulat.
c a s ee x p r e s i ei n a b l o n 1) b l o c 1; ; a b l o n 2) b l o c 2; ; . . . e s a c
Spresupunemcavemunscriptcareprimetecaparametruuncuvnt,iafieazunmesaj:
c a s e$ 1i n a * )e c h o' A mg s i tu nc u v n dc a r e n c e p ec u" a " ' ; ;
b ? )e c h o' A mg s i tu nc u v n td i nd o u l i t e r e , ip r i m ae s t e" b " ' ; ; c [ d e ] )e c h o' A mg s i tu n" c d "s a u" c e " ' ; ; a | e | i | o | u)e c h o' A mg s i tov o c a l ' ; ; *) e c h o' N ua mg s i tn i c iop o t r i v i r e ' e s a c
sed
s e d esteunutilitarcepermitetransformareaanumitorsecvenedetext.Acestacitetefiiereledeintrareliniecu
linie,apoimodificfiecareliniecorespunztorregulilorspecificatentrunlimbajsimplu,iafieazlinia.Se evideniazfadeuneditordetext(ex.vim)prinfaptulcpoateaplicaaceletransformripeunfluxdedate,de exempludintrunpipe. Sintaxaderulareeste:
s e dc o m e n z if i i e r _ i n t r a r e
Sintaxauneicomenzisedsedeste:
[ a d r e s a ] [ f u n c t i e ] [ a r g u m e n t e ]
Ctevaopiuniacceptate:
awk
a w k esteunutilitar,dariunlimbajdeprogramare,folositpentruprelucrareafiierelortext.Unfiierestetratatcao
succesiunedenregistrrirecords.Implicitnregistrrilesuntdelimitateprincaracterulnewline('\n'),onregistrare reprezentndolinie(recordseparator). Fiecarenregistrareestempritntrosuccesiunedecmpuri(f i e l d s ),delimitateimplicitprincaracterulspaiu ''(fieldseparator).Astfel,primulcuvntdepeolinieputemspunemcesteprimulcmp,aldoileacuvntesteal doileacmpetc. Unprogramawkreprezintosuccesiunedeperechiablonaciune:
c o n d i i e{a c i u n e}
a w k preiadelaintrarecteolinie,cutndopotrivirepentrufiecareablondinprogram.Pentrufiecarepotrivire,
aciuneaasociataceluiablonesteexecutat. Pentruarulaa w k ,putemfolosiurmtoareledoumoduri: Precizminstruciunilepecaresleexecuteawkcaparametru:
a w k[ o p i u n i ]' i n s t r u c i u n i '[ f i i e r e _ i n t r a r e ]
Artmncontinuarecumamputeaextragenumeleutilizatorilordin/ e t c / p a s s w d :
a w kF' : '' { p r i n t$ 1 } '/ e t c / p a s s w d
Explicaii: Deoarecedelimitatorulimplicitpentrucmpurifolositestecaracterulspaiu,trebuieslschimbmn caracterul':',folosindopiuneaF .Maimult,putemchiarprecizacadelimitatorpentrucmpurioexpresie regulat. Pentruareferiuncmpdintronregistrare(ncazulnostruolinie),folosimconstrucia$1pentruprimul cmp,$2pentrualdoilea,etc.Reineicprin$0obinemtoatlinia. Pentruaafialaieirefolosimfunciap r i n t f ,asemntoarecufunciadinC. Observaicnuamprecizatunablon,doaroaciune.Dacnuesteprecizatunablonawkfacematchpe oricelinie. Scrieminstruciunilentrunfiierispunemlarulareslepreiadinfiier:
a w k[ o p i u n i ]ff i i e r _ c u _ i n s t r u c i u n i . a w k[ f i i e r e _ i n t r a r e ]
Explicaii:
B E G I N iE N D permitspecificareaunoraciunicaresseexecutelanceputul,respectivsfritul
prelucrrii. Aiciavemunexempludeunablonmaicomplex.Acestaprecizeazssefacpotrivireapentruexpresia regulatdupcaracterul'~'doarpentrucmpulal7leadinnregistrare. na w k putemfolosivariabile(nuenevoiesprecizmtipullor)ioperaiiaritmetice.
Exerciii
1.Changingtheprompt
Promptulpoateficonfiguratprinmodificareavariabilelor$ P S 1 i$ P S 2 .Modificaipromptulastfelnctn momentulateptriiuneicomenziacestasfie'':?''iarpeliniileurmtoare''...''. Demonstraifuncionalitatearulndocomandpemaimulternduri. Modificareaacestorvariabileestevizibildoarnprocesulcurent. Prompttricolor:
e x p o r tP S 1 = " \ e [ 0 ; 3 1 m [ \ u \ e [ m @ \ e [ 0 ; 3 2 m \ h\ e [ m\ e [ 0 ; 3 5 m\ W ] \ $\ e [ m"
Rezolvare
$P S 1 = ' : ?' : ?P S 2 = ' . . .' : ?l s ;\ . . .p w d
2.PATH.which
Navigaindirectorul~ incercaisrulais p e c i a l _ v a r s . s h fradacaleacompletspreacesta(exactla felcumarfuncional s ).Observaicnusepoaterula(primiieroare). Adugatidirectorulncareseaflas p e c i a l _ v a r s . s h lavariabilademediu$ P A T H .
s t u d e n t @ u s o : ~ $P A T H = $ P A T H : < d i r e c t o r u l _ u n d e _ s e _ a f l a _ s p e c i a l _ v a r s . s h >
3.Funcii
Urmriiconinutulfiieruluif c t _ e x a m p l e . s h :
# ! / b i n / b a s h f( ){ e c h o" fa p e l a t ac u "$ #" a r g u m e n t e " e c h o" P r i m u la r g u m e n te s t e$ 1 " e c h o } f1234 f2 f3 s t u d e n t @ u s o : ~ / l a b 1 1 $. / f c t _ e x a m p l e . s h fa p e l a t ac u4a r g u m e n t e P r i m u la r g u m e n te s t e1 fa p e l a t ac u1a r g u m e n t e P r i m u la r g u m e n te s t e2 fa p e l a t ac u1a r g u m e n t e P r i m u la r g u m e n te s t e3
f/ t m p f/ e t c f/ h o m e f/ v a r f/ v a r / l o g f/ d e v f/ p r o c
4.FunciivsaliasvsscriptnPATH
Citiiparteadinintroducerecuacelaititlu. Rulatiscriptulu p d a t e _ b a s h . s h coninutulluinuesterelevantacum.Acestafaceupdaten. b a s h r c adugndctevafunciiialiasurinoi. Faceis o u r c e pe. b a s h r c duprulareau p d a t e _ b a s h . s h !! Observaicw h i c h nufuncioneazdectpeexecutabileaflatenP A T H .Pentruaaflatipuluneicomenzi, folosimt y p e . Folosiit y p e pentruavedeatipulcomenzilorintrodusen. b a s h r c iexplicaicefacefiecaredinele eventual,prinrularealor:
v i _ a l l l s _ s i z e
5.grep
Amintiivconceptuldepipe.Putemtrimiteoutputuluneicomenzictreinputulalteia:
s t u d e n t @ u s o : ~ / l a b 1 1 $l sl R|g r e po v e r r w r r -1s t u d e n ts t u d e n t02 0 1 0 0 8 1 71 5 : 3 8o v e r l o r d r w r r -1s t u d e n ts t u d e n t02 0 1 0 0 8 1 71 5 : 3 8o v e r s e e r
sau
s t u d e n t @ u s o : ~ $c a ts t a r c r a f t . t x t|g r e pit h e
6.grep.Regularexpressions.
Comandag r e p folosete,pentruaspecificaabloane,unlimbajnumitregularexpressions. Folosiig r e p ifiieruls t a r c r a f t . t x t pentruagsitoateliniilecarencepcucuvntulT h e .
Liniilecarenuconinspaiialbe. Rezolvare
s t u d e n t @ u s o : ~ $c a t' ' r a n d o m _ s t u f f ' '|g r e pv''
Liniilecareconinosingurcifr. Rezolvare
s t u d e n t @ u s o : ~ $c a t' ' r a n d o m _ s t u f f ' '|g r e p' ^ [ 0 9 ] $ '
Liniilecareconinunnumr(orictecifre). Rezolvare
s t u d e n t @ u s o : ~ $c a t' ' r a n d o m _ s t u f f ' '|g r e p' ^ [ 0 9 ] * $ '
7.Instruciuneacase
Directorulrandom_filesconineunsetdefiiere.Afiaiconinutulfiiereloralcrornumencepeculitera' f 'saual crornumeconinecaracterul' _ ',nordinealfabetic,ignornddiferenelentreliteremiciimari.Folosii
i n s t r u c i u n e ac a s e
Rezolvare
d o n e
8.Advancedtextprocessing(sed,awk)
Fiierulheroes2coninenumeleeroilordinStarcraftnformatul
n u m ep r e n u m er a s
9.xargs
Folositixargs+findpentruastergefisierele.tmpdinstructuradedirectoaret e m p _ f i l e s . Rezolvare
f i n dt e m p _ f i l e s /n a m e" * . t m p "t y p efp r i n t|x a r g sr mf
10.Networkstatistics
Scrietiunscriptcareprimestecaparametruointerfataderetea.Scriptulafiseazaadresaipainterfeteideretea, dacaexista.Dacainterfatanuareadresaipafiseazaunmesajcorespunzator. Modificaiscriptulastfelnctdacseprimeteargumentulpacketssevorafiainumruldepachetetrimisei recepionatedeinterfaarespectiv. Hint:Consultaifiiereledin/proc/net. Rezolvare
# ! / b i n / b a s h i f[$ #e q0] ;t h e n e c h o" U s a g e :$ 0< i n t e r f a c e _ n a m e >[ p a c k e t s ] " e x i t1 f i
#S ef o l o s e t eo u t p u t u lc o m e n z i i' i p 'p e n t r uav e d e ac ea d r e s eI Ps u n tc o n f i g u r a t e i p _ a d d r 4 = $ ( i pa d d r e s ss h o wd e v$ 1|g r e p" i n e t"|a w kF ''' { p r i n t$ 2 } ' ) i p _ a d d r 6 = $ ( i pa d d r e s ss h o wd e v$ 1|g r e p" i n e t 6"|a w kF ''' { p r i n t$ 2 } ' ) #S ea f i e a z a d r e s e l eI Ps a uu nm e s a jc o r e s p u n z t o r i f[z" $ i p _ a d d r 4 "]& &[z" $ i p _ a d d r 6 "] ;t h e n e c h o" N oI Pa d d r e s so ni n t e r f a c e$ 1 " e l s e e c h o" I P v 4 : "$ i p _ a d d r 4 e c h o" I P v 6 : "$ i p _ a d d r 6 f i e c h o #D a c a ld o i l e ap a r a m e t r ue s t e" p a c k e t s " ,s ec i t e s ci n f o r m a i i l e #c o r e s p u n t o a r ed i n/ p r o c / n e t / d e v i f[" $ 2 "= =" p a c k e t s "] ;t h e n e c h on" R e c i e v e dp a c k e t s :" c a t/ p r o c / n e t / d e v|g r e p$ 1|a w kF ''' { p r i n t$ 3 } ' e c h on" S e n tp a c k e t s :" c a t/ p r o c / n e t / d e v|g r e p$ 1|a w kF ''' { p r i n t$ 1 1 } ' f i
11.ScriptDownloader
RealizatiunscriptcareprimestecaparametruunURLsiincearcadescarcareaacestuiafolosindutilitarulw g e t . Dacaurlulestenevalid,vaafisaunmesajdeeroare. Dacafisieruldescarcatesteoarhiva(dpdvalextensiei),vaincercasaodezarhiveze.Incazulincarearhivaeste nevalida,vaafisaunmesajdeeroare. Inoricealtcaz(paginaweb,html),scriptulvalistaURLuriledescoperiteinfisieruldescarcat.Folositiexpresii regulatepentruadescoperiURLurile. FolositipentrutestareURLurile:
h t t p : / / o c w . c s . p u b . r o / c o u r s e s / _ m e d i a / u s o / l a b o r a t o a r e / l a b 1 0 . t a r . g z
[ h t t p : / / o c w . c s . p u b . r o / c o u r s e s / _ m e d i a / u s o / l a b o r a t o a r e / l a b 1 0 . t a r . g z ] h t t p : / / g o o g l e . r o / d o e s n o t e x i s t[ h t t p : / / g o o g l e . r o / d o e s n o t e x i s t ]
h t t p : / / o c w . c s . p u b . r o / c o u r s e s / u s o /
[ h t t p : / / o c w . c s . p u b . r o / c o u r s e s / u s o / ]
Rezolvare
# ! / b i n / b a s h #V e r i f i c d a c af o s tp r i m i tu np a r a m e t r u( l i n k u l ) i f[$ #e q0] ;t h e n e c h o" N o t h i n gt od o .U s a g e :$ 0< U R L > " . e x i t1 f i U R L = $ 1 #D o w n l o a d e a z c o n i n u t u ld el al i n k . w g e t$ U R L& > / d e v / n u l l #V e r i f i c d a c af o s td o w n l o a d a tc us u c c e s . i f[$ ?g t0] ;t h e n e c h o" U R Li sn o tv a l i d " e x i t2 f i #E x t r a g eu l t i m ap a r t ed i nU R L . f i l e = $ ( e c h o$ U R L|a w kF ' / '' { p r i n t$ N F } ' )
#V e r i f i c e x t e n s i a .D o a rp e n t r ut i p u r i l eu z u a l ed ea r h i v e . c a s e$ f i l ei n * . t a r . g z ) u n a r c h = " t a rx z f " ; ; * . z i p ) u n a r c h = " u n z i p$ f i l e " ; ; e s a c # n c e a r c d e z a r h i v a r e a . i f[n" $ u n a r c h "] ;t h e n $ u n a r c h$ f i l e i f[$ ?g t0] ;t h e n " S o m e t h i n gw r o n gw i t ht h ea r c h i v e " e x i t3 f i
f i
e c h o" S u c c e s s ! " e x i t0
12.ScriptImageUtility
Scrietiunscriptcareprimesteoimaginecaparametrusiafiseazainformatiidespreaceasta:tipsidimensiune (width,height). Adaugatiunparametrur/resizescriptuluicaresapermitaredimensionareaimaginiilaolatimeprimitacaparametru. FolositiutilitareleImageMagick,comandac o n v e r t (pecarevatrebuisaoinstalati) Rezolvare
# ! / b i n / b a s h i f[$ #e q0] ;t h e n e c h o" U s a g e :$ 0< i m a g e >[ r / r e s i z ew i d t h ] " e x i t1 f i #A f i e a z t i p u l id i m e n s i u n e ai m a g i n i i i d e n t i f y$ 1|a w kF ''' { p r i n t$ 2""$ 3 } ' i f[" $ 2 "= =" r "]| |[" $ 2 "= =" r e s i z e "] ;t h e n i f[z" $ 3 "] ;t h e n e c h o" A s k e df o rr e s i z e ,b u tn ow i d t hp r o v i d e d " e x i t2 f i #R e d i m e n s i o n e a z i m a g i n e a ,e s t es a l v a t at e m p o r a r na l tf i i e r i m a g e = $ ( e c h o$ 1|a w kF ' / '' { p r i n t$ N F } ' ) c o n v e r t$ 1r e s i z e$ 3 x $ 3r e s i z e _ $ i m a g e m vr e s i z e _ $ i m a g e$ 1 f i
uso/laboratoare/laborator11.txtLastmodified:2013/01/1516:56bysorina.sandu