CheatSheet Bash
Table of Contents
1. OBJETIVO
La idea de este Post es tener a la mano tanto comandos útiles de Linux como también mostrar la correcta sintaxis de scripts en Bash.
2. COMANDOS ÚTILES - EJEMPLOS
- Comando: sed
Filtrar y transformar texto
En este ejemplo lo voy a combinar con el comando cat
para así filtrar y transformar la salida o resultado del primer comando.
El objetivo es eliminar los números y quedarnos simplemente con las palabras.
Contenido del archivo abc.txt
:
manzana roja
pera verde
plátano amarillo
3458452 8456325
zanahoria anaranjado
7542125 4785365
Ejecutamos:
cat abc.txt | sed -E 's/[0-9]+/''/g'
Resultado:
manzana roja
pera verde
plátano amarillo
zanahoria anaranjado
He utilizado el -E
para poder añadir un regex Extended
y así sustituir (s/
) los números del 0 al 9
(Uno o más +
) por un carácter vacío ''
. Con el /g
le digo que abarque todo el archivo de texto abc.txt
.
- Comando: awk
Escaneo y procesamiento de texto
Voy a utilizar el mismo archivo abc.txt
para así extraer la palabra o palabras basándome en filas y columnas.
Contenido del archivo abc.txt
:
manzana roja
pera verde
plátano amarillo
3458452 8456325
zanahoria anaranjado
7542125 4785365
Ejecutamos:
cat abc.txt | awk 'FNR == 3 {print $1, $2}'
Resultado:
plátano amarillo
Con el FNR
le digo que quiero dirigirme a la tercera 3
fila y deseo imprimir la columna 1
y 2
.
Nótese que luego de la ,
hay un espacio, es por eso que se respeta el espacio en blanco entre la palabra de la columna 1
y la de la columna 2
.
- Comando: perl
Escanear y extraer información
Algo sumamente útil que se puede realizar con el comando perl
es extraer un octeto de una dirección IPv4
.
Por ejemplo:
echo "192.168.1.100" | perl -pe 's/(\d+)\.(\d+)\.(\d+)\.(\d+)/$4/g'
Resultado:
100
Con el p
le digo que haga un loop pero con un formato parecido al de sed
y con el e
simplemente es para que sea una línea de comando.
Una vez generado el patron en un formato regex
le digo que extraiga el cuarto 4
basándose en ese mismo patrón.
3. CONDICIONALES
3.1 Forma Básica
if [[ -z $string ]]; then
echo "String is empty"
elseif [[ -n $string ]]; then
echo "String is not empty"
else
echo "This never happens"
fi
3.2 Cuadro de Flags
Condición | Descripción |
---|---|
[[ -z STRING ]] | String vacío |
[[ -n STRING ]] | String no vacío |
[[ -e FILE ]] | Archivo existe |
[[ -r FILE ]] | Archivo de lectura |
[[ -h FILE ]] | Es un Symlink |
[[ -d FILE ]] | Directorio |
[[ -w FILE ]] | Archivo de escritura |
[[ -f FILE ]] | Es un archivo regular |
[[ -x FILE ]] | Es ejecutable |
[[ STRING == STRING ]] | Igual |
[[ STRING != STRING ]] | No igual |
[[ NUM -eq NUM ]] | Igual |
[[ NUM -ne NUM ]] | No igual |
[[ NUM -lt NUM ]] | Menor que |
[[ NUM -le NUM ]] | Menor o igual |
[[ NUM -gt NUM ]] | Mayor que |
[[ NUM -ge NUM ]] | Mayor o igual |
[[ STRING =~ STRING ]] | Regexp |
(( NUM < NUM )) | Condición numérica |