Sunteți pe pagina 1din 5

ATELIER

UNIX

Bash ca limbaj de programare


tefan Tanas i Sabin Corneliu Buraga

Caracterizare (infoiasi)$ . script [ parametri ]


Un shell reprezint un macro-procesor capabil de a executa comenzi. (infoiasi)$ ./script [ parametri ]
Un shell Linux (UNIX) este att un interpretor de comenzi, interfa (infoiasi)$ bash script [ parametri ]
ntre utilizator i un bogat set de comenzi i utilitare, ct i materia-
lizarea unui limbaj de programare care ofer mecanisme complexe de Parametrii pot s lipseasc, dac script-ul dorit a fi rulat se poate apela
operare cu sistemul. Bash este un shell (interpretor de comenzi) specific i fr acetia. Comentariile se introduc prin simbolul # i sunt vala-
sistemului de operare Linux, conceput sub auspiciile GNU (GNU: is bile pn la sfritul liniei (din acest punct de vedere sunt similare co-
Not Unix). Numele este un acronim de la Bourne-Again Shell, dup mentariilor // din C++ sau Java).
Steve Bourne, autorul shell-ului sh pentru UNIX, predecesorul n cele ce urmeaz vom vedea c shell-ul bash ofer toate con-
bash-ului. Pentru sistemele de operare Linux, shell-ul implicit este bash. struciile unui limbaj de programare de nivel nalt, punnd la dispoziia
Exist mai multe versiuni de bash disponibile, n prezent cea mai uti- administratorilor de sistem un bogat set de faciliti.
lizat pe un sistem Linux fiind bash 2.0. Ca i alte pachete de programe
GNU, bash-ul este portabil i se gsete n aproape toate versiunile de Variabile
UNIX, iar independent l putem rula n OS/2, DOS i Windows NT. Deseori am dori ca anumite rezultate s le stocm temporar n memorie
Shell-ul bash ofer o multitudine de posibiliti administratorilor i pentru prelucrri ulterioare. Acest lucru poate fi realizat fie cu ajutorul
programatorilor de sistem, posednd toate caracteristicile unui limbaj unor fiiere temporare (soluie ineficient, consumatoare de resurse ale
de programare de nivel nalt. n cele ce urmeaz vom descrie o parte sistemului), fie prin intermediul variabilelor puse la dispoziie de shell.
dintre cele mai interesante i utile aspecte ale acestui shell. Pentru shell-ul bash, toate variabilele sunt de tip ir de caractere, ele fiind
create din zbor. Pentru a vizualiza toate variabilele definite i valorile
Script-uri bash corespunztoare acestora trebuie utilizat comanda set. Iniializarea
Comenzile bash pe care dorim s le execute shell-ul pot fi stocate n unei variabile se realizeaz cu operatorul = (acest operator nu trebuie s
fiiere. Acestor fiiere li dau drepturi de execuie (cu comanda chmod +x fie precedat sau succedat de spaii): variabila=valoare. Numele varia-
fiier), dup care pot fi executate ca orice alt comand. Fiierele bilei trebuie precedat de simbolul $ atunci cnd referim valoarea res-
coninnd comenzi ale unui limbaj de tip script, cum este cazul pectivei variabile. Pentru bash, avem la dispoziie i comanda intern
bash-ului, se mai numesc i script-uri. let pentru a realiza atribuiri de valori unei variabile. Sunt acceptai i
De obicei, la nceputul fiecrui fiier script se stabilete shell-ul care operatorii +=, -= etc. prezeni n C ori Perl. De asemenea, shell-ul bash
va fi invocat de ctre sistemul de operare pentru a se executa comenzile pune la dispoziie un bogat set de faciliti pentru evaluri matematice
i construciile bash. Pentru bash vom avea: #!/bin/bash. Pentru a exe- utiliznd numere ntregi (n alte shell-uri posibile doar cu ajutorul
cuta script-urile putem utiliza urmtoarele modaliti de apelare: comenzii expr). Astfel, pentru a evalua o expresie vom scrie acea expre-
sie ntre paranteze rotunde duble precedate de caracterul $. Pentru e-
fectuarea de calcule fracionare se poate utiliza comanda bc. Afiarea
Execuia script-urilor bash coninutului unei variabile se poate realiza cu ajutorul comenzii echo.

