InfoAcademy-Linux_06 - Facilitati Ale Shell-urilor Si Scripting[ENC]
-
Upload
alexandru-barac -
Category
Documents
-
view
217 -
download
0
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