1_Prezentare_Shell_Unix
-
Upload
alin-iosif -
Category
Documents
-
view
216 -
download
0
Transcript of 1_Prezentare_Shell_Unix
-
8/8/2019 1_Prezentare_Shell_Unix
1/40
1
Shell UnixShell Unix
Autor : prof. Georges ROSENTHALAutor : prof. Georges ROSENTHAL IUT Robert Schuman StrasbourgIUT Robert Schuman StrasbourgTraducereTraducere i adaptare : conf. Emilia PECHEANUi adaptare : conf. Emilia PECHEANU Univ. Dunarea de Jos GalatiUniv. Dunarea de Jos Galati
-
8/8/2019 1_Prezentare_Shell_Unix
2/40
2
Introducere (1)Introducere (1)
Limbajele de programare pot fi clasificate n dou categorii:
limbaje compilate limbaje interpretate
ShellShell --ul Unixul Unix este : un limbaj de comenzi (limbaj interpretat) i un limbaj de programareUn program scris n limbaj Shell se numete script
Sub alte SO, terminologia este : limbaj de comenzi saulimbaj de control (ex. JCL)
-
8/8/2019 1_Prezentare_Shell_Unix
3/40
3
Introducere (2)Introducere (2)
Principalele variante de shell Unix: shell (Bourne, shsh)
C-shell (B. Joy, cshcsh) K-shell (D. Korn, kshksh)
Bourne again (bashbash)
pdksh (public domain ksh), tcshtcsh, zshzsh, .. shell-rirestrnse (rshrsh, rkshrksh, ...) sau prin meniu-uri (vshvsh,helphelp, ....
-
8/8/2019 1_Prezentare_Shell_Unix
4/40
4
Avantajele utilizrii shell-uluioo InterfaInterfaa cua cu comenzilecomenzile
oo Stil concisStil concis de programare i modularitatemodularitate
oo AdministrareAdministrare Unix
Nerecomandat pentru prelucrri care cer performane de timp
Funciunile shell-uluioo interpretareainterpretarea numelor genericenumelor generice de fiiere
oo rediredirectrectareare i pipepipe--lininglining
oo controlul execucontrolul execuieiiei programelor
oo programareprogramare (variabile, parametri, funcii)
oo substitusubstituiaia comenzilor
Introducere (3)Introducere (3)
-
8/8/2019 1_Prezentare_Shell_Unix
5/40
5
CaractereCaractere i expresii genericei expresii generice
?? un caracter oarecare** un ir oarecare de caractere (eventual vid)
[[lista]] un caracter din lista
[[interval ]] un caracter din interval[![!lista]] un caracter care nu este n lista[![!interval ...]] un caracter care nu este n interval
@ n bash se pot utiliza clasele de caractere POSIX:
[:alpha:][:alpha:] [:upper:][:upper:] [:lower:][:lower:] [:digit:][:digit:][:xdigit:][:alnum:][:xdigit:][:alnum:] [:space:][:space:] [:print:][:print:][:punct:][:punct:] [:graph:][:graph:] [:cntrl:][:cntrl:]
-
8/8/2019 1_Prezentare_Shell_Unix
6/40
6
CaractereCaractere i expresii generice (exemple)i expresii generice (exemple)
ls d /bin/???
ls d *p*
ls d /bin/*[!A-Za-z]ls d .[!.]*
ls /usr/bin/[nm]*[[:digit:]]
ObservaObservaieie : Dac numele de fiier conine caractere generice,
cutarea se efectueaz implicit n toatetoate subdirectoarele directoruluispecificat. Opiunead limiteaz cutarea la directorul specificat.
-
8/8/2019 1_Prezentare_Shell_Unix
7/40
7
Definiii Shell (1)Definiii Shell (1)sspaiupaiu albalb caracterul spaiu sau caracterul tab
cuvntcuvnt secven de caractere considerat de Shell ca entitate elementar
(atomic) denumit i tokentoken
numenume cuvnt format din caractere alfanumerice i underscore care ncepe cu
liter sauunderscore denumit i identificatoridentificator
ccuvuvnt rezervatnt rezervat
un cuvnt care are semnificaie special pentru Shell i este interpretat deShell atunci cnd nu este protejat (plasat ntre apostroafe, ghilimele)
! case do done elif! case do done elif else fi forelse fi for ffunction ifunction if ininselect then until while {} time [[ ]]select then until while {} time [[ ]]
ObsevaieObsevaie : numele comenzilor sunt cuvinte rezervatenumele comenzilor sunt cuvinte rezervate
-
8/8/2019 1_Prezentare_Shell_Unix
8/40
8
Definiii Shell (2)Definiii Shell (2)
metacaractermetacaracter un caracter special care separ cuvinte
; & ( ) | < >; & ( ) | < > ssppaceace ttabab
operatoroperator
un cuvnt care are rol activ, de control
|| &|| & &&&& ;; ;;;; (( ) | NL (newline)) | NL (newline)
ccomentariuomentariu
simbolul ## marcheaz nceputul unui comentariu iarsfritul comentariului esteNL (new line)NL (new line)
-
8/8/2019 1_Prezentare_Shell_Unix
9/40
9
RedirRedirectectarea fiarea fiierelor (1)ierelor (1)
Trei fiiereTrei fiiere implicitimplicit ataateataate oricrei sesiuni de lucru:
Nume fiier Descriptor Semnificaie
STDIN (standard inputinput ) 00 intrarea standard de date (tastatura)STDOUT (standard outputoutput ) 11 ieirea standard de date (ecranul)STDERR (standard errorerror) 22 ieirea standard de eroare (ecranul)
-
8/8/2019 1_Prezentare_Shell_Unix
10/40
10
RedirRedirectectarea fiarea fiierelor (ierelor (22))
Cele trei fiiere standard pot fi redirectateredirectate ctre fiiere pe discfiiere pe disc
> fiierfiier redirectare STDOUT ieire date ctrectre fiierfiier>>>> fiierfiier redirectare STDOUT adugare date nn fiierfiier2 >2 > fiierfiier redirectare STDERR stocare mesaje de eroare nn fiierfiier
-
8/8/2019 1_Prezentare_Shell_Unix
11/40
11
RedirRedirectectarea fiarea fiierelor (ierelor (33))
Expresii speciale de redirectare :
2>&12>&1 fuzionare STDOUT i STDERR&-- nchidere STDOUT
-
8/8/2019 1_Prezentare_Shell_Unix
12/40
12
RedirRedirectectarea fiarea fiierelor (ierelor (ExempleExemple 11))
# Se creeaz fiierul vid f1 prin redirectare STDOUT
>f1
# Se listeaz coninutul directorului/ n fiierul f2 prin redirectare STDOUT
ls / >f2
# Se adaug data calendaristic n fiierul f2prin redirectare STDOUT
date >>f2
# Prin redirectare STDOUT se creeaz fiierul (vid) f3# Directorul/nimicnu exist iar pe ecran se afieaz un mesaj de eroare
ls /nimic >f3# Prin redirectare STDOUT se creeaz fiierul vid f3# Mesajul de eroare se stocheaz n fiierulfis_errprin redirectare STDERR
ls /nimic >f3 2>fis_err
-
8/8/2019 1_Prezentare_Shell_Unix
13/40
13
RedirRedirectectarea fiarea fiierelor (ierelor (ExempleExemple 22))
# Care din comenzile urmtoare afieaz mesajul de eroare pe ecran ?ls /nimic >f3 2>&1ls /nimic 2>&1 >f3
IndicaIndicaieie : Evaluarea redirectrilor dintr-o comand se face dela stnga la dreapta.
# Redirectare STDIN de la fiierul f3# Coninutul fiieruluif3 va fi trimis prin un e-mail utilizatorului curent
mail $LOGNAME
-
8/8/2019 1_Prezentare_Shell_Unix
14/40
14
RedirRedirectectarea fiarea fiierelor (ierelor (ExempleExemple 33))
# Afiarea unui text pe ecran ca document integrat# n liniile pn la linia cu cuvntulsfarsit se face substiuia de variabile i comenzi
cat
-
8/8/2019 1_Prezentare_Shell_Unix
15/40
15
PipePipe--liningliningO conductconduct ( pipepipe, |) constitue o form dubl de redirectare :
RedirRedirectareaectarea ieieiriiirii standard (STDOUT) a unei comenzi cctre conducttre conduct
RRediredirectareaectarea intrintrriirii standard (STDIN) a comenzii urmtoare cctretre
aceeaaceeai conducti conduct care va conecta astfel cele 2 comenziShell-ul asigur sincronizarea celor dou comenzi (procese)
STDOUT
STDERR
Comanda 1STDIN STDOUT
STDERR
Comanda 2STDINPIPE
-
8/8/2019 1_Prezentare_Shell_Unix
16/40
16
PipePipe--lining (lining (ExempleExemple))
# Fiierele script din directorul/usr/bin conin o linie cu textul shell script # Care sunt fiierele script din directorul /usr/bin ?file /usr/bin/*|grep ""shell script""
# Care sunt fiierele script din directorul /etc ?
find /etc exec file{} \; 2>/dev/null|grep "shell script""shell script"
# Care este numele celui mai mare fiier din directorul /etc ?ls al /etc|tr s " "|sort nr +4 -5|head -1|cut d" " f9
# Cte directoare proprii ale utilizatorilor nu se afl n /home ?getent passwd|cut d: -f6|grep -cv /home/
# Care este primul nume de utilizator (n ordine alfabetic), dar ultimul ?
getent passwd|cut d: -f1|sort|tee lista|head -1; tail -1 lista
# Care este utilizatorul care s-a conectat primul?who|sort k4|line|cut -f1 -d" "
-
8/8/2019 1_Prezentare_Shell_Unix
17/40
17
Citarea (ProtejareCitarea (Protejare Quoting) (1)Quoting) (1)
foreaz Shellforeaz Shell--ul s ignoreul s ignore semnificaia special a unor metacaracteresau cuvinte rezervate
se mpiedic interpretarea caracterelor specialese mpiedic interpretarea caracterelor speciale, se evitrecunoaterea cuvintelor rezervate, sau se intezice expandareaintezice expandareaparametrilorparametrilor
trei caracteretrei caractere utilizate pentru protejare :
\\ anuleaz semnificaia shell pentru caracterul urmtorse mai numete caracter de escapecaracter de escape
'' .... '' apostoafeleapostoafele (quotesquotes) anuleaz semnificaia shell pentrutoate caracterele dintre cele 2 apostroafe
""...."" ghilimeleleghilimelele (double quotesdouble quotes) anuleaz semnificaia shellpentru toate caracterelenafarnafar dede $$ ` \\
toate metacaracterelemetacaracterele ; & ( ) | < >; & ( ) | < > ssppaceace ttababau semnificaie special pentru Shell, deci trebuie protejate pentru aau semnificaie special pentru Shell, deci trebuie protejate pentru a--iipstra propria valoare.pstra propria valoare.
-
8/8/2019 1_Prezentare_Shell_Unix
18/40
18
Citarea (ProtejareCitarea (Protejare Quoting) (2)Quoting) (2)
n cazul special al citcitriirii unui caractercaracter special sau a unui metacaracterspecial sau a unui metacaracter(plasplasrii salerii sale ntrentre apostroafe inverse, apostroafe sau ghilimeleapostroafe inverse, apostroafe sau ghilimele) :
caracterecaractere
ddee
lliimmiittaattoo
rrii
nunu = caracterul nu este interpretat conform semnificaiei sale ca i caracter Shelldada = caracterul este interpretat conform semnificaiei sale ca i caracter Shellssfritfrit = sfrit delimitare cu caracter de citare
\\ $$ ** ` "" ''` dada dada dada sfsfrritit nunu nunu
"" dada dada nunu dada sfsfrritit nunu
'' nunu nunu nunu nunu nunu sfsfrritit
-
8/8/2019 1_Prezentare_Shell_Unix
19/40
19
Citarea (ProtejareCitarea (Protejare Quoting) (3)Quoting) (3)
n cadrul unei expresii $'sir'$'sir' sau cu comanda echoecho ee """"secvenele\\caracter(e)caracter(e) sunt interpretate cf. limbajului C :
\\bb backspace \\ee escape \\ff formfeed
\\nn newline \\rrreturn \\tt tab
\\vvvertical tab \\\\ back slash
\\nnnnnn caracterul al crui cod ASCII n octal este nnnnnn (1 la 3 cifre)\\xxnnnnnn caracterul al crui cod ASCII n hexazecimal este nnnnnn (1 la 3 cifre)
-
8/8/2019 1_Prezentare_Shell_Unix
20/40
20
CitareaCitarea ((Exemple 1Exemple 1))
>\*a # creeaz un fiier avnd numele*a
echo **a Desktop f1.sh f2.sh p1.c p2.c Perles tmp
echo \**
echo \***a
echo "*"*echo pwdpwd
echo `pwd`/home/emipec
echo "`pwd`"/home/emipec
echo '`pwd``pwd`
# ce afieaz comanda ?echo `echo "*"`
-
8/8/2019 1_Prezentare_Shell_Unix
21/40
21
CitareaCitarea ((Exemple 2Exemple 2))echo "\\"\echo "\"""
echo "\`"
echo "\$HOME"$HOME
echo "\'"
\'
echo 'aaa\tbbbb'aaa\tbbbbecho $'aaa\tbbbb'aaa bbbb
-
8/8/2019 1_Prezentare_Shell_Unix
22/40
22
SubstituSubstituia comenziloria comenzilor
`comandacomanda`
sau
$($(comandacomanda)) n bash
caracterele NL din intrarea standard sunt suprimate (o singur linie)
Perechile de apostroafe inverse ` ` pot fi imbricate cu condiia de a
folosi citarea cu backslashcitarea cu backslash \\ pentru aposroafele inverse ` interneCitarea nu este necesar daca se foloseste $()
-
8/8/2019 1_Prezentare_Shell_Unix
23/40
23
Substituia comenzilorSubstituia comenzilor ((ExempleExemple))
# comanda idafieaz identificatorii uid real i gid realpentru un utilizatoriduid=15510(popescu) gid=1500(automatica)
echo $LOGNAME are identificatorul `id|cut f1 d"("|cut f2 d=`popescu are identificatorul 15510
# Ce fac comenzile urmatoare?cd /tmpcp `getent passwd|grep popescu|cut d: -f6`/fis1 fis2cd `dirname \`find / -name lista print 2>/dev/null \``
-
8/8/2019 1_Prezentare_Shell_Unix
24/40
24
ExecuExecuia comenziloria comenzilor
;; sauNNLL execuie sincron (foregroundforeground)
&& execuie asincron (backgroundbackground)&&&& i|||| sau
|| comunicaie inter-procese{ }{ } group de comenzi executate n shell-ul curent( )( ) group de comenzi executate ntr-un sub-shell
Orice comand poate s citeasc sau s scrie ntr-o conduct (pipe-
line) n urma redirectriii intrrii sale standard (STDIN) sau a ieirii
sale standard (STDOUT)
Intrarea standard a unei comenzi care se execut n background (&&)
este /dev/null/dev/null
-
8/8/2019 1_Prezentare_Shell_Unix
25/40
25
ExecuExecuia comenziloria comenzilor ((Exemple 1Exemple 1))# Execuia comenzii findse face n backgroundfind / -name *aa* 2>/dev/null &
# conectorii&& i|| simuleaz funcionarea unei structuri if# codul de retur al primei comenzi condiioneaz execuia comenzilor urmtoare
date "+%A %d %B" && echo "Corect!" || echo "Comanda gresita!"
Joi 8 noiembrieCorect!
date "%A %d %B" && echo "Corect!" || echo "Comanda gresita!"Date: invalid date %A %d %BComanda gresita!
# Cum funcioneaz comenzile urmtoare ?ls l |grep f1 && echo "fiier gasit!" || echo "fiiernegasit"
-
8/8/2019 1_Prezentare_Shell_Unix
26/40
26
ExecuExecuia comenziloria comenzilor ((Exemple 2Exemple 2))# Gruparea comenzilor cu ajutorul parantezelor
(echo Salut ; exit){echo salut; exit;}
pwd;(cd ..; pwd; echo salut) ; pwdpwd;{cd ..; pwd; echo salut} ; pwd
-
8/8/2019 1_Prezentare_Shell_Unix
27/40
27
InstrucInstruciuni Shell de programareiuni Shell de programare
while...do...donewhile...do...done structura repetitiv condiional
for..in..do...donefor..in..do...done structura iterativ
if...then...else...fiif...then...else...fi structura alternativ
case..in..esaccase..in..esac lista de cazuri
aceste instruciuni functioneaz ca i comenzi internecomenzi interne
cuvintele cheiewhile, forwhile, for nu sunt recunoscute dect dupseparatorii de cuvnt sau dup operatorii urmtori :
; N; NLL & && | ||& && | ||
o condicondiieie se exprim prin codul de retourcodul de retourrentors de o comando comand sauo listo list de comenzide comenzi ( 00 pentruADEVARATADEVARAT, diferit de 0diferit de 0 pentruFALSFALS)
-
8/8/2019 1_Prezentare_Shell_Unix
28/40
28
StructurStructuraa alternativalternativ
ifif lista-1thenthen lista-2[elseelse lista-3]
fifi
sau :ifif lista-1
thenthen lista-2[elifelif lista-3
thenthen lista-4elseelse lista-5]
fifi
unde : lista-1 , lista-2 reprezint o comand sauun grupde comenzi
-
8/8/2019 1_Prezentare_Shell_Unix
29/40
29
StructurStructuraa alternativalternativ ((ExempleExemple))# Afiare mesaje de eroare n limba romnif cat fifi 2>/dev/null
thenecho OK
elseecho "fiier negasit sau fara drept de citire"
# Condiia se exprim prin dou comenzin pipe-line
if who|grep root 2>/dev/nullthen echo "Utilizatorul root este conectat! "else
echo "Utilizatorul root nu este conectat!"fi
# Condiia se poate exprima i prin operatorii&& i ||
who|grep root 2>/dev/null && echo "Root conectat!" || echo OK
-
8/8/2019 1_Prezentare_Shell_Unix
30/40
30
Lista de cazuriLista de cazuri
casecase variabil inin
model-a [ || model-b ]...)) lista-1 ;;;;
model-m [ || model-n ]...)) lista-2;;;;
...
model-x [|| model-y]... )) lista-99
esacesac
unde : lista-1 , lista-2 reprezint o comand sauun grupde comenzi
-
8/8/2019 1_Prezentare_Shell_Unix
31/40
31
Lista de cazuriLista de cazuri ((ExempleExemple))# Afiare mesaje n funcie de o valoare numeric tastat de utilizatorread numarcase $numar in
[0-9]) echo "Ati tastat un numar de o cifra!" ;;[0-9][0-9]) echo "Ati tastat un numar de 2 cifre!" ;;*) echo "Ati tastat altceva decat un numar" ;;
esac
# Afiare mesaje n funcie de o valoare calculat
nr_util=`who|wc -l`
case $nr_util in
1) echo "Un singur utilizator este conectat! " ;;
[2-5]) echo "Sub 5 utilizatori conectati!" ;;
?|?? ) echo "Mai mult de 5 utilizatori conectati!"
esac
-
8/8/2019 1_Prezentare_Shell_Unix
32/40
32
Structuri repetitiveStructuri repetitiveStructura iterativforfor variabila [inin cuvnt-1 [cuvnt-2] ...]
dodo lista-comenzi
donedone
Se poate utiliza comanda shell seqseqpentru a genera lista de valori (cuvinte)
Structura repetitiv condiionalwhilewhile lista-1
dodo lista-2donedone
Este disponibil i structura untiluntil ... dodo ...donedone
-
8/8/2019 1_Prezentare_Shell_Unix
33/40
33
Comenzi interne pentru controlul
fluxului de execuie
breakbreak [[nn]] iesire din bucla (1)
continuecontinue [[nn]] salt la iteratia urmatoare (1)
exitexit [[rr]] iesire din shell-ul (scriptul) curent , carecorespunde ultimei comenzi executate
.. fiierfiier redirijarea intrarii standard (STDIN)catre fiier
waitwait [[nn]] asteptare in vederea executiei (proces nbackground)
-
8/8/2019 1_Prezentare_Shell_Unix
34/40
34
Variabile ShellVariabile Shell (1)(1)
numelenumele unei variabile este o suit de caractere de tip literliter,cifrcifr sau __ , n care primul caracter este obligatoriu liter
declarareaimplicitimplicit
a unei variabile se face atunci cnd seefectueaz prima atribuire a unei valori
numnumee--dede--variabila=sir_de_caracterevariabila=sir_de_caractere
ATENATENIEIE : F: Frr spatiuspatiunainte i dup semnul =
o variabil este implicit localimplicit local shell-ului n care a fost creat, dardarpoate fi "exportatpoate fi "exportat"" comenzilor apelate cu comanda exportexport
-
8/8/2019 1_Prezentare_Shell_Unix
35/40
35
Variabile ShellVariabile Shell
la execuia unei comenzi, orice variabil care face parte dinacea comand va fi nlocuit (substituit) prin valoarea sacurent, care poate fi i rezultatulrezultatul unei comenzi
referinreferinaa la o variabil (nlocuirea ei cu valoarea sa curent) seface cu ${${nnuummee}} sau cu $$nnuummee , dac nu exist ambiguitate
un ir de caractere vidvid sau coninnd caractere specialecaractere specialei/sau spatiispatii va fi delimitat cu ghilimele "" sau cu apostroafe ''
-
8/8/2019 1_Prezentare_Shell_Unix
36/40
36
Variabile speciale ale shellVariabile speciale ale shell--uluiului
Variabile speciale$? codul de retur al ultimei comenzi$# numarul de parametri pozitionali (din linia de comanda)$$ pid-ul shell-ului curent$! pid-ul ultimului proces executat in background
$0$0 numele script-ului curent (sau a shell-ului curent)
$1$1....$9$9 parametrii poziionali (introdui de utilizator n linia de c-d)
Variabile create de shell (n afar de ?? )
""$*$*"" toate argumentele separate de spatiu formeaz un singurcuvnt (un singur ir)
""$@$@"" lista cuprinznd $#$# parametri poziionali
-
8/8/2019 1_Prezentare_Shell_Unix
37/40
37
Comanda de testare obiect shell :Comanda de testare obiect shell : test(1)test(1)
testtest expresieexpresie sau [[ expresieexpresie ]]
Evalueaz expresiexpresiee i ntoarce 00 dac ea este adevaratadevarat , sau ovaloare diferitvaloare diferit de zerode zero dac este falsfals
se folosete cu instruciunile ifif, whilewhile , untiluntil
n bashbash, operatorul extins [ ][ ] permite expresii simplificate expresiexpresiee se construiete pe baza unei sintaxe specifice comenzii testtest
Pentru testare iruri de caractere expresiile sunt :
--zz irir adevrat dac irirare lungimea egal cu 0 (ir vid)
--nn irir adevrat dac irirare lungimea diferita de 0 (sir non-vid)ir1ir1 == ir2ir2 adevrat dac irir11 este identic cu irir22
ir1ir1 !=!= ir2ir2 adevrat dac irir11 este diferit de irir22
irir adevrat dac irir11 nu este vid
-
8/8/2019 1_Prezentare_Shell_Unix
38/40
38
test (2)
Expresii pentru testare fiiere--ddfifiierier adevrat dac fifiierierexist i este un director
--ff fifiierier adevrat dac fifiierierexist i este un fiier ordinar (obinuit)
--cc fifiierier adevrat dac fifiierierexist i este de tip special-caracter
--bb fifiierier adevrat dac fifiierierexist i este de tip special-bloc
--hh fifiierier adevrat dac fifiierierexist i este de tip legatur simbolic
--pp fifiierier adevrat dac fifiierierexist i este de tip conduct cu nume--rr fifiierier adevrat dac fifiierierexist i permite citire pentru utiliz. curent
--ww fifiierier adevrat dac fifiierierexist i permite scriere pentru utiliz. curent
--xx fifiierier adevrat dac fifiierierexist i permite executie pentru utiliz. curen
--kk fifiierier adevrat dac sticky-bit pentru fifiieriereste on
--uu fifiierier adevrat dac bitul suid pentru fifiieriereste on --gg fifiierier adevrat dac bitul sgid pentru fifiieriereste on
--ss fifiierier adevrat dac fifiierierare lungimea diferit de 0
--tt descriptdescript adevrat dac fiierul avnd descriptorul descriptdescript(egal implicitcu 1) corespunde unui dispozitiv de tip terminal
-
8/8/2019 1_Prezentare_Shell_Unix
39/40
39
test (3)test (3)
Testare numeren1 relrel n2 adevrat dac relatia rel dintre intregii n1 i n2este
adevarata
relatia relrelse exprim prin --eqeq, --nene , --gtgt , --gege , --ltlt , --lele ATENTIE : Nu confundai operatorii de comparare numere cu cei de
comparare iruri !
Observaii
conditiile compuse se exprima cu ajutorul operatorilor logici:-a (si) , -o (sau), ! (non) plus paranteze rotunde ( ) pentru operanzi
pentru a elimina ambiguitatile, delimitati variabilele cu ghilimele "
operatorii = i != necesita intotdeuna specificarea operanzilor
parantezele ( ) se citeaza (sunt precedate) in mod obligatoriuobligatoriu cu \\
paranteza [ (resp. ]) trebuie sa fie urmata (resp. precedata) de spatiuspatiu
-
8/8/2019 1_Prezentare_Shell_Unix
40/40
40
testtest -- extensiiextensiibashbash
--ee fiier adevrat dac fiierul fiier exist
--OO fiier adevrat dac utilizatorul curent este proprietarul fiierului
--GG fiier adevrat dac grupul din care face parte utilizatorul curenteste grupul proprietarului
--NN fiier adevrat dac fiier ul fiier a fost modificat
de la ultima citire
f1 --ntnt f2 adevrat dac f1 este mai recent decat f2
f1 --otot f2 adevrat dac f1 este mai vechi decat f2
f1 --efef f2 adevrat dac f1 i f2 sunt legaturi (link-uri) fizice
catre acelasi fiier