Utilizator (infoiasi)$ a = 10
bash: a: command not found
(infoiasi)$ a=10
Execuie Depanare
(infoiasi)$ echo $a
Script bash 10
(infoiasi)$ v="-o cgi-bin"
Variabile Pasarea variabilelor Forme speciale (infoiasi)$ ls $v
predefinite spre script ale variabilelor total 4
-rwxr-xr-x 1 user 99 Nov 27 18:42 form.cgi
(infoiasi)$ echo $((12 + 21/3))
Controlul fluxului
19
Operaii Operaii (infoiasi)$ v=15 ; z=4
Comparaii
cu fiiere matematice
(infoiasi)$ echo $((5 - $v % $z))
2
(infoiasi)$ echo `expr 3 - 1`
Comenzi Comenzi bash 2
UNIX/Linux interne

Pentru ca echo s nu treac automat la rnd nou dup afiarea valorilor


se va utiliza opiunea -n. Opiunea -e permite utilizarea codurilor
Ieire
escape (cele introduse de backslash). Aceste coduri escape (similare celor
prezente n limbajele C sau Perl) sunt:

28 NET REPORT aprilie 2002


ATELIER
UNIX

\a emite un sunet (alarm). bash: nume: readonly variable


\b deplazeaz cursorul cu o poziie spre stnga (backspace). (infoiasi)$ unset nume
\f trece cursorul pe rndul urmtor, rmnnd pe aceeai coloan. bash: unset: nume: cannot unset: readonly variable
\n trece cursorul pe prima poziie de pe linia urmtoare.
\r mut cursorul la nceputul liniei curente. Pentru ca o variabil s aib valoarea disponibil proceselor copil (e.g.
\t insereaz un caracter tab. sub-shell-uri) ale shell-ului curent, va trebui exportat cu ajutorul
\nnn insereaz caracterul care are codul ASCII nnn (poate avea una, comenzii export:
dou sau trei cifre), n octal.
\xnnn insereaz caracterul care are codul ASCII nnn (poate avea una, export nume TERM PS1
dou sau trei cifre), cod dat n hexa.
O comand nrudit este printf (foarte asemntoare ca funcio- n mod normal, variabilele nu sunt vizibile n procesele copil ale
nalitate cu funcia printf() din C). Atunci cnd dorim dup o variabil shell-ului, ele fiind considerate locale procesului shell respectiv.
s afim imediat un alt ir de caractere, numele variabilei trebuie n- Atribuirea de valori unei variabile poate fi o atribuire condiionat.
cadrat de acolade. Construcia ${var:-sir}, unde var este numele unei variabile, iar sir
este un ir de caractere, se evalueaz la valoarea variabilei var dac
(infoiasi)$ nume=Maria aceasta este definit, iar n caz contrar la irul specificat.
(infoiasi)$ echo Ana$nume
AnaMaria (infoiasi)$ echo ${anotimp:-Iarna}
(infoiasi)$ echo ${nume}na Iarna
Mariana (infoiasi)$ echo $anotimp
(infoiasi)$ echo $numena (infoiasi)$ anotimp="E iarna iar"
(infoiasi)$ (infoiasi)$ echo ${anotimp:-Iarna}
E iarna iar
Ultima comand afieaz coninutul variabilei vna (n cazul nostru ne- (infoiasi)$ echo $anotimp
fiind definit n prealabil va fi considerat vid). E iarna iar
Dac n loc de ghilimele vom folosi apostrofuri, atunci shell-ul nu
va mai expanda valoarea variabilei: Expresia ${var:=sir} se evalueaz asemntor expresiei precedente,
iar n plus n cazul n care variabila var nu este setat se iniializeaz
(infoiasi)$ curs=Web cu irul de caractere indicat (util pentru cazul n care dorim s asignm
(infoiasi)$ echo "Cursul meu preferat este $curs" o valoare implicit unei variabile, dac aceasta nu este definit).
Cursul meu preferat este Web
(infoiasi)$ echo 'Cursul meu preferat este $curs' (infoiasi)$ unset cale
Cursul meu preferat este $curs (infoiasi)$ echo ${cale:=/tmp}
/tmp
O variabil poate primi ca valoare rezultatul execuiei unei comenzi. (infoiasi)$ cale=/home/user/tmp
Pentru acest lucru comanda trebuie ncadrat de apostrofuri inverse: (infoiasi)$ echo ${cale:=/tmp}
/home/user/tmp
(infoiasi)$ v=`wc -l void.html` (infoiasi)$ unset cale
(infoiasi)$ echo $v (infoiasi)$ echo ${cale:=/tmp}
8 void.html /tmp
(infoiasi)$ echo $cale
O variant identic semantic este urmtoarea (preferat n versiunea 2.0 /tmp
a shell-ului bash):
Dac variabila var este setat, atunci valoarea expresiei ${var:+sir}
(infoiasi)$ v=$(wc -l void.html) este dat de irul specificat i valoarea variabilei nu se modific, altfel
valoarea respectivei expresii este irul vid.
Pentru a terge o variabil se poate utiliza una dintre variantele:
(infoiasi)$ unset comanda
(infoiasi)$ unset variabila (infoiasi)$ echo ${comanda:+ls}
(infoiasi)$ variabila= (infoiasi)$ echo $comanda
(infoiasi)$ comanda=pwd
Citirea de la tastatur a valorii unei variabile se realizeaz cu comanda (infoiasi)$ echo ${comanda:+ls}
read. Comanda readonly stabilete c valorile variabilelor specificate ls
nu pot fi modificate (aadar, variabilele devin constante). (infoiasi)$ echo $comanda
pwd
(infoiasi)$ read nume
Sabin Construcia ${var:?sir} genereaz un mesaj de eroare sir dac
(infoiasi)$ echo $nume variabila var nu este setat, iar n caz contrar se evalueaz la valoarea
Sabin variabilei specificate.
(infoiasi)$ nume="Sabin Corneliu"
(infoiasi)$ echo $nume (infoiasi)$ cale=
Sabin Corneliu (infoiasi)$ echo ${cale:?"Calea de directoare este vida."}
(infoiasi)$ readonly nume bash: cale: Calea de directoare este vida.
(infoiasi)$ nume=Victor (infoiasi)$ cale=/home/busaco

