You are on page 1of 34

Shell Bash Expressions regulars

s 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 fill
Variables dentorn: sn visibles tant pel shell pare com pels shells fills.

export NOM_VAR = valor

Sintaxi: nom_variable=valor
Exemple:
PREFIX=extra
echo ${PREFIX}ordinari

Shell Bash Variables del shell


Hi ha diverses ordres relacionades amb les variables:
Ordre set
Permet veure totes les variables (locals i dentorn) definides en una sessi
Ordre env
Permet veure les variables dentorn definides en una sessi
Ordre unset nom_variable
Elimina la variable i el valor associat a la variable

En 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 0
Standard Output: Normalment assignada a la pantalla. Utilitza el descriptor 1
Standard Error: Normalment assignada a la pantalla. Utilitza el descriptor 2
El 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 teclat
Redirecci de sortida: Ens permet enviar la sortida a un fitxer enlloc de a la
pantalla
Redirecci 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 lnies
head [-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
-l

noms el nombre de lnies

-w

noms el nombre de paraules

-c

noms el nombre de carcters

cut -cllista [nom_fitxer]


Extreu les columnes citades a llista. Format de llista:
A,B

seleccionar columnes/camps A i B

A-B

seleccionar columnes/camps des dA fins a


B

A-

des de la columna/camp A fins al final

-B

des del principi fins a la columna/camp B

Shell Bash Filtres Exemples


cat /var/log/messages

Mostra el contingut de tot el fitxer

head -3
/var/log/messages

Mostra les 3 primeres lnies

tail f
/var/log/messages

Mostra les ltimes lnies a mida que va


canviant

wc l /var/log/messages

Mostra el nmero de lnies

cut c1-3 /etc/passwd

Mostra les 3 primeres lletres dels usuaris del


sistema

cut d: -f1,6
/etc/passwd

Mostra el nom i el directori de treball dels


usuaris

Shell Bash Filtres


cut -fllista -dsep [nom_fitxer]
Extreu els camps citats a llista segons el separador sep
El format de la llista s igual a lanterior
grep [-cinv] patr [nom_fitxer]
Recerca de les lnies dels fitxers/stdin del patr determinat
-c

Noms mostra el nmero de lnia

-i

Ignora majscules/minscules

-n

Afegeix el nmero de lnia

-v

Mostra les lnies que no contenen el patr

Shell 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

^ex
p

Qualsevol cadena que comenci amb exp

exp$ Qualsevol cadena que acabi amb exp

Shell Bash Filtres


tr c1 c2 [nom_fitxer]
Tradueix c1 per c2 de nom_fitxer/stdin
sed s/expr1/expr2/[g]
Substitueix expr1 per expr2
g substitueix totes les ocurrncies
sed r s/expr1/expr2/[g]
Substitueix expr1 per expr2 amb expressions regulars complexes
g substitueix totes les ocurrncies

Shell Bash Filtres


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

-n

Ordenaci numrica

-d

No t en compte carcters que no siguin lletres, nmeros o


blancs

-u

No t en compte les lnies duplicades

-tsep

Especifica un delimitador de camp

-knum Especifica que ordenarem pel camp num


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

Shell Bash Filtres Exemples


grep i ^m /etc/passwd

Mostra els usuaris que el seu nom comenci per m


oM

grep ^.*:x:1...: /etc/passwd

Mostra els usuaris que el seu id estigui entre el


1000 i el 1999

grep :/bin/bash$ /etc/passwd

Mostra els usuaris que tinguin per shell /bin/bash

grep v :/bin/bash$ /etc/passwd Mostra els usuaris que tinguin qualsevol altres
shell
tr : - /etc/passwd

Mostra el fitxer amb els camps separats per un -

tr s , /etc/passwd

Mostra el fitxer reduint totes les comes a una

sed s/\/bin\/bash/\/bin\/sh/
/etc/passwd

Mostra el fitxer canviant la shell /bin/bash per


/bin/sh

sort /etc/passwd

Mostra el fitxer ordenat pel nom dusuari

sort nt: -k3 /etc/passwd

Mostra el fitxer ordenat per lidentificador dusuari

Shell Bash Execuci de scripts


Nom dels scripts: nom_script.sh

Per executar el script, li donem permisos dexecuci a lusuari que ha


dexecutar-lo:
chmod u+x holamon.sh
I desprs lexecutem: ./holamon.sh
Tamb el podem executar amb bash holamon.sh

Shell Bash Interacci amb lusuari


echo: mostra una cadena de text afegint un salt de lnia per la sortida
estndard
echo 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 script


Els 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

Shell Bash Ordre test


test 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

You might also like