REDIRECCIONES
output (salida estndar)
tee fichero
# output a fichero y a pantalla
> fichero
# output a fichero
>> fichero
# output al final del fichero
> /dev/null
# descarta output
error
2>&1
# error a output
2> fichero
# error a fichero
2>> fichero
# error al final del fichero
2> /dev/null
# descarta error
output y error
2>&1 | tee fichero
# ambos a fichero y a pantalla
&> fichero
# ambos a fichero
&>> fichero
# ambos al final del fichero
VARIABLES
variables de entorno
$PWD
# directorio de trabajo actual
$OLDPWD
# directorio de trabajo anterior
$PPID
# identificador del proceso padre
$HOSTNAME
# nombre del ordenador
$USER
# nombre del usuario
$HOME
# directorio del usuario
$PATH
# rutas bsqueda de comandos
$LANG
# idioma para los mensajes
$FUNCNAME
# nombre funcin en ejecucin
$LINENO
# nmero de lnea actual (del script)
$RANDOM
# nmero aleatorio
variables especiales
$0
# nombre del script
${N}
# parmetro N
$$
# identificador del proceso actual
$!
# identificador del ltimo proceso
$@
# todos los parmetros recibidos
$#
# nmero de parmetros recibidos
$? # (0=normal, >0=error)
# cdigo de retorno del ltimo comando
shift
# $1=$2, $2=$3, ... ${N-1}=${N}
ARRAYS
declare a ARRAY
# declaracin array
ARRAY=(valor1 ... valorN)
# asignacin compuesta
ARRAY[N]=valorN
# asignacin simple
ARRAY=([N]=valorN valorM [P]=valorP)
# asigna celdas N, M y P
${ARRAY[N]}
# valor celda N
${ARRAY[*]}
# todos los valores
Autor: Adolfo Sanz De Diego (asanzdiego - Blog|GitHub|LinkedIn|SlideShare|Twitter)
Licencia: CC-BY-SA
OPERADORES
operadores aritmticos
+
# suma
# resta
# multiplicacin
# divisin
# resto
++
# incremento
--
# decremento
operadores comparaciones numricas
numero1 eq numero2
# numero1 igual que numero2
numero1 ne numero2
# numero1 distinto que numero2
numero1 lt numero2
# numero1 menor que numero2
numero1 le numero2
# numero1 menor o igual que numero2
numero1 gt numero2
# numero1 mayor que numero2
numero1 ge numero2
# numero1 mayor o igual que numero2
operadores lgicos
!
# NOT
&& , -a
# AND
|| , -o
# OR
operadores de ficheros
-e fichero
# existe
-s fichero
# no est vaco
-f fichero
# normal
-d fichero
# directorio
-h fichero
# enlace simblico
-r fichero
# permiso de lectura
-w fichero
# permiso de escritura
-x fichero
# permiso de ejecucin
-O fichero
# propietario
-G fichero
# pertenece al grupo
f1 -ef f2
# f1 y f2 enlaces mismo archivo
f1 -nt f2
# f1 ms nuevo que f2
f1 -ot f2
# f1 ms antiguo que f2
operadores de cadenas
-n cadena
# no vaca
-z cadena
# vaca
cadena1 = cadena2
# cadena1 igual a cadena2
cadena1 == cadena2
# cadena1 igual a cadena2
cadena1 != cadena2
# cadena1 distinta a cadena2
Autor: Adolfo Sanz De Diego (asanzdiego - Blog|GitHub|LinkedIn|SlideShare|Twitter)
Licencia: CC-BY-SA
ENTRECOMILLADO
#! RUTA
# ruta al interprete (/bin/bash)
\carcter
# valor literal del carcter
linea1 \ linea2
# para escribir en varias lineas
'cadena'
# valor literal cadena
cadena
# valor literal cadena, excepto $ ' \
EXPANSIN
[prefijo]{cad1,[,...],cadN}[sufijo]
# = precad1suf ... precadNsuf
${VARIABLE:-valor}
# si VARIABLE nula, retorna valor
${VARIABLE:=valor}
# si VARIABLE nula, asigna valor
${VARIABLE:?mensaje}
# si VARIABLE nula, mensaje error y fin
${VARIABLE:inicio}
# recorta desde inicio hasta el final
${VARIABLE:inicio:longitud}
# recorta desde inicio hasta longitud
${!prefijo*}
# nombres de variables con prefijo
${#VARIABLE}
# nmero de caracteres de VARIABLE
${#ARRAY[*]}
# elementos de ARRAY
${VARIABLE#patrn}
# elimina mnimo patrn desde inicio
${VARIABLE##patrn}
# elimina mximo patrn desde inicio
${VARIABLE%patrn}
# elimina mnimo patrn desde fin
${VARIABLE%%patrn}
# elimina mximo patrn desde fin
${VARIABLE/patrn/reemplazo}
# reemplaza primera coincidencia
${VARIABLE//patrn/reemplazo}
# reemplaza todas las coincidencias
$((expresin))
# sustituye expresin por su valor
$[expresin]
# sustituye expresin por su valor
EJECUCIN
./comando
# ejecuta desde directorio actual
$RUTA/comando
# ejecuta desde cualquier sitio
comando
# ejecuta si est en el $PATH
. script
# ejecuta exportando variables
$(comando param1 ... paramN)
# ejecuta de forma literal
`comando param1 ... paramN`
# ejecuta sustituyendo variables
comando &
# ejecuta en segundo plano
c1 | c2
# redirige salida c1 a entrada c2
c1 ; c2
# ejecuta c1 y luego c2
c1 && c2
# ejecuta c2 si c1 termina sin errores
c1 || c2
# ejecuta c2 si c1 termina con errores
ARGUMENTOS DE LNEA DE COMANDOS
while getopts "hs:" option ; do
case "$option" in
h) DO_HELP=1 ;;
s) argument=$OPTARG ; DO_SEARCH=1 ;;
*) echo "Invalid" ; return ;;
esac
done
# getops + "opciones disponibles"
#
mientras haya argumentos
#
seleccionamos
#
-h sin opciones
#
-s con opciones en $OPTARG
#
* error
Autor: Adolfo Sanz De Diego (asanzdiego - Blog|GitHub|LinkedIn|SlideShare|Twitter)
Licencia: CC-BY-SA
ESTRUCTURAS DE CONTROL
if expresin1; then
bloque1
elif expresin2; then
bloque2
else
bloque3
fi
# condicional
#
si expresin1 entonces
#
bloque1
#
sino y expresin2 entonces
#
bloque2
#
si ninguna entonces
#
bloque2
case VARIABLE in
patrn11|...|patrn1N)
bloque1 ;;
patrn21|...|patrn2N)
bloque2 ;;
*)
bloqueDefecto ;;
esac
# selectiva
#
si VARIABLE
#
entonces
#
si VARIABLE
#
entonces
#
si ninguna
#
entonces
for VARIABLE in LISTA; do
bloque
done
# iterativa con lista
#
ejecuta bloque sustituyendo
#
VARIABLE por cada elemento de LISTA
for ((expr1; expr2; expr3; )); do
bloque
done
# iterativa con contador
#
primero se evala exp1
#
luego mientras exp2 sea cierta
#
se ejecutan el bloque y expr3
while expresin; do
bloque
done
# bucle mientras
#
se ejecuta bloque
#
mientras expresin sea cierta
until expresion; do
expresion
done
# bucle hasta
#
se ejecuta bloque
#
hasta que expresin sea cierta
[function] expresion () {
... [ return [valor] ] ...
}
# funcin
#
se invoca con
#
nombreFuncin [param1 ... paramN]
coincide con patrones1
bloque1
coincide con patrones2
bloque2
bloqueDefecto
INTERACTIVIDAD
read [-p cadena] [variable1 ...]
# input
#
lee teclado y asigna a variables
#
puede mostrarse un mensaje antes
#
si ninguna variable, REPLY = todo
echo cadena
-n no hace salto de linea
-e interpreta caracteres con \
# output
#
manda el valor de la cadena
#
a la salida estndar
printf
# output formateado (igual que C)
CONTROL DE PROCESOS
comando &
# ejecuta en segundo plano
bg nmeroProceso
# contina ejecucin en segundo plano
fg nmeroProceso
# contina ejecucin en primer plano
jobs
# muestra procesos en ejecucin
kill seal PID1|nmeroProceso1
# mata proceso(s) indicado(s)
exit cdigo
# salir con cdigo de retorno
# (0=normal, >0=error)
trap [comando] [cdigo1 ...]
# ejecuta comando cuando seal(es)
wait [PID1|nmeroProceso1]
# espera hasta fin proceso(s) hijo(s)
nice -n prioridad comando
renice -n prioridad comando
# ejecuta comando con prioridad [-20/19]
# modifica prioridad comando [-20/19]
# -20 mxima prioridad y 19 mnima
Autor: Adolfo Sanz De Diego (asanzdiego - Blog|GitHub|LinkedIn|SlideShare|Twitter)
Licencia: CC-BY-SA