aprilie 2002 NET REPORT 29


ATELIER
UNIX

(infoiasi)$ echo ${cale:?"Calea de directoare este vida."} $0 conine numele script-ului;


/home/busaco $1, $2, ..., $9 reprezint parametrii din linia de comand ($1 conine
primul parametru, $2 al doilea etc.);
Numrul de caractere memorate ntr-o variabil var se obine n urma $* furnizeaz lista tuturor parametrilor din linia de comand;
evalurii expresiei ${#var}. $@ similar cu $*, dar parametrii sunt considerai elemente separate;
$# desemneaz numrul parametrilor din linia de comand;
(infoiasi)$ un_autor="Sabin Corneliu Buraga" $$ furnizeaz PID-ul procesului curent (aceast variabil se poate
(infoiasi)$ echo ${#un_autor} folosi pentru a crea fiiere temporare cu nume unic, de exemplu avnd
21 numele /tmp/nume$$);
$? conine codul ntors de ultima comand executat (zero, sem-
Variabile predefinite nificnd true, sau un numr pozitiv desemnnd valoarea logic false);
n cadrul shell-ulului avem acces la un numr de variabile predefinite, $! furnizeaz PID-ul ultimului proces executat n fundal;
cele mai semnificative dintre acestea regsindu-se n tabelul Variabile $- desemneaz opiunile cu care a fost lansat shell-ul respectiv.
(prin convenie, variabilele predefinite ale sistemului au numele dat cu n cazul n care avem mai mult de nou parametri n linia de co-
majuscule). mand, pentru a putea avea acces la valorile tuturor parametrilor, vom
Cteva exemple: utiliza comanda shift. Aceasta realizeaz o deplasare a elementelor lis-
tei de parametri n sensul urmtor: valoarea lui $1 se pierde i primete
(infoiasi)$ echo $BASH_VERSION valoarea lui $2, $2 ia valoarea lui $3 i aa mai departe, iar $9 va lua va-
2.04.11(1)-release loarea parametrului urmtor celui referit de $9 nainte.
(infoiasi)$ echo $MACHTYPE Pentru a observa cum lucreaz cteva din variabilele speciale de mai
i386-redhat-linux-gnu sus vom considera fiierul cmd:
(infoiasi)$ echo $MAIL
/var/spool/mail/stanasa #!/bin/bash
(infoiasi)$ echo $HOME echo "Numele scriptului: $0"
/home/stanasa echo "Parametri: $*"
(infoiasi)$ echo $TERM echo "Numarul de parametri: $#"
linux echo "PID: $$"
(infoiasi)$ echo $RANDOM Apoi considerm urmtoarele execuii:
21144 (infoiasi)$ . cmd Perl C Java bash
Numele scriptului: bash
Valorile variabilelor de sistem predefinite pot fi consultate prin inter- Parametri: Perl C Java bash
mediul comenzii set. De asemenea, asupra lor se pot utiliza comenzile Numarul de parametri: 4
export, readonly sau unset. PID: 926
(infoiasi)$ ./cmd Victor Stefan Sabin
Variabile speciale Numele scriptului: ./cmd
Exist cteva variabile speciale foarte utile n script-uri: Parametri: Victor Stefan Sabin
Numarul de parametri: 3
PID: 1465
Variabile
Variabil Descriere Se observ faptul c pentru primul apel fiierul care se execut este bash
HOME Conine calea complet a directorului corespunztor (shell-ul), care execut comenzile din fiierul cmd (numele su este para-
utilizatorului curent. n cadrul specificatorilor de fiier, $HOME metru). A doua variant de apel aduce rezultatul scontat: cmd este
poate fi substituit de caracterul tilda ~.
fiierul care se execut.
USER Furnizeaz numele de cont al utilizatorului curent.
Conine numele de cont al utilizatorului curent.
LOGNAME
Instruciuni
HOSTNAME Desemneaz numele serverului. Shell-ul bash pune la dispoziia programatorilor o serie de structuri de
HOSTTYPE Furnizeaz tipul mainii (procesorului). test: if i case i repetitive: for, while, until.
OSTYPE Desemneaz tipul sistemului de operare. Structura condiional if are urmtoarea sintax:
MACHTYPE Descrie tipul sistemului n formatul procesor - firma if
productoare - tipul sistemului de operare.
lista_de_comenzi_1
shell Indic shell-ul implicit.
then
BASH Indic fiierul care a generat aceast instan a shell-ului.
lista_de_comenzi_2
BASH_VERSION Furnizeaz versiunea bash.
[ elif
MAIL Conine numele fiierului unde sunt depozitate mesajele de
lista_de_comenzi_3
e-m
mail primite.
then
PS1 Desemneaz structura prompt-ului principal al shell-ului.
lista_de_comenzi_4 ]
PS2 Reprezint prompt-ul secundar al shell-ului (apare atunci
cnd o comand este scris pe mai multe rnduri). ...
TERM Furnizeaz tipul de terminal. [ else

PATH Conine lista de directoare utilizat de shell pentru cutarea lista_de_comenzi_N ]


comenzilor (fiierelor executabile). fi
PWD Furnizeaz directorul curent de lucru (cel care a fost stabilit
de comanda cd). Secvena elif poate aprea de cte ori este nevoie. Dac ultima co-
RANDOM Conine un numr generat aleator cuprins ntre 0 i 32767. mand din prima list de comenzi se termin cu succes (returneaz va-
Dup utilizare, valoarea variabilei se modific automat. loarea zero), se execut instruciunile care urmeaz lui then, altfel se

30 NET REPORT aprilie 2002


ATELIER
UNIX

continu cu urmtorul elif sau else. Cnd se ajunge pe o ramur elif echo "Opiune necunoscut..."
se execut ca i cum ar fi un alt if. n programul de mai jos (denumit fi
rmtemp) apare structura if: done

#!/bin/bash Comenzile pot fi executate condiionat folosind operatorii && i ||:


if Contrucia: comanda1 && comanda2 funcioneaz astfel: se execut
echo "Stergerea fisierului \"temp\"" prima comand, iar dac aceasta se ncheie cu succes (returneaz codul
rm temp 2>/dev/null 0) se execut i cea de-a doua comand.
then Pentru comanda1 || comanda2 lucrurile decurg similar, doar c a doua
echo "Fisierul \"temp\" a fost sters." comand se execut atunci cnd prima ntoarce un cod de eroare (nenul).
else Un exemplu:
echo "Fisierul \"temp\" nu a putut fi sters."
fi (infoiasi)$ gcc gaen.c -o gaend -O2 && strip gaend

Comanda rm terge fiierul temp dac exist i poate fi ters (e.g. uti- Structura for are urmtoarea sintax:
lizatorul care apeleaz script-ul are drepturile necesare), altfel afieaz
un mesaj de eroare (mesajul nu apare pe ecran ntruct ieirea standard for var [ in text ]
de eroare este redirectat la /dev/null). do
Sintaxa structurii condiionale case este cea de mai jos: lista_de_comenzi
done
case expresie in
[ sir_de_valori_1 ")" lista_de_comenzi_1 ";;" ] Variabila var va lua succesiv valori din textul specificat (cte o linie).
... Dac textul lipsete variabila va lua ca valori parametri transmii n linia
[ sir_de_valori_N ")" lista_de_comenzi_N ";;" ] de comand.
esac Programul de mai jos va genera un fiier coninnd informaii des-
pre fiecare utilizator conectat:
Mai nti se evalueaz expresia dup care se ncerc o potrivire cu una
din valorile din irurile specificate. Dac s-a gsit o potrivire (acesta va for U in `who | cut -c1-8`
fi prima n ordinea definirii valorilor) se va executa lista de comenzi do
corespunztoare, dup care structura case se va termina. Cuvntul esac finger $U >> lista_utilizatori
este oglinditul lui case i termin o construcie case. done
Drept exemplu, considerm c fiierul opt are urmtorul coninut:
Dup cum am vzut, n bash n locul construciei `who | cut -c1-8`
#!/bin/bash putem scrie $( who | cut -c1-8 ).
case $1 in Sintaxa structurii repetitive while este furnizat n continuare:
-a|-[fx-z] ) echo "S-a detectat o optiune valida";;
-* ) echo "S-a detectat o optiune" ;; while
stop|start ) echo "S-a detectat un parametru valid" ;; lista_de_comenzi_1
?* ) echo "S-a detectat un parametru" ;; do
* ) echo "Mod de utilizare: $0 param" ;; lista_de_comenzi_2
esac done

