Skip to content

Cheat Sheet de Bash Scripting

Última verificación mayo 2026 — corre en tu navegador
Cheatsheet de Bash
#!/bin/bash

Shebang (intérprete del script)

Básicos
set -euo pipefail

Salir en error, variables sin definir, pipe fallido

Básicos
echo "Hello World"

Imprimir línea

Básicos
read -p "Name: " name

Leer entrada con prompt

Básicos
read -s password

Leer entrada silenciosa (contraseñas)

Básicos
# This is a comment

Comentario

Básicos
name="Alice"

Asignar variable (¡sin espacios!)

Variables
echo "$name"

Leer variable

Variables
echo "${name}!"

Sintaxis con llaves para claridad

Variables
readonly PI=3.14

Constante de solo lectura

Variables
unset name

Eliminar variable

Variables
export PATH="$HOME/bin:$PATH"

Exportar a subshells

Variables
${var:-default}

Default si no definida

Variables
${var:=default}

Default y asignar si no definida

Variables
${var:?error message}

Error si no definida

Variables
${#var}

Longitud del string

Variables
${var:0:3}

Substring (offset 0, longitud 3)

Variables
${var/old/new}

Reemplazar primera ocurrencia

Variables
${var//old/new}

Reemplazar todas las ocurrencias

Variables
if [ "$x" -eq 1 ]; then
  echo "one"
fi

If con comparación numérica

Condicionales
if [[ "$s" == "hi" ]]; then ... fi

If con comparación de string ([[ ]])

Condicionales
if [ -f file.txt ]; then ... fi

If el archivo existe

Condicionales
if [ -d /etc ]; then ... fi

If el directorio existe

Condicionales
if [ -z "$x" ]; then ... fi

If string está vacío

Condicionales
if [ -n "$x" ]; then ... fi

If string no está vacío

Condicionales
-eq -ne -lt -le -gt -ge

Operadores numéricos

Condicionales
[[ "$s" =~ ^[0-9]+$ ]]

Match regex

Condicionales
case "$x" in
  1) ... ;;
  2|3) ... ;;
  *) ... ;;
esac

Sentencia case

Condicionales
[ -f file ] && echo exists || echo missing

If/else en línea

Condicionales
for i in 1 2 3; do echo $i; done

For sobre lista

Bucles
for i in {1..10}; do ... done

For sobre rango

Bucles
for i in $(seq 1 10); do ... done

For con seq

Bucles
for f in *.txt; do ... done

For sobre archivos (glob)

Bucles
for ((i=0; i<10; i++)); do ... done

Bucle for estilo C

Bucles
while [ "$n" -lt 10 ]; do
  n=$((n+1))
done

Bucle while

Bucles
while read line; do echo "$line"; done < file.txt

Leer archivo línea por línea

Bucles
until [ condition ]; do ... done

Bucle until (while negado)

Bucles
break continue

Break/continue en bucle

Bucles
arr=(a b c d)

Crear array

Arrays
echo "${arr[0]}"

Acceder por índice

Arrays
echo "${arr[@]}"

Todos los elementos

Arrays
echo "${#arr[@]}"

Longitud del array

Arrays
arr+=(e f)

Añadir elementos

Arrays
for item in "${arr[@]}"; do ... done

Iterar array

Arrays
declare -A map
map[key]="value"

Array asociativo (dict)

Arrays
greet() {
  echo "Hi $1"
}
greet "Alice"

Definir y llamar función

Funciones
$1 $2 $3 ... $@ $#

Args: pos 1, 2, 3, todos, cantidad

Funciones
local x=5

Variable local de función

Funciones
return 0

Código de salida desde función

Funciones
command > file.txt

Redirigir stdout (sobrescribir)

E/S y Pipes
command >> file.txt

Redirigir stdout (append)

E/S y Pipes
command 2> errors.log

Redirigir stderr

E/S y Pipes
command &> both.log

Redirigir stdout + stderr

E/S y Pipes
command < input.txt

Entrada desde archivo

E/S y Pipes
cmd1 | cmd2 | cmd3

Pipe entre comandos

E/S y Pipes
$(command)

Sustitución de comando

E/S y Pipes
$((2 + 3))

Expansión aritmética

E/S y Pipes
cmd1 && cmd2 || cmd3

Ejecutar cmd2 si cmd1 éxito, sino cmd3

E/S y Pipes
cmd &

Ejecutar en segundo plano

E/S y Pipes
wait

Esperar tareas en background

E/S y Pipes
trap 'cleanup' EXIT

Ejecutar al salir del script

E/S y Pipes
Mostrando 61 de 61 fragmentos

Cheat Sheet de Bash — Variables, Bucles, Condicionales y Pipes

Bash lleva siendo la shell por defecto en servidores Linux desde principios de los noventa, y la gramática del lenguaje apenas se ha movido desde entonces: variables, condicionales, bucles, tuberías y comprobaciones de archivos. La chuleta de abajo cubre más de 60 fragmentos en esas áreas, más la expansión de parámetros y las operaciones con arrays. La mayoría de los líos en scripts reales no vienen de olvidar la sintaxis. Vienen de rarezas que parecen normales pero muerden. Un espacio suelto alrededor de `=` convierte una asignación en una búsqueda de comando que falla. `set -e` deja de proteger el script en cuanto se encadenan dos comandos con una tubería. Una variable sin comillas que guarda un valor con un espacio dentro se divide en varias palabras y rompe cada test posterior. Estos son los fragmentos que se acaban consultando al depurar precisamente eso: el operador de comparación adecuado, la expansión correcta, la redirección que aplica, sin tener que releer el manual de Bash desde la línea uno cada vez.

Trampas habituales en Bash

Hay un puñado de patrones que merecen estar en la primera pantalla de cualquier script de Bash. `set -euo pipefail` al principio deja los errores a la vista: la shell sale al primer fallo, las variables sin definir cuentan como error y los fallos en las tuberías se propagan. No atrapa todo, pero atrapa bastante más que `set -e` a secas. Entrecomillar las variables importa: `"$archivo"` y no `$archivo`, siempre, porque en cuanto un nombre de fichero contenga un espacio o un carácter de glob, una expansión sin comillas hace que un único argumento se desdoble en tres. La forma `[[ ... ]]` suele preferirse frente a `[ ... ]` cuando no se necesita portabilidad POSIX: gestiona variables vacías sin romperse, admite expresiones regulares y se comporta de forma más predecible. La cálculo aritmético en Bash con `$((...))` solo entiende enteros, así que los cálculos con decimales conviene delegarlos a `bc` o `awk` en vez de pelearse con ellos en Bash. La chuleta agrupa todo esto en Basics, Variables, Condicionales, Bucles, Arrays, Funciones y E/S para que la sección adecuada esté a un clic.

  • Más de 60 fragmentos de Bash
  • Expansiones de variables y valores por defecto
  • Condicionales y operadores de test
  • Arrays (indexados y asociativos)
  • Funciones y argumentos
  • Pipes y redirección

Gratis. Sin registro. Tus datos permanecen en tu navegador. Anuncios mediante Google AdSense (con consentimiento).

Por ·

Guías relacionadas