Saltar a contenido

⚡ Bash Cheatsheet

Referencia rápida de Bash para scripting, automatización y uso en terminal.


Básicos

echo "Hola mundo"
date
whoami
hostname
````

***

## Variables

```bash
VAR="valor"
echo $VAR

readonly PI=3.14

export VAR_GLOBAL="valor"

Entrada de usuario

read nombre
echo "Hola $nombre"

Condicionales

if [ "$VAR" == "valor" ]; then
  echo "OK"
else
  echo "NO"
fi

Bucles

for

for i in 1 2 3; do
  echo $i
done
for i in {1..5}; do
  echo $i
done

while

i=0
while [ $i -lt 5 ]; do
  echo $i
  ((i++))
done

Funciones

mi_funcion() {
  echo "Hola $1"
}

mi_funcion David

Arrays

arr=(uno dos tres)

echo ${arr[0]}
echo ${arr[@]}
echo ${#arr[@]}

Comparaciones

[ "$a" = "$b" ]
[ "$a" != "$b" ]

[ "$a" -eq 5 ]
[ "$a" -lt 10 ]
[ "$a" -gt 1 ]

[ -f archivo ]
[ -d carpeta ]

Pipes y redirecciones

comando1 | comando2

echo "texto" > archivo
echo "texto" >> archivo

comando 2>&1

grep

grep "texto" archivo
grep -i "texto" archivo
grep -r "texto" .

awk

awk '{print $1}' archivo
awk -F ":" '{print $1}' /etc/passwd

cut

cut -d ":" -f1 /etc/passwd

find + exec

find / -name "*.log"
find . -type f -name "*.tmp" -delete
find . -type f -exec chmod 644 {} \;

xargs

cat lista.txt | xargs -n1 comando

Procesamiento de texto

sort archivo
uniq archivo
wc -l archivo
head archivo
tail archivo
tail -f archivo

Aliases

alias ll='ls -lah'
alias gs='git status'

Expansión y sustitución

echo ${VAR}

echo $(comando)
echo `comando`

Control de errores

set -e   # abandonar si hay error
set -x   # debug
set -u   # variables no definidas

Script básico

#!/bin/bash

set -e

echo "Inicio"

for i in {1..3}; do
  echo "Iteración $i"
done

echo "Fin"

Permisos

chmod +x script.sh
./script.sh

Argumentos

echo $0  # script
echo $1  # arg1
echo $2  # arg2
echo $#  # número de args
echo $@  # todos

Debug

bash -x script.sh

⏱️ Watch

watch -n 1 comando

Tips prácticos

  • Usa set -euo pipefail en scripts serios:
set -euo pipefail
  • Usa comillas SIEMPRE:
"$VAR"
  • Evita errores con espacios en variables

Ejemplo real (loop por hosts)

for host in $(cat hosts.txt); do
  ssh "$host" "uptime"
done

Ejemplo (filtrado de logs)

grep "ERROR" app.log | awk '{print $1,$2,$5}'

Pensado para automatización real
Uso directo en terminal y scripts
Base para DevOps / SRE / seguridad