Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bash Scripting
Bash Scripting
Qu vamos a ver?
El intrprete de comandos:
Comandos bsicos.
Tuberas.
Comandos de filtrado.
Otros comandos.
Scripting.
Optimizaciones.
Intrprete de comandos
Shells
Entorno de trabajo:
$: usuario normal
#: usuario administrador/a (root)
Comandos bsicos
ls: listar.
man: manual.
more: paginador.
Tuberas
Tuberas
ls>>listados.txt
ls>listado.txt
ls2>errores.txt
ls2>>errores.txt
Tuberas
traA<fichero.txt
Tuberas:
catfichero.txt|traA
Comandos de filtrado
Bsquedas y regexps
Comandos de bsqueda:
Bsquedas y regexps
Metacaracteresvlidos:
.(uncarctercualquiera)
*(ceroomsocurrenciasdelcarcteranterior)
^(principiodelnea)
$(findelnea)
[af](cualquiercarcterdelrango)
\<\>(principioyfindepalabra)
Bsquedas y regexps
Opciones tpicas:
Bsquedas y regexps
Patrones
.(uncarctercualquiera)
*(ceroomsocurrenciasdelcarcteranterior)
^(principiodelnea)
$(findelnea)
[af](cualquiercarcterdelrango)
[AD](caracteres'','A','D')
[^56](todosloscaracteresexcepto'5'y'6')
[5^6](caracteres'5','^','6')
[[:alnum:]](todosloscaracteresalfanumricos)
Bsquedas y regexps
expresion_regular\{min,max\}
expresion_regular\{exact\}
expresion_regular\{min,\}
grep'er\{2,\}'fichero
(buscalineasconalmenosdoscaracteres
'r'precedidosporuna'e').
Bsquedas y regexps
Bsquedas y regexps
Qu es awk?
awk'patron{accion}'fichero...
Bsquedas y regexps
Qu es awk?
Bsquedas y regexps
Expresiones regulares
/x+/
Una o ms ocurrencias de x
/x?/
Una o ninguna ocurrencia de x
/x|y/ Tanto x como y
(string) Agrupa una cadena para usar con + o ?
Bsquedas y regexps
Sentencia print
Es de las ms utilizadas
awk'patron{print}'f_ent>f_sal
esteejemploseralomismoque:
$greppatronf_ent>f_sal
Referenciandocampos:
$0:Registrocompleto
$1:Primercampodelregistro
$2:Segundocampodelregistro
...
Bsquedas y regexps
Ms funcionalidades:
Comentarios con #
$awk'$1~/^[T]/||$3~/^[46]/{print}fichero
Bsquedas y regexps
Ms funcionalidades:
Variables de usuario
Operaciones aritmticas
Estructuras de control
if else if else
while
for
Bsquedas y regexps
find[path]opciones
Opcionestpicas:
namenombre
type(d|f|l|s|...)
maxdepthn
mindepthn
mtimen
execcomando\;({}indicaelfichero)
Usuarios y grupos
Propietarios y permisos
Gestin de procesos
pgrep: ps + grep.
Gestin de procesos
Comandos de backup
zgrepcadenafile.gz
gzipcfile.gz|grepcadena
Shell Scripts
Script = Guin.
Tareas repetitivas se pueden agrupar en un
guin y ejecutarse automticamente (Batch
Processing).
Shell Scripts
Contenido de hola.sh:
#!/bin/sh
echohola
Shell Scripts
Variables:
FECHA=15/07/2004
echoHoyes$FECHA
Shell Scripts
Variables de entorno:
Shell Scripts
Variables: interactividad
#!/bin/sh
echoDimetunombre:
readNOMBRE
echoHola$NOMBRE,encantadode
conocerte
Shell Scripts
Variables: argumentos
cat nombre.sh
#!/bin/sh
echoNombre:$1
echoPrimerApellido:$2
echoSegundoApellido:$3
./nombre.shJuanLpezMartnez
./nombre.shMariaDoloresPraderaSnchez
Shell Scripts
Variables: argumentos
$0 es el propio script.
Shell Scripts
Shell Scripts
LISTADO=`ls`
LISTADO=$(ls)
LISTADO=$(ls$(catdirectorios.txt))
Shell Scripts
Sintaxis: exprARG1OPARG2
$SUMA=`expr7+5`
(ojoespacios!)
$echo$SUMA
12
$expr7\>5 (ojoescaparoperadores!)
$expr\(7+5\)\*2
Ejercicio:Obtenerelmesanterioralactualconunasola
sentenciaexpr;)
Shell Scripts
Condiciones: test [ ]
cero = verdadero
no cero = falso
Shell Scripts
ifcomando_if
then
comandos_then
elifcomando_elif
then
comandos_elif
else
comandos_else
fi
Shell Scripts
if. Ejemplo:
iftest$NOMBRE==Juan
then
echoHolaJuanin,qutal?
eliftest$NOMBRE==Pedro
then
echoPedreteee,cuntotiempo!
else
echoNoteconozco
fi
Shell Scripts
case$VARIABLEin
VALOR1)comandos_valor1
;;
VALOR2)comandos_valor2
;;
*)comandos_default;
esac
Shell Scripts
case. Ejemplo:
case$NOMBREin
Juan)echoHolaJuanin,qutal?
;;
Pedro)echoPedro,cuntotiempo!
;;
*)echonoteconozco;
esac
Shell Scripts
whilecomando
do
comandos
done
Shell Scripts
while. Ejemplo:
N=1
while[$Nlt100]
do
echoRepito,yavoy$Nveces
N=$(expr$N+1)
sleep1#Esperamos1segundo
done
Shell Scripts
untilcomando
do
comandos
done
Shell Scripts
N=1
until[$Nge100]
do
echoRepito,yavoy$Nveces
N=$(expr$N+1)
done
Shell Scripts
forVARIABLEinLISTA
do
comandos
done
Shell Scripts
for. Ejemplo:
forNinSopaArrozPandeajo
do
echoHoycomemos$N
done
Shell Scripts
IFS=:
echoDirectoriosenelPATH...
forDIRin$PATH
do
echo$DIR
done
Shell Scripts
forNin12345678910
do
echoNahoravale$N
done
forNin$(seq10)
do
echoNahoravale$N
done
Shell Scripts
selectVARIABLEinLISTA
do
comandos
done
Shell Scripts
select: Ejemplo:
selectOPCIONinDonerKebabPizza
do
case$OPCIONin
DonerKebab)echoMmmm...
break;;
Pizza)echoSlurppp!
break;;
*)echoNosqueseso
esac
done
Shell Scripts
function:
Shell Scripts
function. Ejemplo:
#!/bin/sh
functionsuma
{
echo$(expr$1+$2)
}
suma46
suma3234
Shell Scripts
source, .
Optimizaciones
$(ls)*
forFin$(ls)==forFin*
catfichero|comandocomando<fichero
catfichero|greppatron
greppatron<fichero
echo$VAR|comandocomando<<<$VAR
echo$PATH|cutd:f1
cutd:f1<<<$PATH
while:;doechosiempre;done
Optimizaciones
ifcomando1
then
comando2
fi
testf/etc/passwd&&echopasswd
encontrado
Optimizaciones
OR (||): comando1||comando2
ifcomando1
then
:
else
comando2
fi
testf/etc/passwd||echoerror:sinpasswd
Optimizaciones
Bloques:
{
echoListado...;ls;
echoFindelistado
}>listado.txt
forFin*
do
cat$F
done|wclines
Optimizaciones
Bloques:
( ): subshells.
(sleep3&&echofinshell1)&
(sleep5&&echofinshell2)&
Seales:
trap'echocapturadaseal'23
kill2PID
kill3PID
Referencias
* Universidad de Deusto