Title here
Summary here
Bash (Bourne Again SHell) es el intérprete de comandos más común en Linux y macOS. Sirve para:
| Tema | Qué cubre |
|---|---|
| Comandos básicos | Navegación, gestión de archivos |
| Variables | Creación, expansión, especiales |
| Redirecciones | stdout, stderr, pipes |
| Expansiones | Globs, braces, sustitución |
| Test y comparaciones | Numéricas, cadenas, archivos |
| Control de flujo | Bucles y condicionales |
| Funciones | Reutilización de código |
| Arrays | Indexados y asociativos |
| Historia y edición | Atajos, búsqueda |
| Opciones | Seguridad, depuración |
| Comandos internos | Integrados en Bash |
| Recetas rápidas | Hacks listos para usar |
| Comando | Descripción | Ejemplo |
|---|---|---|
pwd |
Ruta actual | pwd |
ls |
Lista archivos | ls -lha |
cd |
Cambia directorio | cd /etc |
mkdir |
Crea carpeta | mkdir -p a/b/c |
rm |
Borra archivos | rm file.txt |
cp |
Copia archivos | cp a.txt b.txt |
mv |
Mueve/renombra | mv viejo.txt nuevo.txt |
| Variable | Descripción | Ejemplo |
|---|---|---|
$0 |
Nombre del script | echo $0 |
$1..$9 |
Argumentos | echo $1 |
"$@" |
Todos los argumentos | for a in "$@"; do echo $a; done |
$# |
Nº de argumentos | echo $# |
$? |
Código salida último comando | ls /noexiste; echo $? |
$$ |
PID del shell | echo $$ |
$! |
PID último proceso bg | sleep 10 & echo $! |
| Operador | Acción | Ejemplo |
|---|---|---|
> |
Sobrescribir salida | ls > out.txt |
>> |
Añadir salida | echo hola >> out.txt |
< |
Entrada desde archivo | cat < file.txt |
2> |
Redirigir errores | cmd 2> err.log |
&> |
stdout+stderr juntos | cmd &> all.log |
| |
Conectar comandos | ls | grep txt |
| Patrón | Significado | Ejemplo |
|---|---|---|
* |
Cualquier cadena | ls *.txt |
? |
Un solo carácter | ls file?.txt |
[abc] |
Uno de estos | ls *[12].txt |
{a,b} |
Lista fija | echo {rojo,verde,azul} |
{1..3} |
Rango numérico | echo {1..3} |
$() |
Sustitución comando | echo $(date) |
| Tipo | Operadores | Ejemplo |
|---|---|---|
| Numérica | -eq -ne -lt -le -gt -ge |
[ "$x" -gt 5 ] |
| Cadenas | = != -z -n |
[ -n "$var" ] |
| Archivos | -f -d -e -r -w -x -s |
[ -f script.sh ] |
| Avanzado | [[ expr ]] |
[[ "$a" == a* ]] |
| Estructura | Ejemplo |
|---|---|
for lista |
for f in *.txt; do echo $f; done |
while condición |
while true; do date; sleep 1; done |
if |
if [ "$x" -gt 10 ]; then echo OK; fi |
case |
case $var in a) echo A;; b) echo B;; esac |
| Tema | Ejemplo |
|---|---|
| Función simple | saludar() { echo "Hola $1"; } |
| Array indexado | nums=(1 2 3) |
| Array asociativo | declare -A edad; edad[Ada]=36 |
| Recorrer array | for i in "${nums[@]}"; do echo $i; done |
| Atajo | Acción |
|---|---|
CTRL+A |
Ir al inicio |
CTRL+E |
Ir al final |
CTRL+U |
Borrar línea antes del cursor |
CTRL+K |
Borrar línea después del cursor |
CTRL+R |
Buscar en historial |
!! |
Último comando |
!n |
Comando número n |
| Opción | Acción | Ejemplo |
|---|---|---|
set -x |
Modo traza | set -x |
set -e |
Salir si falla comando | set -e |
set -u |
Error si var no definida | set -u |
shopt |
Gestionar opciones | shopt -s nullglob |
| Comando | Uso | Ejemplo |
|---|---|---|
echo |
Mostrar texto | echo Hola |
read |
Leer entrada | read nombre |
test |
Evaluar condición | test -f file.txt |
type |
Ver tipo de comando | type ls |
| Objetivo | Comando |
|---|---|
| Buscar en archivos | grep -R "texto" . |
| Ordenar por tamaño | ls -lhS |
| Top 5 carpetas pesadas | du -sh * | sort -h | tail -n 5 |
| Descargar y extraer | curl -L URL | tar xz |
| Renombrar masivo | for f in *.jpg; do mv "$f" new_$f; done |
| Error | Cómo evitarlo |
|---|---|
| Variables sin comillas | Cita siempre: "$var" |
Usar sh para scripts Bash |
Usa #!/usr/bin/env bash |
Olvidar set -euo pipefail |
Añádelo en scripts serios |
Confundir [ y [[ |
Prefiere [[ en Bash |
ERROR de un log y numéralas..txt, .md, .sh hay en un directorio.backup.sh que comprima src/ en backup_YYYYMMDD.tar.gz.texto.txt.foto1.jpg a foto_001.jpg.a.txt y b.txt.is_up host que devuelva 0 si responde a ping.