Compartir en Twitter
Go to Homepage

TUTORIAL DE BASH SCRIPTING PARA LINUX EN 2025

October 11, 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:

  1. #!/bin/bash: Especifica el intérprete Bash.
  2. echo "Hoy es " date``: Muestra la fecha actual.
  3. echo -e "\nIngresa la ruta...": Solicita al usuario una ruta.
  4. read ruta: Almacena la entrada en la variable ruta.
  5. 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:

  1. Asignación directa:
pais="México"
  1. 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 o else.

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

  1. Lectura de entrada del usuario:
#!/bin/bash
echo "¿Cuál es tu nombre?"
read nombre
echo -e "\nBienvenido al tutorial de Bash, $nombre"
  1. Lectura desde un archivo:
while read linea; do
    echo $linea
done < entrada.txt
  1. 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

  1. Imprimir en la terminal:
echo "¡Hola, mundo!"
  1. Escribir en un archivo:
echo "Texto de ejemplo." > salida.txt
  1. Agregar a un archivo:
echo "Más texto." >> salida.txt
  1. 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.