M06.UF2.NF2.Creació de Scripts

34
Shell Bash – Expressions regulars És una representació, segons unes regles sintàctiques d’un llenguatge formal, d’una porció de text genèric a buscar dins d’un altre text, com per exemple caràcters, paraules o patrons de text concrets.

description

script

Transcript of M06.UF2.NF2.Creació de Scripts

Shell Bash Expressions regularss una representaci, segons unes regles sintctiques dun llenguatge formal, duna porci de text genric a buscar dins dun altre text, com per exemple carcters, paraules o patrons de text concrets.

Shell Bash Variables del shell

Al shell, una variable s un nom que representa un valor. Poden ser:Variables locals: noms sn visibles pel shell en el qual estem treballant, no sn visibles per cap shell fillVariables dentorn: sn visibles tant pel shell pare com pels shells fills.export NOM_VAR = valorSintaxi: nom_variable=valorExemple:PREFIX=extraecho ${PREFIX}ordinari

Shell Bash Variables del shell

Hi ha diverses ordres relacionades amb les variables:Ordre setPermet veure totes les variables (locals i dentorn) definides en una sessiOrdre envPermet veure les variables dentorn definides en una sessiOrdre unset nom_variableElimina la variable i el valor associat a la variableEn qualsevol sessi del shell Bash hi ha presents una srie de variables dentorn predefinides pel sistema que ens poden resultar tils en la programaci de scripts.

Shell Bash Variables del shell

Shell Bash Substituci dordres

Sintaxi: $(ordre) o b `ordre`Exemple: echo La data del sistema s: $(date)Exemple: COPIA=/var/backup-`date +$mmddaa`.tgz

Si la sortida de lordre que substitum cont salts de lnia, el shell els substituir per espais en blanc. Exemple: echo $(seq 10)

Shell Bash Carcters especials

Hi ha carcters que per a la shell tenen un significat especial. Existeixen diferents tcniques per tal que la shell ignori aquest significat o el tingui en compte:\ anulla el significat especial del carcter que va darrera anulla el significat especial de tots els carcters que estiguin dins les cometes anulla el significat especial de tots els carcters excepte: $ \ `` Exemple: echo Aix s \una prova\Exemple: echo Sc el/la $LOGNAME i estic a \$PWD: $PWD

Shell Bash Redirecci de lentrada i sortida

Tots els programes executats mitjanant un shell inclouen 3 fitxers predefinits:Standard Input: Normalment assignada al teclat. Utilitza el descriptor nmero 0Standard Output: Normalment assignada a la pantalla. Utilitza el descriptor 1Standard Error: Normalment assignada a la pantalla. Utilitza el descriptor 2El shell ens permet redirigir lentrada o la sortida estndards duna ordre:Redirecci dentrada: Permet que les ordres agafin les dades dun fitxer enlloc de des del teclatRedirecci de sortida: Ens permet enviar la sortida a un fitxer enlloc de a la pantallaRedirecci de sortida derrors: Ens permet enviar la sortida derrors a un fitxer enlloc de a la pantalla

Shell Bash Redirecci de lentrada i sortida

Shell Bash Canonades o pipes

El shell ens permet enllaar la sortida duna ordre com a entrada duna altra mitjanant pipes.Sintaxi: ordre1 | ordre2

Es poden fer pipes ms llargs:cat /etc/passwd | sort | more

Shell Bash Filtres

Els filtres sn molt tils per processar el contingut dels fitxers de text. Sn programes que reben dades per stdin i treuen dades per stdout, sense modificar les dades entrades per stdin.cat [-n] [nom_fitxer]mostra stdin/nom_fitxer-n numera les lnieshead [-num] [nom_fitxer]Mostra les primeres num lnies del fitxer/stdin (10 per defecte)tail [-num] [nom_fitxer]Mostra les ltimes num lnies del fitxer/stdin (10 per defecte)

Shell Bash Filtres

wc [-lwc] [nom_fitxer]Compta lnies, paraules i carcters de stdin/nom_fitxer

cut -cllista [nom_fitxer]Extreu les columnes citades a llista. Format de llista:

A,Bseleccionar columnes/camps A i BA-Bseleccionar columnes/camps des dA fins a BA-des de la columna/camp A fins al final-Bdes del principi fins a la columna/camp B-lnoms el nombre de lnies-wnoms el nombre de paraules-cnoms el nombre de carctersShell Bash Filtres Exemples

cat /var/log/messagesMostra el contingut de tot el fitxerhead -3 /var/log/messagesMostra les 3 primeres lniestail f /var/log/messagesMostra les ltimes lnies a mida que va canviantwc l /var/log/messagesMostra el nmero de lniescut c1-3 /etc/passwdMostra les 3 primeres lletres dels usuaris del sistemacut d: -f1,6 /etc/passwdMostra el nom i el directori de treball dels usuarisShell Bash Filtres