Pentru delimitarea mai multor valori se utilizeaz caracterul |. Pot Se execut prima list de comenzi. Dac ultima comand din prima list
apare wildcard-uri (* va ine loc de zero sau multe caractere, iar ? va se ncheie cu succes (returneaz un cod de eroare nul), atunci se execut i
ine locul unui singur caracter). Primul ir este echivalent cu -a|-f|- a doua list dup care se reia bucla, altfel se iese din structura repetitiv.
x|-y|-z. Al doilea va selecta toate cuvintele care ncep cu caracterul -. Urmtorul script va simula execuia comenzii cat:
Construcia ?* va accepta toate cuvintele nevide (semnul de ntrebare
cere existena unui caracter). while read -r linie
Pentru a iei forat dintr-un script sau dintr-o funcie definit de do
utilizator (vezi mai jos) vom utiliza comanda return urmat de un cod echo "$linie"
de stare. Comanda exit va determina prsirea shell-ului curent. done
O alt comand util este select care permite realizarea de inter-
aciuni n mod text. Urmtorul exemplu d posibilitatea utilizatorului Pentru a iei forat dintr-un ciclu repetitiv se poate folosi break, iar
s aleag ntre dou opiuni: pentru a trece direct la urmtoarea iteraie se va utiliza continue, ca n
limbajele C sau Java. Un exemplu:
OPTIUNI="Salutari Iesire"
select opt in $OPTIUNI; do for dir in $PATH; do
if [ $opt = "Iesire" ]; then test -z "$dir" && dir=.
echo "Am terminat..." if test -f $dir/tail; then
exit tail="$dir/tail"
elif [ $opt = "Salutari" ]; then break
echo "Salut! Ce mai facei?" fi
else # nici una din optiuni done
clear # stergem ecranul echo "Am gasit comanda tail: $tail"

