1_Prezentare_Shell_Unix

download 1_Prezentare_Shell_Unix

of 40

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