Actualizado el 21 de Marzo del 2018 (Publicado el 30 de Noviembre del 2017)
4.262 visualizaciones desde el 30 de Noviembre del 2017
56,4 KB
4 paginas
Creado hace 9a (16/10/2014)
REDIRECCIONES
output (salida estándar)
tee fichero
> fichero
>> fichero
> /dev/null
error
2>&1
2> fichero
2>> fichero
2> /dev/null
output y error
2>&1 | tee fichero
&> fichero
&>> fichero
VARIABLES
variables de entorno
$PWD
$OLDPWD
$PPID
$HOSTNAME
$USER
$HOME
$PATH
$LANG
$FUNCNAME
$LINENO
$RANDOM
variables especiales
$0
${N}
$$
$!
$@
$#
$? # (0=normal, >0=error)
shift
ARRAYS
declare –a ARRAY
ARRAY=(valor1 ... valorN)
ARRAY[N]=valorN
ARRAY=([N]=valorN valorM [P]=valorP)
${ARRAY[N]}
${ARRAY[*]}
# output a fichero y a pantalla
# output a fichero
# output al final del fichero
# descarta output
# error a output
# error a fichero
# error al final del fichero
# descarta error
# ambos a fichero y a pantalla
# ambos a fichero
# ambos al final del fichero
# directorio de trabajo actual
# directorio de trabajo anterior
# identificador del proceso padre
# nombre del ordenador
# nombre del usuario
# directorio del usuario
# rutas búsqueda de comandos
# idioma para los mensajes
# nombre función en ejecución
# número de línea actual (del script)
# número aleatorio
# nombre del script
# parámetro N
# identificador del proceso actual
# identificador del último proceso
# todos los parámetros recibidos
# número de parámetros recibidos
# código de retorno del último comando
# $1=$2, $2=$3, ... ${N-1}=${N}
# declaración array
# asignación compuesta
# asignación simple
# asigna celdas N, M y P
# valor celda N
# todos los valores
Autor: Adolfo Sanz De Diego (asanzdiego - Blog|GitHub|LinkedIn|SlideShare|Twitter) Licencia: CC-BY-SA
OPERADORES
operadores aritméticos
+
-
*
/
%
++
--
operadores comparaciones numéricas
numero1 –eq numero2
numero1 –ne numero2
numero1 –lt numero2
numero1 –le numero2
numero1 –gt numero2
numero1 –ge numero2
operadores lógicos
!
&& , -a
|| , -o
operadores de ficheros
-e fichero
-s fichero
-f fichero
-d fichero
-h fichero
-r fichero
-w fichero
-x fichero
-O fichero
-G fichero
f1 -ef f2
f1 -nt f2
f1 -ot f2
operadores de cadenas
-n cadena
-z cadena
cadena1 = cadena2
cadena1 == cadena2
cadena1 != cadena2
# suma
# resta
# multiplicación
# división
# resto
# incremento
# decremento
# numero1 igual que numero2
# numero1 distinto que numero2
# numero1 menor que numero2
# numero1 menor o igual que numero2
# numero1 mayor que numero2
# numero1 mayor o igual que numero2
# NOT
# AND
# OR
# existe
# no está vacío
# normal
# directorio
# enlace simbólico
# permiso de lectura
# permiso de escritura
# permiso de ejecución
# propietario
# pertenece al grupo
# f1 y f2 enlaces mismo archivo
# f1 más nuevo que f2
# f1 más antiguo que f2
# no vacía
# vacía
# cadena1 igual a cadena2
# cadena1 igual a cadena2
# cadena1 distinta a cadena2
Autor: Adolfo Sanz De Diego (asanzdiego - Blog|GitHub|LinkedIn|SlideShare|Twitter) Licencia: CC-BY-SA
ENTRECOMILLADO
#! RUTA
\carácter
linea1 \ linea2
'cadena'
“cadena”
EXPANSIÓN
[prefijo]{cad1,[,...],cadN}[sufijo]
${VARIABLE:-valor}
${VARIABLE:=valor}
${VARIABLE:?mensaje}
${VARIABLE:inicio}
${VARIABLE:inicio:longitud}
${!prefijo*}
${#VARIABLE}
${#ARRAY[*]}
${VARIABLE#patrón}
${VARIABLE##patrón}
${VARIABLE%patrón}
${VARIABLE%%patrón}
${VARIABLE/patrón/reemplazo}
${VARIABLE//patrón/reemplazo}
$((expresión))
$[expresión]
EJECUCIÓN
./comando
$RUTA/comando
comando
. script
$(comando param1 ... paramN)
`comando param1 ... paramN`
comando &
c1 | c2
c1 ; c2
c1 && c2
c1 || c2
ARGUMENTOS DE LÍNEA 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
# ruta al interprete (/bin/bash)
# valor literal del carácter
# para escribir en varias lineas
# valor literal cadena
# valor literal cadena, excepto $ ' \
# = precad1suf ... precadNsuf
# si VARIABLE nula, retorna valor
# si VARIABLE nula, asigna valor
# si VARIABLE nula, mensaje error y fin
# recorta desde inicio hasta el final
# recorta desde inicio hasta longitud
# nombres de variables con prefijo
# número de caracteres de VARIABLE
# elementos de ARRAY
# elimina mínimo patrón desde inicio
# elimina máximo patrón desde inicio
# elimina mínimo patrón desde fin
# elimina máximo patrón desde fin
# reemplaza primera coincidencia
# reemplaza todas las coincidencias
# sustituye expresión por su valor
# sustituye expresión por su valor
# ejecuta desde directorio actual
# ejecuta desde cualquier sitio
# ejecuta si está en el $PATH
# ejecuta exportando variables
# ejecuta de forma literal
# ejecuta sustituyendo variables
# ejecuta en segundo plano
# redirige salida c1 a entrada c2
# ejecuta c1 y luego c2
# ejecuta c2 si c1 termina sin errores
# ejecuta c2 si c1 termina con errores
# 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 expresión1; then
bloque1
elif expresión2; then
bloque2
else
bloque3
fi
case VARIABLE in
patrón11|...|patrón1N)
bloque1 ;;
patrón21|...|patrón2N)
bloque2 ;;
*)
bloqueDefecto ;;
esac
for VARIABLE in LISTA; do
bloque
done
for ((expr1; expr2; expr3; )); do
bloque
done
while expresión; do
bloque
done
until expresion; do
expresion
done
[function] expresion () {
... [ return [valor] ] ...
}
INTERACTIVIDAD
read [-p cadena] [variable1 ...]
echo cadena
-n no hace salto de linea
-e interpreta caracteres con \
printf
CONTROL DE PROCESOS
comando &
bg númeroProceso
fg númeroProceso
jobs
kill señal PID1|númeroProceso1
exit código
trap [comando] [código1 ...]
wait [PID1|númeroProceso1]
nice -n prioridad comando
renice -n prioridad comando
# condicional
# si expresión1 entonces
# bloque1
# sino y expresión2 entonces
# bloque2
# si ninguna entonces
# bloque2
# selectiva
# si VARIABLE coincide con patrones1
# entonces bloque1
# si VARIABLE coincide con patrones2
# entonces bloque2
# si ninguna
# entonces bloqueDefecto
# iterativa con lista
# ejecuta bloque sustituyendo
# VARIABLE por cada elemento de LISTA
# iterativa con contador
# primero se evalúa exp1
# luego mientras exp2 sea cierta
# se ejecutan el bloque y expr3
# bucle “mientras”
# se ejecuta bloque
# mientras expresión sea cierta
# bucle “hasta”
# se ejecuta bloque
# hasta que expresión sea cierta
# función
# se invoca con
# nombreFunción [param1 ... paramN]
# input
# lee teclado y asigna a variables
# puede mostrarse un mensaje antes
# si ninguna variable, REPLY = todo
# output
# manda el valor de la cadena
# a la salida estándar
# output formateado (igual que C)
# ejecuta en segundo plano
# continúa ejecución en segundo plano
# continúa ejecución en primer plano
# muestra procesos en ejecución
# mata proceso(s) indicado(s)
# salir con código de retorno
# (0=normal, >0=error)
# ejecuta comando cuando señal(es)
# espera hasta fin proceso(s) hijo(s)
# ejecuta comando con prioridad [-20/19]
# modifica prioridad comando [-20/19]
# -20 máxima prioridad y 19 mínima
Autor: Adolfo Sanz De Diego (asanzdiego - Blog|GitHub|LinkedIn|SlideShare|Twitter) Licencia: CC-BY-SA
Comentarios de: chuleta shell script (0)
No hay comentarios