aprilie 2002 NET REPORT 31


ATELIER
UNIX

Comanda test Script-uri sistem


Bash-ul permite utilizarea expresiilor condiionale prin intermediul n continuare vom prezenta o serie de fiiere de comenzi bash speciale,
comenzii test. Aceasta are o form scurt n care lipsete numele utilizate ndeosebi la configurarea sesiunii de lucru. Shell-ul permite ca
comenzii, iar condiia este ncadrat de parantezele drepte []. Cu aju- fiecare utilizator s poat scrie un script care s fie executat la fiecare n-
torul lui test se pot efectua comparaii aritmetice i asupra unor ceput de sesiune de lucru n sistem. Acest fiier rezid n directorul
irurilor de caractere, precum i teste asupra fiierelor. Pentru a testa di- home (indicat dup cum am vzut de variabila sistem HOME) al utiliza-
verse condiii, vom utiliza urmtoarele: torului i poate fi regsit sub numele de .bash_profile sau .profile.
teste privitoare la fiiere n cadrul acestui fiier se pot defini alias-urile comenzilor folosite
-a fiier - true dac fiierul exist. frecvent, se pot stabili diferite valori ale variabilelor de mediu (e.g. TERM
-d fiier - true dac este director. ori PS1) sau se pot executa diverse comenzi (de exemplu, s se afieze
-e fiier - true dac fiierul exist. cu echo un mesaj de bun venit sau data curent). n plus, fiecare uti-
-f fiier - true dac fiierul exist i este un fiier obinuit. lizator poate avea un script care va fi rulat la momentul prsirii sesiu-
-g fiier - true dac fiierul exist i aparine grupului. nii, acest fiier purtnd numele .bash_logout i fiind localizat tot n di-
-h fiier - true dac fiierul exist i este o legtur simbolic. rectorul home al acelui utilizator.
-p fiier - true dac fiierul exist i este de tip pipe. Administratorul sistemului poate pregti diferite fiiere de iniia-
-r fiier - true dac fiierul exist i poate fi citit. lizare, valabile pentru toi utilizatorii. Aceste fiiere script sunt stocate n
-s fiier - true dac fiierul exist i are dimensiunea nenul. directorul /etc. De exemplu, /etc/profile care va fi executat la oricare
-w fiier - true dac fiierul exist i poate fi modificat. deschidere a unei noi sesiuni de lucru a fiecrui utilizator. La crearea
-x fiier - true dac fiierul exist i este executabil. unui cont, n directorul home al utilizatorului proaspt creat vor fi plasate
teste referitoare la variabile copii ale fiierelor .bash_profile i .bash_logout regsite n directorul
-z variabil - true dac variabila este nesetat (sau conine un ir /etc/skel, utilizatorul putndu-le ulterior modifica dup dorin.
vid de caractere). Un exemplu de script .bash_profile standard poate fi:
[-n] variabil - true dac variabila este setat.
teste privitoare la iruri de caractere i numere # .bash_profile
ir1 == ir2 - true dac irul de caractere 1 coincide cu irul 2; se # incarcam alias-urile si functiile
poate utiliza un singur egal. if [ -f ~/.bashrc ]; then
ir1 != ir2 - true dac cele dou iruri sunt diferite. . ~/.bashrc
ir1 < ir2 - true dac irul 1 este naintea irului 2 n ordinea fi
lexicografic. # modificam mediul
ir1 > ir2 - true dac irul 1 este dup irul 2 n ordinea PATH=$PATH:$HOME/bin
lexicografic. BASH_ENV=$HOME/.bashrc
arg1 OP arg2, unde OP poate fi: -eq, -ne, -lt, -le, -gt sau -ge - USERNAME=""
true dac operatorii aritmetici binari returneaz true; acetia au export USERNAME BASH_ENV PATH
semnificaiile de egal, diferit, mai mic, mai mic egal, mai mare i
respectiv mai mare egal, iar arg1 i arg2 pot fi numere pozitive Ori de cte ori este lansat un proces shell interactiv, va fi lansat mai nti
sau negative. fiierul script /etc/bashrc, apoi $HOME/.bashrc. De altfel, n orice sis-
De menionat faptul c n bash valoarea de adevr true este echiva- tem UNIX (Linux) prin convenie orice nume de fiier terminat n rc
lent cu 0, iar valoarea logic false este dat de un numr nenul. (de la run commands) desemneaz un fiier script de configurare. Spre
Exemplul urmtor listeaz directoarele din directorul curent: exemplu, script-urile de configurare a serviciilor sistem rulate la iniia-
lizarea sistemului de operare se gsesc n directorul /etc/rc.d/init.d.
#!/bin/bash ntr-un fiier .bashrc se pot defini alias-uri i se pot stabili diverse va-
for director in * # variabila va lua ca valori numele lori ale unor variabile de sistem:
do # tuturor fiierelor din directorul curent
if [ -d $director ] # .bashrc
then # afiseaza numele directorului alias h='history'
echo $director alias j="jobs -l"
fi alias l="ls -l"
done alias f=finger
# modificam tipul de terminal
TERM=vt100
Resurse bibliografice # schimbam prompt-ul
# \h - numele masinii
! M.Budiu, Articolele publicate n NET Report:
# \u - numele utilizatorului
http://www.cs.cmu.edu/~mihaib/articles/articles.html
# \w - directorul de lucru (curent)
! S. Buraga, G. Ciobanu, Atelier de programare n reele de PS1="\h (\u): \w>"
calculatoare, Editura Polirom, Iai, 2001: http://www.in- export TERM PS1
foiasi.ro/~lrc/
! C. Ramey, B. Fox, Bash Reference Manual, Free Software Pentru fiecare utilizator, mai exist un fiier, denumit .bash_history
Foundation, 1998 care este stocat n directorul home i care pstreaz ultimele comenzi
! R. Sage, UNIX pentru profesioniti, Editura de Vest, Timioara, executate de utilizator.
1993
! * * *, The Linux Documentation Project: Autorii sunt cadre didactice la Facultatea de Informatic, Universitatea
http://metalab.unc.edu/LDP/ Al.I.Cuza din Iai, putnd fi contactai prin e-mail la
stanasa@infoiasi.ro i busaco@infoiasi.ro. n 98

32 NET REPORT aprilie 2002

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