cut -fllista -dsep [nom_fitxer]Extreu els camps citats a llista segons el separador sepEl format de la llista s igual a lanterior

grep [-cinv] patr [nom_fitxer]Recerca de les lnies dels fitxers/stdin del patr determinat

-cNoms mostra el nmero de lnia-iIgnora majscules/minscules-nAfegeix el nmero de lnia-vMostra les lnies que no contenen el patrShell Bash Filtres

grep [-cinv] patr [nom_fitxer] Format de patr (expressions regulars bsiques)

.Qualsevol carcter simple[]Conjunt de carcters[^ ]Qualsevol carcter no incls als claudtors[ - ]Rangs*0 o ms ocurrncies de lexpressi precedent+1 o mes ocurrncies de lexpressi precedent^expQualsevol cadena que comenci amb expexp$Qualsevol cadena que acabi amb expShell Bash Filtres

tr c1 c2 [nom_fitxer]Tradueix c1 per c2 de nom_fitxer/stdin

sed s/expr1/expr2/[g]Substitueix expr1 per expr2g substitueix totes les ocurrncies

sed r s/expr1/expr2/[g]Substitueix expr1 per expr2 amb expressions regulars complexesg substitueix totes les ocurrncies

Shell Bash Filtres

sort [-ndutsep] [-k num] [nom_fitxer]Ordena les lnies de nom_fitxer/stdin

uniq [nom_fitxer]Converteix diverses lnies consecutives de nom_fitxer/stdin en una de sola

tee [-a] nom_fitxer1 [nom_fitxer2]Mostra per pantalla nom_fitxer2/stdin i ho escriu a nom_fitxer1-a enlloc de sobreescriure nom_fitxer1 afegeix a continuaci-nOrdenaci numrica-dNo t en compte carcters que no siguin lletres, nmeros o blancs-uNo t en compte les lnies duplicades-tsepEspecifica un delimitador de camp-knumEspecifica que ordenarem pel camp numShell Bash Filtres Exemples

grep i ^m /etc/passwdMostra els usuaris que el seu nom comenci per m o Mgrep ^.*:x:1...: /etc/passwdMostra els usuaris que el seu id estigui entre el 1000 i el 1999grep :/bin/bash$ /etc/passwdMostra els usuaris que tinguin per shell /bin/bashgrep v :/bin/bash$ /etc/passwdMostra els usuaris que tinguin qualsevol altres shelltr : - /etc/passwdMostra el fitxer amb els camps separats per un -tr s , /etc/passwdMostra el fitxer reduint totes les comes a unased s/\/bin\/bash/\/bin\/sh/ /etc/passwdMostra el fitxer canviant la shell /bin/bash per /bin/shsort /etc/passwdMostra el fitxer ordenat pel nom dusuarisort nt: -k3 /etc/passwdMostra el fitxer ordenat per lidentificador dusuariShell Bash Execuci de scriptsNom dels scripts: nom_script.sh

Per executar el script, li donem permisos dexecuci a lusuari que ha dexecutar-lo:chmod u+x holamon.shI desprs lexecutem: ./holamon.shTamb el podem executar amb bash holamon.sh

Shell Bash Interacci amb lusuariecho: mostra una cadena de text afegint un salt de lnia per la sortida estndardecho e \n\n\tHola, mn!!\n\n (amb e interpreta carcters amb \)read nom_variable: llegeix el que lusuari introdueix per teclat fins que hi ha un salt de lnia i assigna les dades a la variable nom_variable.

Shell Bash Parmetres en un shell scriptEls parmetres dins del programa sn accessibles utilitzant les variables $0, $1, $2, $3 ... ${10}, ${11}, ${12}, ...

Shell Bash Parmetres Variables especials

Shell Bash Parmetres Variables especials

Shell Bash Parmetres Control

La construcci doble parntesi, (( )), permet avaluar expressions aritmtiques de manera equivalent a lordre letEn aquest cas, podriem haver fet: let SUMA=$1+$223Shell Bash Ordre testtest expressi_test o b [expressi_test]: avalua expressions lgiques i genera un codi de sortida (cert: 0, fals: diferent de 0)

Shell Bash Ordre test

Shell Bash Estructura if

Shell Bash Estructura if-else

Shell Bash Estructura if-elif-else

Shell Bash Estructura case

Shell Bash Estructura while i until

Shell Bash Estructura for

Shell Bash Funcions

Shell Bash Funcions Parmetres

Shell Bash Funcions Codis de retorn