Documente Academic
Documente Profesional
Documente Cultură
Paul Irofti
Universitatea din Bucures, ti
Facultatea de Matematică s, i Informatică
Department de Informatică
Email: paul.irofti@fmi.unibuc.ro
Motivat, ie
$ LANG=ro_RO . UTF−8
$ p r i n t e n v LANG
$ echo $LANG
ro_RO . UTF−8
$ bash
bash −4.4 $ p r i n t e n v LANG
bash −4.4 $ t
b a s h : t : command n o t f o u n d
bash −4.4 $ echo $LANG
bash −4.4 $ e x i t
Exemplu: Variabilă de mediu
$ e x p o r t LANG=ro_RO . UTF−8
$ p r i n t e n v LANG
ro_RO . UTF−8
$ bash
bash −4.4 $ p r i n t e n v LANG
ro_RO . UTF−8
bash −4.4 $ echo $LANG
ro_RO . UTF−8
bash −4.4 $ t
b a s h : t : comand ă neg ă s i t ă
Variable expansion
Variabilele pot fi mai mult decât simplii scalari
I $(cmd) – evaluează întâi comanda cmd, iar rezultatul devine
valoarea variabilei
$ e c h o $ ( pwd )
/home/ p a u l
$ x=$ ( f i n d . −name \ ∗ . c )
$ e c h o $x
. / b a t l e f t . c . / p c i e . c . / maxint . c . / e i s a i d . c
I cmd1; cmd2 – înlănt, uire secvent, ială, cmd2 imediat după cmd1
I cmd1 | filtru | cmd2 – ies, irea comenzii din stânga este
intrarea celei din dreapta operatorului |
I cmd1 && cmd2 – execută a doua comandă doar dacă prima s-a
executat cu succes
I cmd1 || cmd2 – execută a doua comandă doar dacă prima a
es, uat
I exemplu:
$ m k d i r a c t e && mv ∗ . docx a c t e /
$ l s −l R | t e e f i l e s . l s t | wc − l
$ s s h e x a m p l e . o r g | | echo " C o n n e c t i o n f a i l e d ! "
Scripting
Definition
Script-urile sunt programe scrise pentru un mediu run-time specific
care automatizează execut, ia comenzilor ce ar putea fi executate
alternativ manual de către un operator uman.
I nu necesită compilare
I execut, ia se face direct din codul sursă
I de acea programele ce execută scriptul se numesc
interpretatoare înloc de compilatoare
I comenzile executate se mai numesc s, i byte-code
I astăzi granit, a dintre compilatoare s, i interpretatoare nu mai
este atât de clară (JIT, tiered compilation)
I exemple: perl, ruby, python, sed, awk, ksh, csh, bash
Shebang (#!)
apel:
$ . / t e x t . s h who d e c e n t . t x t
who n o t f o u n d i n f i l e d e c e n t . t x t , a p p e n d i n g
$ cat decent . txt
where a r e you ?
who
test sau [ ]
I [ n1 -eq n2 ] – n1 = n2
I [ n1 -ne n2 ] – n1 6= n2
I [ n1 -ge n2 ] – n1 ≥ n2
I [ n1 -gt n2 ] – n1 > n2
I [ n1 -le n2 ] – n1 ≤ n2
I [ n1 -lt n2 ] – n1 < n2
Expresii test: s, iruri de caractere
Pentru a depana un script apelat, i-l cu shell-ul folosit s, i opt, iunea -x.
Comenzile executate apar pe ecran prefixate cu + .
$ s h −x t o l o w e r . s h s c r e a m i n g . t x t d e c e n t . t x t
+ t r [ A−Z ] [ a−z ]
+ < screaming . txt
+ > decent . txt