Sunteți pe pagina 1din 5

Substituirea

Comenzilor
0
Majoritatea comenzilor Unix i Linux au de-a face cu fi iere i directoare. n plus,
sistemul de fi iere suport o vast ierarhie a directoarelor, fapt ce se datoreaz multitudinii
seturilor de comenzi n Unix i Linux, ceea ce duce la comenzi lungi i complicate. crie
incorect n numele director i vei putea terge date cruciale, pierde un !ac"up important, sau,
po i risca s strici sistemul.
u!stituirea comenzilor a aprut pentru prima orar n #$ourne shell#, introdus cu
Unix %th &dition, lansat n '(%( i a rmas caracteristic tuturor versiunilor de shell-uri Unix
aprute ulterior.
Substituirea de comenzi se refer la capacitatea shell-ului de a insera, n orice
moment, ie irea standard a unei comenzi ntr-o linie de comand. n shell exist ) modalit i
de a efectua su!stituirea unei comenzi* prin punerea unei comenzi ntre apostrofuri ntoarse
sau ntre paranteze rotunde precedate de sim!olul #+#.
Apostrofurile ntoarse, spre deose!ire de celelalte tipuri de apostrofuri, nu au ca scop
protejarea caracterelor de ctre shell. ,cestea i vor comunica shell-ului s execute comanda
cuprins ntre ele i s insereze ie irea standard -din acel moment. a comenzii, n linia de
comand. /ormatul general pentru utilizarea apostrofurilor ntoarse este*
0comand0
unde comand este numele comenzii ce urmeaz s fie executat i a crei ie ire va fi
inserat la momentul respectiv.
&xemplu*
+echo 1irectorul curent este* 0p2d0
1irectorul curent este* 3home3ralu3'4')
56nd shell-ul cite te pentru prima oara linia de comand, o!serv apostroful ntoars i
se asteapta ca acesta s fie urmat de numele unei comenzi. n acest caz, shell-ul gaseste
comanda p2d i o execut, nlocuind 0p2d0-ul din linia de comand cu iesirea comenzii p2d.
Contruc ia $() este suportat de shell-ul standard 789:. /ormatul general este*
+-comand.
unde, la fel ca la metoda apostrofurilor ntoarse, comand este numele comenzii a
crei ie ire standard urmeaz sa fie su!stituit n linia de comand.
&xemplu
+echo 1irectorul current este* +-p2d.
1irectorul current este* 3home3ralu3'4')
,ceast construc ie este mai !una decat apostrofurile ntoarse dintr-o serie de motive.
n primul r6nd, comenzile complexe care utilizeaza com!ina ii de apostrofuri si apostrofuri
ntoarse pot fi greu de citit, n special daca fontul utilizat nu are diferen e vizuale ntre
apostrofurile simple i cele ntoarse. n al )-lea r6nd, construc iile +-.... pot fi u or im!ricate,
permi 6nd su!stituirea unei comenzi n cadrul su!stituirii altei comenzi. 1e i im!ricarea
1
poate fi realizata si cu ajutorul apostroafelor ntoarse, n cazul celor din urma, aceasta poate fi
ceva mai complicat.
;u sunt restric ii cu privire la execu ia unei singure comenzi ntre paranteze* se pot
executa mai multe comezi dca sunt separate de < -punct i virgul.. e pot folosi chiar i
pipeline-uri.
Mai jos e i un exemplu de program care afi eaza numarul utilizatorilor loga i*
echo #unt +-2ho = 2c >l. utilizatori logati#
unt % utilizatori logati.
1up cum tim shell-ul e responsa!il pentru execu ia comenzilor aflate ntre
paranteze. ingurul lucru pe care comanda echo l vede este ie irea care a fost inserat de
shell.
7resupun6nd ca scrii un program n shell si vrei s atri!ui data i ora curent unei
varia!ile numit acum, poate ca s o afi ezi mai t6rziu n partea de sus a unui raport.
7ro!lema aici e ca dorim s luam datele de ie ire din date i s le atri!uim unei varia!ile. n
acest caz se poate folosi su!stitutia comenzilor*
acum?+-date.
+echo +acum
56nd scriem* acum?+-date., shell-ul realizeaz c toate datele de ie ire din date au
fost atri!uite.
Utilizarea substitu iei comenzilor n structura repetitiv for.
for filename in 0ls >l 3home3ralu0
do echo +filename
done
criptul utilizeaz su!stituirea unei comenzi pentru a crea o list pe care structura
repetitiv for o poate utiliza pentru itera ie. criptul creeaz o list a fi ierelor din
directorul 3home3ralu, folosind prima comand. Urm6nd ca la fiecare itera ie din interiorul
structurii, scriptul sa afi eze un nume de fi ier.
Setarea variabilelor cu ajutorul comenzilor. /ormatul de !az pentru utilizarea
su!stituirii comenzilor cu varia!ile este urmtorul*
varia!ila?0comanda0
1e exemplu*
azi?0data0
1up cum era de a teptat, putem deasemenea s ata m op iuni sau argumente
comenzii. 1e exemplu*
numescript?0!asename +40
2
5omanda !asename returneaz numele de !az al unui fi ier, elimin6nd orice alt
informatie legat de calea fi ierului. 1e exemplu, comanda !asename transform
3home3ralu3'4')3fotografie.jpg*
+!asename 3home3ralu3'4')3fotografie.jpg
fotografie.jpg
8 alt ntre!uin are uzual pentru su!stituirea comenzilor este efectuarea de opera ii
matematice i apoi setarea unei varia!ile care s primeasc rezultatul opera iei. hell
scripturile nu au fost concepute pentru a executa opera ii i vei vedea asta n momentul n
care vei ncerca sa calculezi ceva. 7entru a veni n ajutorul acestei pro!leme, po i apela o
serie de comenzi legate de opera ii, inclusiv expr i bc.
Comanda expr
1e i shell-ul standard 789: suport efectuarea de opera ii aritmetice cu numere
ntregi , shell-urile mai vechi nu suport. 5el mai pro!a!il vei vedea su!stituirea unei
comenzi cu ajutorul unui program Unix numit expr, care evalueaz o expresie dat n linie de
comand.
/iecare operator i operand dat expresiei expr tre!uie s fie un argument separat, ca n
exemplul de mai jos*
+ expr ' @ )
A
8peratorii aritmetici uzuali recunoscu i de expr sunt* @ pentru adunare, - pentru
scdere, 3 pentru mpar ire, B nmul ire.
/olosirea comenzii expr este mult mai u oar dec6t majoritatea alternativelor, dar
comanda expr se func ioneaz cel mai !ine pentru expresii mici. 1ac ai de efectuat un set
complicat de calcule, sau dac ai nevoie s lucrezi cu numere zecimale -reale., cel mai !ine ar
fi s folose ti comanda bc.
Citirea fi ierelor n variabile. 7utem profita de su!stituirea comenzilor pentru a citi
fi iere n varia!ile. 1e exemplu putem utiliza ie irea comenzii cat n cadrul su!stituirii unei
comenzi, dupa cum urmeaz*
continut_fisier=`car numefisier`
n consecin , putem utiliza o form prescurtat a metodei, ca de exemplu*
continut_fisier=`<numefisier`
,m!ele construc ii vor avea acelasi rezultat.
Atentie! ;u ncrca un fi ier foarte mare ntr-o varia!il shell. i nu ncrca niciodat
un fi ier !inar ntr-o varia!il shell. &valuarea unei astfel de varia!ile poate duce la rezultate
imprevizi!ile, depinde ns de datele existente n fi ier. hell-ul i da o putere minunat. ;u
folosi aceast putere mpotriva ta.
3
!"!#$%A&!'
$eginning hell cripting
Unix hell 7rogramming
4

S-ar putea să vă placă și