
TUTORIAL DE BASH SCRIPTING PARA LINUX EN 2025
Introducción a Bash Scripting en Linux
Bash scripting es una herramienta esencial para los desarrolladores y administradores de sistemas que buscan automatizar tareas en Linux. Este tutorial está diseñado para introducir los conceptos fundamentales de la creación y ejecución de scripts en Bash, desde comandos básicos hasta técnicas avanzadas como bucles, condicionales y programación de tareas con cron. A través de ejemplos prácticos, exploraremos cómo escribir scripts eficientes, gestionar variables, manejar entradas y salidas, y depurar errores en entornos Linux. Este contenido está actualizado para reflejar las mejores prácticas en 2025 y es ideal tanto para principiantes como para usuarios intermedios que deseen optimizar su flujo de trabajo en la terminal.
Requisitos Previos
Para seguir este tutorial, necesitas acceso a un sistema Linux con una terminal. Si no tienes Linux instalado, puedes usar herramientas como Replit, un IDE basado en navegador que proporciona acceso inmediato a un entorno Bash. Alternativamente, los usuarios de Windows pueden instalar el Subsistema de Windows para Linux (WSL) para ejecutar un entorno Linux nativo. Asegúrate de tener permisos para ejecutar comandos en la terminal, ya que algunos ejemplos requieren privilegios de administrador.
¿Qué es Bash Scripting?
Un script de Bash es un archivo que contiene una secuencia de comandos ejecutados línea por línea por el intérprete Bash. Este enfoque permite automatizar procesos repetitivos, como la creación de directorios, la gestión de archivos o la ejecución de procesos del sistema. Por ejemplo, un script puede combinar comandos para navegar a un directorio, crear archivos y ejecutar programas en una sola ejecución.
Ventajas de Bash Scripting
Bash scripting ofrece múltiples beneficios para la gestión de sistemas Linux:
- Automatización: Reduce el tiempo y los errores al ejecutar tareas repetitivas.
- Portabilidad: Los scripts funcionan en sistemas Unix, Linux, macOS y, con emuladores, en Windows.
- Flexibilidad: Los scripts son personalizables y pueden integrarse con otras herramientas.
- Accesibilidad: No requieren software especializado; cualquier editor de texto es suficiente.
- Integración: Pueden interactuar con bases de datos, servidores web y servicios en la nube.
- Depuración: Bash incluye herramientas integradas para identificar y corregir errores.
Diferencia entre Shell y Bash
El término “shell” se refiere a cualquier programa que proporciona una interfaz de línea de comandos para interactuar con el sistema operativo. Bash, o Bourne-Again Shell, es una de las shells más populares y es el estándar en muchas distribuciones de Linux. Otros shells incluyen Korn Shell (ksh), C Shell (csh) y Z Shell (zsh), cada uno con su propia sintaxis. Para verificar tu shell actual, ejecuta:
ps
Esto mostrará el shell en uso, como Bash. En este tutorial, nos centraremos exclusivamente en Bash.
Comandos Básicos en la Terminal
La terminal de Linux muestra un prompt, generalmente [usuario@host ~]$
, donde puedes ingresar comandos. Si el usuario es root, el prompt cambia a #
. Los comandos siguen la sintaxis:
comando [opciones] argumentos
A continuación, algunos comandos básicos:
- date: Muestra la fecha y hora actuales.
date
# Salida: Wed Oct 08 23:26:57 CDT 2025
- pwd: Muestra el directorio de trabajo actual.
pwd
# Salida: /home/usuario/directorio
- ls: Lista los contenidos del directorio actual.
ls
# Salida: archivo1 archivo2 directorio
- echo: Imprime texto o valores de variables en la terminal.
echo "Hola, mundo"
# Salida: Hola, mundo
Para obtener más información sobre un comando, usa man
:
man ls
Esto muestra el manual detallado del comando ls
.
Creación y Ejecución de Scripts Bash
Convenciones de Nomenclatura
Por convención, los scripts Bash terminan en .sh
, aunque funcionan sin esta extensión. Por ejemplo, mi_script.sh
es un nombre válido.
Uso del Shebang
Todo script Bash comienza con un shebang, que indica el intérprete a utilizar. El shebang típico es:
#!/bin/bash
Para encontrar la ruta de tu intérprete Bash, ejecuta:
which bash
# Salida: /usr/bin/bash
Creación de un Script Básico
Creemos un script que solicite una ruta y liste su contenido. Usa un editor como vi
:
vi listar_directorio.sh
Agrega el siguiente código:
#!/bin/bash
echo "Hoy es " `date`
echo -e "\nIngresa la ruta del directorio:"
read ruta
echo -e "\nEl directorio contiene los siguientes archivos y carpetas:"
ls $ruta
Explicación línea por línea:
#!/bin/bash
: Especifica el intérprete Bash.echo "Hoy es "
date``: Muestra la fecha actual.echo -e "\nIngresa la ruta..."
: Solicita al usuario una ruta.read ruta
: Almacena la entrada en la variableruta
.ls $ruta
: Lista los contenidos de la ruta ingresada.
Ejecución del Script
Para ejecutar el script, primero asigna permisos de ejecución:
chmod u+x listar_directorio.sh
Luego, ejecuta el script con uno de estos métodos:
sh listar_directorio.sh
bash listar_directorio.sh
./listar_directorio.sh
Fundamentos de Bash Scripting
Comentarios
Los comentarios en Bash comienzan con #
y son ignorados por el intérprete. Son útiles para documentar el código:
# Esto es un comentario
# Esta línea también es ignorada
Variables y Tipos de Datos
En Bash, las variables almacenan datos sin necesidad de especificar un tipo. Pueden contener números, caracteres o cadenas. Asigna valores de las siguientes formas:
- Asignación directa:
pais="México"
- Asignación basada en el resultado de un comando:
otro_pais=$pais
Para acceder al valor, usa $
:
echo $pais
# Salida: México
Convenciones de Nomenclatura de Variables
Sigue estas reglas para nombrar variables:
- Comienza con una letra o guion bajo (
_
). - Puede incluir letras, números y guiones bajos.
- Es sensible a mayúsculas y minúsculas.
- Evita espacios o caracteres especiales.
- Usa nombres descriptivos.
- No uses palabras reservadas como
if
oelse
.
Ejemplos válidos:
nombre
contador
_mi_variable
MI_VARIABLE
Ejemplos inválidos:
2variable # Comienza con número
mi variable # Contiene espacio
mi-variable # Contiene guión
Entrada y Salida
Entrada
- Lectura de entrada del usuario:
#!/bin/bash
echo "¿Cuál es tu nombre?"
read nombre
echo -e "\nBienvenido al tutorial de Bash, $nombre"
- Lectura desde un archivo:
while read linea; do
echo $linea
done < entrada.txt
- Argumentos de línea de comandos:
Los argumentos se acceden con $1
, $2
, etc.:
#!/bin/bash
echo "Hola, $1!"
Ejecuta:
bash script.sh Ana
# Salida: Hola, Ana!
Salida
- Imprimir en la terminal:
echo "¡Hola, mundo!"
- Escribir en un archivo:
echo "Texto de ejemplo." > salida.txt
- Agregar a un archivo:
echo "Más texto." >> salida.txt
- Redirigir salida:
ls > archivos.txt
Comandos Básicos
Algunos comandos esenciales incluyen:
cd
: Cambia de directorio.mkdir
: Crea un directorio.touch
: Crea un archivo vacío.rm
: Elimina archivos o directorios.cp
: Copia archivos o directorios.mv
: Mueve o renombra archivos.cat
: Muestra el contenido de un archivo.grep
: Busca patrones en archivos.chmod
: Cambia permisos.sudo
: Ejecuta comandos como administrador.df
: Muestra el espacio en disco.history
: Lista comandos ejecutados.ps
: Muestra procesos activos.
Condicionales
Las sentencias condicionales evalúan expresiones booleanas. La sintaxis básica es:
if [[ condicion ]]; then
instruccion
elif [[ condicion ]]; then
instruccion
else
instruccion_por_defecto
fi
Puedes usar operadores lógicos como -a
(AND) y -o
(OR). Ejemplo:
#!/bin/bash
echo "Ingresa un número:"
read num
if [ $num -gt 0 ]; then
echo "$num es positivo"
elif [ $num -lt 0 ]; then
echo "$num es negativo"
else
echo "$num es cero"
fi
Bucles y Ramificación
Bucle While
Los bucles while
ejecutan un bloque de código mientras una condición sea verdadera. Incluye un contador para controlar la ejecución:
#!/bin/bash
i=1
while [[ $i -le 5 ]]; do
echo $i
(( i += 1 ))
done
Bucle For
El bucle for
itera sobre un rango o lista. Ejemplo:
#!/bin/bash
for i in {1..5}
do
echo $i
done
Sentencias Case
Las sentencias case
comparan un valor contra patrones y ejecutan el bloque correspondiente:
#!/bin/bash
fruta="manzana"
case $fruta in
"manzana")
echo "Es una fruta roja."
;;
"plátano")
echo "Es una fruta amarilla."
;;
"naranja")
echo "Es una fruta naranja."
;;
*)
echo "Fruta desconocida."
;;
esac
Programación de Scripts con Cron
Cron es una herramienta para programar tareas en sistemas Unix/Linux. Permite ejecutar scripts en horarios específicos. La sintaxis es:
* * * * * sh /ruta/al/script.sh
Los asteriscos representan minutos, horas, días, meses y días de la semana, respectivamente. Ejemplos:
0 0 * * *
: Ejecuta un script a medianoche todos los días.*/5 * * * *
: Ejecuta un script cada 5 minutos.0 6 * * 1-5
: Ejecuta un script a las 6 de la mañana de lunes a viernes.
Para gestionar tareas cron, usa:
crontab -l # Lista tareas programadas
crontab -e # Edita tareas cron
Depuración y Resolución de Problemas
Opción set -x
Activa el modo de depuración para mostrar cada comando ejecutado:
#!/bin/bash
set -x
# Código del script
Verificación del Código de Salida
El código de salida ($?
) indica si un comando tuvo éxito (0
) o falló:
#!/bin/bash
# Código del script
if [ $? -ne 0 ]; then
echo "Ocurrió un error."
fi
Uso de echo para Depuración
Inserta comandos echo
para inspeccionar valores de variables:
#!/bin/bash
echo "Valor de x: $x"
# Más código
Opción set -e
Detiene el script si un comando falla:
#!/bin/bash
set -e
# Código del script
Depuración de Cron
Verifica los registros de cron en /var/log/syslog
(Ubuntu/Debian) para confirmar si las tareas se ejecutaron correctamente. Un registro típico puede verse así:
2025-10-08 23:00:01 Tarea iniciada
2025-10-08 23:00:02 Ejecutando script /ruta/al/script.sh
2025-10-08 23:00:03 Script completado con éxito
Conclusiones
Este tutorial ha cubierto los fundamentos de Bash scripting en Linux, desde la ejecución de comandos básicos hasta la creación de scripts avanzados con bucles, condicionales y programación de tareas con cron. Hemos explorado cómo manejar variables, entradas y salidas, y técnicas de depuración para garantizar scripts robustos. Bash scripting es una habilidad poderosa para automatizar tareas, gestionar sistemas y optimizar flujos de trabajo en entornos Linux. Practica los ejemplos proporcionados y experimenta con tus propios scripts para dominar esta herramienta esencial en 2025.