Un script de Bash es un archivo de texto que contiene una serie de comandos que Linux ejecuta de forma automática y en orden.
En lugar de escribir diez comandos uno por uno cada día, los pones todos en un archivo y Linux los corre por ti con un solo comando. Esto ahorra tiempo y elimina errores humanos.
Estructura de un script de Bash
Todo script de Bash tiene tres partes esenciales:
- Shebang: la primera línea que le dice a Linux qué intérprete usar.
- Comandos: las instrucciones que quieres ejecutar.
- Permisos de ejecución: sin esto, Linux no correrá el archivo.
La estructura mínima de cualquier script es:
#!/bin/bash
# Comentario que describe qué hace el script
comando1
comando2
comando3
#!/bin/bash se llama shebang. Siempre va en la línea 1, sin espacios antes. Le indica al sistema que use Bash para interpretar el archivo.
Los comentarios empiezan con #. Linux los ignora al ejecutar el script, pero son útiles para que tú (u otras personas) entiendan el código después.
Tu primer script: reporte del sistema
Vamos a crear un script que muestre información básica del sistema. Este tipo de reporte es útil en empresas como FEMSA o Bimbo, donde los administradores revisan servidores todos los días.
Paso 1: Crea el archivo.
nano reporte.sh
Paso 2: Escribe el contenido.
#!/bin/bash
# Script: reporte.sh
# Descripción: Muestra un reporte básico del sistema
echo "=== REPORTE DEL SISTEMA ==="
echo "Fecha y hora:"
date
echo ""
echo "Usuario actual:"
whoami
echo ""
echo "Espacio en disco:"
df -h
echo ""
echo "Memoria disponible:"
free -h
echo "=== FIN DEL REPORTE ==="
Paso 3: Guarda y cierra con Ctrl+O, Enter, Ctrl+X.
Paso 4: Dale permisos de ejecución.
chmod +x reporte.sh
Paso 5: Ejecuta el script.
./reporte.sh
El ./ le dice a Linux que el archivo está en la carpeta actual. Sin él, el sistema no encontrará el script.
Variables en Bash
Una variable es un nombre que guarda un valor para usarlo después.
Las variables hacen tus scripts más flexibles. Se definen sin espacios alrededor del signo =.
nombre="servidor01"
echo "Revisando: $nombre"
Para usar el valor de una variable, escribe $ antes del nombre. Observa este script más completo:
#!/bin/bash
# Script: saludo_empresa.sh
empresa="Liverpool"
ciudad="Ciudad de México"
fecha=$(date +%d/%m/%Y)
echo "Empresa: $empresa"
echo "Ciudad: $ciudad"
echo "Fecha de ejecución: $fecha"
La sintaxis $(comando) ejecuta un comando y guarda su resultado en una variable. En este caso, $(date +%d/%m/%Y) guarda la fecha con formato día/mes/año.
Condicionales: if / else
Un condicional permite que tu script tome decisiones según una condición.
La estructura básica es:
if [ condición ]; then
comando_si_es_verdadero
else
comando_si_es_falso
fi
Ejemplo práctico: verificar si existe una carpeta de respaldos antes de copiar archivos.
#!/bin/bash
# Script: verificar_respaldo.sh
carpeta="/home/usuario/respaldos"
if [ -d "$carpeta" ]; then
echo "La carpeta de respaldos ya existe. Continuando..."
else
echo "La carpeta no existe. Creándola ahora..."
mkdir -p "$carpeta"
echo "Carpeta creada en: $carpeta"
fi
-d verifica si existe un directorio. -f verifica si existe un archivo. Estos se llaman operadores de prueba.
Ejemplo completo: script de respaldo automático
Este es un caso real. En una empresa de logística como Mercado Libre, los sistemas generan archivos de registros (logs) todos los días. Este script copia esos archivos a una carpeta de respaldo con la fecha del día.
#!/bin/bash
# Script: respaldo_logs.sh
# Descripción: Copia los logs del día a una carpeta de respaldo
fecha=$(date +%Y-%m-%d)
origen="/var/log"
destino="/home/admin/respaldos/logs_$fecha"
echo "Iniciando respaldo del $fecha..."
if [ -d "$destino" ]; then
echo "El respaldo de hoy ya existe. Saliendo."
exit 1
fi
mkdir -p "$destino"
cp "$origen"/*.log "$destino/"
echo "Respaldo completado en: $destino"
echo "Archivos copiados:"
ls "$destino"
exit 1 termina el script con un código de error. Esto es útil cuando algo sale mal y no quieres que el script continúe.
Automatizar con cron
cron es el servicio de Linux que ejecuta scripts de forma automática a la hora que tú definas.
Para programar tu script, edita el archivo crontab:
crontab -e
Cada línea en crontab tiene este formato:
minuto hora día_del_mes mes día_semana comando
Ejemplos:
| Expresión cron | Significado |
|---|---|
0 8 * * * |
Todos los días a las 8:00 a.m. |
30 18 * * 1-5 |
De lunes a viernes a las 6:30 p.m. |
0 0 1 * * |
El primer día de cada mes a medianoche |
*/15 * * * * |
Cada 15 minutos |
Para ejecutar respaldo_logs.sh todos los días a las 2:00 a.m., agrega esta línea:
0 2 * * * /home/admin/scripts/respaldo_logs.sh
Usa la ruta completa del script en crontab. cron no sabe en qué carpeta estás cuando corre el comando.
Errores comunes
Error 1: Olvidar el shebang.
Si no pones #!/bin/bash en la primera línea, Linux puede intentar ejecutar el script con el intérprete equivocado. El resultado es un error difícil de entender. Siempre empieza con el shebang.
Error 2: Espacios alrededor del signo = en variables.
Esto es incorrecto:
nombre = "Bimbo"
Esto es correcto:
nombre="Bimbo"
Con espacios, Bash interpreta nombre como un comando y falla inmediatamente.
Error 3: No dar permisos de ejecución.
Si ves el error Permission denied al intentar correr un script, es porque olvidaste ejecutar chmod +x nombre_script.sh. Sin permisos de ejecución, Linux no correrá el archivo.
Error 4: Usar rutas relativas en crontab.
Dentro de crontab, escribe siempre la ruta completa: /home/usuario/scripts/mi_script.sh. Nunca uses ./mi_script.sh porque cron no sabe cuál es tu directorio actual.
Error 5: No probar el script antes de programarlo en cron.
Ejecuta tu script manualmente primero. Confirma que funciona sin errores. Después agrégalo a crontab. Muchos administradores programan scripts rotos y no se dan cuenta hasta horas después.
Referencia rápida de Bash
| Elemento | Sintaxis | Ejemplo |
|---|---|---|
| Shebang | #!/bin/bash |
Primera línea del archivo |
| Variable | nombre=valor |
empresa="FEMSA" |
| Usar variable | $nombre |
echo $empresa |
| Resultado de comando | $(comando) |
fecha=$(date) |
| Condicional | if [ cond ]; then ... fi |
Ver ejemplo arriba |
| Verificar directorio | [ -d "$ruta" ] |
Si existe la carpeta |
| Verificar archivo | [ -f "$ruta" ] |
Si existe el archivo |
| Permisos de ejecución | chmod +x archivo.sh |
Antes de ejecutar |
| Ejecutar script | ./script.sh |
Desde la carpeta actual |
| Terminar con error | exit 1 |
Cuando algo falla |
Lo que aprendiste en este curso
Este es el último tema del curso. Has recorrido un camino completo desde cero.
Empezaste entendiendo qué es Linux y por qué lo usan empresas reales en México. Aprendiste a navegar el sistema de archivos, a manipular archivos y carpetas, a gestionar permisos, a instalar software, a administrar procesos y usuarios, y ahora a automatizar tareas con scripts.
Esas habilidades combinadas te permiten trabajar en servidores reales, configurar entornos de desarrollo y mantener sistemas en producción.
Próximos pasos
- Practica a diario. Crea un script pequeño cada semana. Automatiza algo que ya hagas a mano: limpiar carpetas temporales, hacer respaldos, verificar conexiones.
- Aprende más sobre Bash. Investiga bucles (
for,while), funciones y manejo de argumentos ($1,$2). Son los siguientes pasos naturales. - Instala una distro en tu máquina. Ubuntu o Fedora son buenas opciones para principiantes en México. Practica en un sistema real, no solo en máquinas virtuales.
- Explora herramientas del mercado laboral. En ofertas de trabajo en plataformas como OCC Mundial o LinkedIn México, busca puestos de administrador de sistemas o DevOps. Verás que Linux es requisito básico en casi todos.