¿Qué hace bash-linux?
Patrones de terminal Bash/Linux. Comandos críticos, tuberías, manejo de errores, scripting. Útil al trabajar en sistemas macOS o Linux.
Comandos Esenciales
ls -la– Listar archivos con detalles.cd <directorio>– Cambiar directorio.pwd– Mostrar directorio actual.cp <origen> <destino>– Copiar archivos.mv <origen> <destino>– Mover/renombrar archivos.rm <archivo>– Eliminar archivos (-rpara directorios).cat <archivo>– Mostrar contenido del archivo.grep <patrón> <archivo>– Buscar patrones.find <ruta> -name <patrón>– Buscar archivos.chmod <permisos> <archivo>– Cambiar permisos.
Tuberías y Redirección
|– Tubería: pasar salida de un comando a otro.>– Redirigir salida a archivo (sobrescribe).>>– Redirigir salida a archivo (añade).<– Redirigir archivo como entrada.2>&1– Redirigir stderr a stdout.&>– Redirigir tanto stdout como stderr a archivo (Bash 4+).
Ejemplos
# Encontrar archivos .log y contar líneas
find /var/log -name "*.log" | wc -l
# Listar archivos con fecha de modificación reciente
ls -lt | head -n 10
Manejo de Errores
- Usar
set -epara salir al primer error. - Usar
trappara manejar señales y limpieza. - Verificar códigos de salida con
$?.
Script Base
#!/bin/bash
set -euo pipefail
trap "echo 'Error en la línea $LINENO'; exit 1" ERR
# Tu código aquí
echo "Script ejecutado exitosamente"
Verificaciones Comunes
# Verificar si un archivo existe
if [[ -f "archivo.txt" ]]; then
echo "El archivo existe"
else
echo "El archivo no existe" >&2
exit 1
fi
# Verificar si un comando existe
if ! command -v jq &> /dev/null; then
echo "jq no está instalado" >&2
exit 1
fi
Estructuras de Control
Bucles
# Bucle for sobre archivos
for archivo in *.txt; do
echo "Procesando $archivo"
done
# Bucle while leyendo archivo
while IFS= read -r linea; do
echo "$linea"
done < "entrada.txt"
Condicionales
if [[ -z "$variable" ]]; then
echo "Variable vacía"
elif [[ "$variable" == "valor" ]]; then
echo "Variable coincide"
else
echo "Otro caso"
fi
Variables y Expansión
$VARIABLE– Usar variable.${VARIABLE:-valor_por_defecto}– Valor por defecto.${VARIABLE:?mensaje_error}– Error si no está definida.$(comando)– Sustitución de comando (moderno, recomendado sobre las comillas invertidas).
Funciones
mi_funcion() {
local arg1=$1
local arg2=$2
echo "Argumentos: $arg1, $arg2"
}
mi_funcion "hola" "mundo"
Depuración
set -x– Mostrar comandos antes de ejecutarlos.set -v– Mostar líneas de entrada al leerlas.bash -n script.sh– Verificar sintaxis sin ejecutar.
Buenas Prácticas
- Siempre usar
#!/bin/basho#!/usr/bin/env bash. - Activar
set -euo pipefailen scripts. - Usar trampas (
trap) para limpiar recursos temporales. - Preferir
[[ ]]sobre[ ]para pruebas condicionales. - Poner variables entre comillas dobles para evitar división de palabras.
- Usar nombres de variables en mayúsculas para variables de entorno y minúsculas para locales.
- Escribir funciones pequeñas y reutilizables.
- Documentar scripts con comentarios claros.
Ejemplos Comunes
Buscar y Reemplazar en Archivos
# Usando sed
sed -i 's/viejo/nuevo/g' archivo.txt
# Usando perl
perl -pi -e 's/viejo/nuevo/g' archivo.txt
Comprimir y Descomprimir
# Comprimir directorio
tar -czvf archivo.tar.gz directorio/
# Descomprimir
tar -xzvf archivo.tar.gz
Monitoreo del Sistema
# Ver uso de disco
df -h
# Ver uso de memoria
free -h
# Ver procesos
top -bn1 | head -n 20
Notas Finales
Esta habilidad es compatible con macOS, Linux y WSL (Windows Subsystem for Linux). Se integra con asistentes de IA como Claude Code, Cursor y Codex.