InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

download InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

of 23

Transcript of InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    1/23

       

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    2/23

       

    •  

    •  

    •  

         

       

       

       

       

       

    •  

       

     

     

           

    •  

    •  

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    3/23

       

     

      

    •  

    •  

    •    

     

     

    alias comanda_noua='sir de caractere'

      

    alias f='mozilla-firefox'

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    4/23

       

           

    f –width 800 –height 600 yahoo.com 

      

    •  

    alias ncc='named-checkconf'

    •  

    alias dir='ls'

    •  

    alias ll='ls –l'

    •  

    alias testnet='ping –c 3 yahoo.com|tail -2'

    •  

    alias rm='rm –i'

    \rm –rf /test

    bash$ aliasalias md='mkdir'

    alias rm='rm -i'

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    5/23

       

    bash$ unalias mdbash$ aliasalias rm='rm -i'

    # a disparut alias-ul md creat anterior

    •  

    •  

    −  

    −  

     

    USER=student

       

    DIR=”Program Files”DIR='Program Files'

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    6/23

       

    bash$ DIR=/tmpbash$ ls -ld $DIRdrwxrwxrwt 15 root root 784 2009-05-22 14:44 /tmp

    bash$ mkdir $NEWDIRmkdir: missing operandTry `mkdir --help' for more information.

         

     

    −    

    −    

    bash$ setBASH=/bin/bashBASH_ARGC=()BASH_ARGV=()BASH_COMPLETION=/etc/bash_completion[...]bash$ echo $BASH_COMPLETION/etc/bash_completion

    student@Desktop $ OPTION=2student@Desktop $ echo “Ati ales optiunea $OPTION”Ati ales optiunea 2student@Desktop $ unset OPTIONstudent@Desktop $ echo “Ati ales optiunea $OPTION”Ati ales optiunea

     

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    7/23

       

       

       

    [student@Desktop:/tmp]$ echo $PS1[\u@\h:\w]\$[student@Desktop:/tmp]$ PS1='\u -->\w'[student  /tmp]

     

     

    student@Desktop $ man lsLS(1) User Commands LS(1)NAME

    ls - list directory contents[...restul output-ului a fost omis...]student@Desktop $ PAGER='wc -l'student@Desktop $ man lsLS(1) User Commands LS(1)

    NAMEls - list directory contents

    [...restul output-ului a fost omis...]

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    8/23

       

    student@Desktop $ export PAGERstudent@Desktop $ man ls231

     

    export PAGER='wc -l'

    student@Desktop $ env|grep PAGERPAGER=wc -l

     

    •    

    •    

     

      

    •    

    •    

    •  

     

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    9/23

       

     

         

       

    •      

    •    

         

      

                  

     

     

    −  

      −  

     

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    10/23

       

       

     

     

     

    student@Desktop $ cat s1.shCOLOR=bluestudent@Desktop $ ./s1.shstudent@Desktop $ echo “Culoarea este $COLOR”Culoarea este# $COLOR nu e definit si deci se inlocuieste cu sirul vid

     

     

    student@Desktop $ cat s1.shCOLOR=redstudent@Desktop $ source ./s1.shstudent@Desktop $ echo “Your color is now $COLOR”Your color is now red

     

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    11/23

       

     

    # comentariu de o liniealias # afiseaza alias-urile curente

               

       

    student@Desktop $ COLOR=redstudent@Desktop $ echo “A color has been defined” # afisare sir de caractere specificat explicitA color has been defined

    student@Desktop $echo “The color is: $COLOR” # afisare sir ce contine si valori de variabileThe color is: redstudent@Desktop $echo “3 x 2 =” $((3*2)) # afisare sir ce contine si expresii aritmetice3 x 2 = 6

         

         

       

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    12/23

       

    student@Desktop $ echo UnuUnustudent@Desktop $ echo DoiDoistudent@Desktop $ echo -n Unu; echo DoiUnuDoi

    cat /etc/services | egrep ".*sh.*" \| grep 22 | \

     wc -l

     

    −  

    −  

    −  

    −  

    −  

    if [ $OPTION == exit ]; then [...diverse alte instructiuni...]

    if [ ignore == exit ]; then [...diverse alte instructiuni...]

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    13/23

       

    if [ == exit ]; then [...diverse alte instructiuni...]

     

     

     

    Exemple:# crearea unei variabile de tip intstudent@Desktop $ declare -i LEVEL=5

    # crearea unei constante MAXstudent@Desktop $ declare -r MAX=10

    # la incercarea de modificare a valorii constantei primim eroare:student@Desktop $ MAX=5bash: MAX: readonly variable

       

               

    student@Desktop $ ls -l /etc/hosts-rw-r--r-- 1 root root 253 2009-05-03 18:16 /etc/hosts

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    14/23

       

    student@Desktop $ echo $?0student@Desktop $ ls -l /etc/inexistentls: cannot access /etc/inexistent: No such file or directorystudent@Desktop $ echo $?2

     

       

       

    #!/bin/bashecho “Culoarea mea preferata este $1“

    student@Desktop $ ./culoare.sh rosuCuloarea mea preferata este rosustudent@Desktop $ ./culoare.sh verdeCuloarea mea preferata este verde

    •      

    •  

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    15/23

       

    •  

    # crearea unui director numit *mkdir \*

    # crearea unui director al carui nume contine un spatiu; fara quoting s-ar fi creat 2 directoare!mkdir “Poze Tabara”

    # intrarea in directorul creat anterior se poate face acum in trei moduricd “Poze Tabara”cd 'Poze Tabara'cd Poze\ Tabara

    # variabilele intre ghilimele se inlocuiesc cu valoarea lorCULOARE=bleu;echo “Culoare aleasa: $CULOARE”# afiseaza Culoare aleasa: bleu

    # variabilele intre apostroafe nu mai sunt substituiteecho 'Culoare aleasa: $CULOARE'# afiseaza Culoare aleasa: $CULOARE

     

    # memorarea numarului de linii ale unui fisier intr-o variabilaNRLINII=`cat /etc/termcap|wc -l`

    # folosirea output-ului unei comenzi ca partea a alteiaFISIER=/etc/termcapecho “Fisierul $FISIER are `cat $FISIER|wc -l` linii”

     

     

    function numefunctie() {comanda 1comanda 2...

    }

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    16/23

       

      

     

    student@Desktop $ function hello() { echo “Salut $1, bine ai venit”; return 100; }student@Desktop $ hello MihaiSalut Mihai, bine ai venitstudent@Desktop $ echo $?100student@Desktop $ unset -f hello

     

         

       

     

     

        

       

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    17/23

       

    # pentru executia conditionata a unei portiuni de codif comanda_conditie; then

    lista_comenzifi

    # pentru executia uneia din doua portiuni de cod# lista_comenzi_1 va fi executata numai daca comanda_conditie se executa cu succes;# in caz contrar se executa lista_comenzi_2if comanda_conditie; then

    lista_comenzi_1elselista_comenzi_2

    fi

       

     

                       

                           

                                         

     

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    18/23

       

               

     

    #!/bin/bash

    read FISIER

    # a fost introdus ceva?if [ -z $FISIER ]; then echo “Lipseste numele fisierului”; exit 1; fi

    # fisierul introdus este unul obisnuit asupra caruia scriptul are drept de citire?if [ ! -f $FISIER -o ! -r $FISIER ]; thenecho “Fisierul trebuie sa fie unul obisnuit si sa poata fi citit”; exit 2;

    fi

    # fisierul este gol? (verificam daca sirul reprezentat de continutul lui este vid)if [ -z “`cat $FISIER`” ];then echo “Eroare – fisierul este gol”; exit 3; fi

    # fisierul are cel putin 10 linii? (capturam output-ul lui wc si il comparam cu 10)if [ “`cat $FISIER|wc -l`” -lt 10 ];then echo “Fisierul nu are suficiente linii”; exit 4; fi

    # daca am trecut de toate filtrele si am ajuns aici, putem afisa continutul sauless $FISIER

    case expresie invaloare1) lista_instructiuni_1;

    ;;valoare2) lista_instructiuni_2;

    ;;valoare3 |valoare4) lista_instructiuni_3

    ;;*) lista_instructiuni_default;

    ;;esac

       

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    19/23

       

       

     

     while comanda_test; do lista_comenzi; done

         

     while [ -z $USR -o -z “`cat $USR|egrep “^[A-Za-z]+$”`” ];doecho “Introduceti un username format numai din litere”

    read USRdone

     

     

    for VAR in lista_cuvinte_sau_linii; do lista_comenzi; done

    for SPORT in tennis hiking soccer; do

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    20/23

       

    echo “I love $SPORT”done

     

     

    for NR in `cat $fisier | egrep “^07[[:digit:]]{8}$”`; doecho '+4'$NR; # afisarea cu prefix de tara, in formatul +40723456789

    done

    for n in `seq 1 10`; do echo $n; done

      

     

       

       

    for i in `seq 1 10`; do echo -n “$i “; if [ $i -eq 2 ]; then break; fi; done; echo GATA # afiseaza: 1 2 GATA 

    for i in `seq 1 3`; doecho -n "begin $i | "; if [ $i -eq 2 ]; then continue; fi; echo -n "end $i | "

    done

    # begin 1 | end 1 | begin 2 | begin 3 | end 3 | (end 2 este omis din cauza lui continue)

     

    echo “Introduceti data nasterii”read DATA if [ -z $DATA ]; then echo “Eroare - data introdusa este vida”

       

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    21/23

       

       

       

       

    cat /etc/passwd | grep student | cut -d ":" -f 1,6,7# afiseaza: student:/home/student:/bin/bash

       

    comanda1|comanda 2|...|comanda n|sed -e 's/regex_sir_de_inlocuit/sir_inlocuitor/g'

             

       

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    22/23

       

  • 8/9/2019 InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]

    23/23