Introducción al Bash Scripting
Curso básico de Linux. Unidad 7
Objetivos de la Unidad
- Comprender qué es un script y su utilidad en el entorno Linux
- Aprender a crear y ejecutar scripts básicos en Bash
- Familiarizarse con la sintaxis y las estructuras de control en Bash
- Introducir conceptos de variables y funciones en scripts
1. ¿Qué es un script?
Un script es un conjunto de instrucciones escritas en un lenguaje de programación que se ejecutan en un intérprete. En el contexto de Linux, un script de Bash es un archivo de texto que contiene comandos de Bash que se ejecutan en la terminal. Los scripts son útiles para automatizar tareas repetitivas y simplificar la administración del sistema.

NOTA: La página oficial de Bash (Bourne Again SHell) es https://www.gnu.org/software/bash/. En esta página puedes encontrar información sobre Bash, su documentación, descargas y otros recursos relacionados.

2. Introducción a Bash
Bash (Bourne Again SHell) es un intérprete de comandos que se utiliza en muchas distribuciones de Linux. Es el shell por defecto en la mayoría de las distribuciones y permite a los usuarios interactuar con el sistema operativo a través de comandos.
Aquí vamos a hacer un pequeño inciso:
¿Qué es una shell en Linux?
Una shell en Linux es un programa que permite a los usuarios interactuar con el sistema operativo a través de comandos. Es como un intérprete que recibe tus órdenes (comandos) y las ejecuta, permitiéndote realizar tareas como copiar archivos, ejecutar programas o gestionar el sistema.
Diferencias entre shell, consola y terminal:
Shell:
- Es el programa que interpreta y ejecuta los comandos que escribes
- Ejemplos de shells son Bash, Zsh y Fish. El más popular y utilizado en Linux es Bash
Consola:
- Es un término más general que se refiere a la interfaz de texto donde se pueden introducir comandos
- Puede referirse a la shell en sí o al entorno en el que se ejecuta
Terminal:
- Es una aplicación que proporciona una interfaz gráfica para interactuar con la shell
- Puedes pensar en un terminal como una ventana en tu escritorio donde puedes escribir comandos y ver los resultados
Así pues:
- Shell: Es el programa que ejecuta comandos
- Consola: Es un término general para la interfaz de comandos
- Terminal: Es la aplicación que muestra la shell y permite interactuar con ella
Acceso a la terminal de Bash
Para acceder a la terminal de Bash, puedes buscar «Terminal» en tu entorno de escritorio o presionar Ctrl + Alt + T
en la mayoría de las distribuciones. Veamos algunos ejemplos de comandos que puedes usar en una shell de Linux para realizar diversas tareas:
- Actualizar el sistema
Para actualizar el sistema en distribuciones basadas en Debian (como Ubuntu), puedes usar:
sudo apt update && sudo apt upgrade
Este comando actualiza la lista de paquetes y luego instala las actualizaciones disponibles.
- Instalar un programa
Para instalar un programa, por ejemplo, curl
, puedes usar:
sudo apt install curl
- Eliminar un programa
Para desinstalar un programa, por ejemplo, curl
, puedes usar:
sudo apt remove curl
- Buscar un texto dentro de un archivo
Para buscar un texto específico dentro de un archivo, puedes usar grep
. Por ejemplo, para buscar la palabra «error» en un archivo llamado log.txt
:
grep "error" log.txt
- Navegar hasta un directorio
Para cambiar de directorio, puedes usar el comando cd
. Por ejemplo, para ir al directorio Documentos
:
cd ~/Documentos
- Buscar un archivo
Para buscar un archivo en el sistema, puedes usar el comando find
. Por ejemplo, para buscar un archivo llamado mi_archivo.txt
en el directorio actual y sus subdirectorios:
find . -name "mi_archivo.txt"
- Borrar un archivo
Para eliminar un archivo, puedes usar el comando rm
. Por ejemplo, para borrar mi_archivo.txt
:
rm mi_archivo.txt
- Crear un nuevo directorio
Para crear un nuevo directorio, puedes usar el comando mkdir
. Por ejemplo, para crear un directorio llamado nueva_carpeta
:
mkdir nueva_carpeta
- Copiar un archivo
Para copiar un archivo, puedes usar el comando cp
. Por ejemplo, para copiar archivo.txt
a copia_archivo.txt
:
cp archivo.txt copia_archivo.txt
- Mover o renombrar un archivo
Para mover o renombrar un archivo, puedes usar el comando mv
. Por ejemplo, para mover archivo.txt
a nueva_carpeta/archivo.txt
:
mv archivo.txt nueva_carpeta/
Estos son solo algunos ejemplos de lo que puedes hacer en una shell de Linux. Cada uno de estos comandos puede tener opciones adicionales que puedes consultar en la documentación o usando el comando man
(manual) seguido del nombre del comando, por ejemplo, man grep
.
NOTA: La página oficial de man
(manual) no tiene un sitio web específico como otros programas, ya que man
es una parte integral de los sistemas Unix y Linux. Sin embargo, puedes encontrar información sobre man
y su uso en la documentación de GNU y en las páginas de manual de tu sistema.
Una buena referencia en línea para la documentación de man
es la página de GNU: GNU man
Además, puedes acceder a las páginas de manual directamente desde la terminal de Linux usando el comando:
man man
Esto abrirá la página de manual para el comando man
, donde podrás encontrar información detallada sobre su uso y opciones:

3. Creación de un script básico
Estructura de un script en Bash
La estructura básica de un script de Bash incluye:
- Shebang: La primera línea del script que indica al sistema qué intérprete usar. Para Bash, se escribe:
#!/bin/bash
- Comandos: Los comandos que deseas ejecutar.
Ejemplo: Primer script «Hola Mundo»
- Abre la terminal y crea un nuevo archivo llamado
hola_mundo.sh
:
nano hola_mundo.sh
- Escribe el siguiente contenido en el archivo:
#!/bin/bash
echo "Hola Mundo"
- Guarda el archivo y sal del editor (
Ctrl + X
, luegoY
yEnter
) - Da permisos de ejecución al script:
chmod +x hola_mundo.sh
- Ejecuta el script en la terminal:
./hola_mundo.sh
Capturas de pantalla del proceso:






4. Sintaxis básica de Bash
Comentarios
Los comentarios se inician con el símbolo #
. Todo lo que sigue en la línea será ignorado por el intérprete.
Variables
Las variables se utilizan para almacenar datos. Se definen sin espacios alrededor del signo =
.
Ejemplo: Uso de variables
#!/bin/bash
nombre="Juan"
echo "Hola, $nombre"
Explicación del script:
#!/bin/bash
: Esta línea es conocida como «shebang». Indica al sistema que este script debe ser ejecutado utilizando el intérprete de Bash, que se encuentra en la ruta /bin/bash
.
nombre="Juan"
: Aquí se está declarando una variable llamada nombre
y se le asigna el valor "Juan"
. En Bash, las variables se definen sin espacios alrededor del signo igual (=
).
echo "Hola, $nombre"
: Esta línea utiliza el comando echo
, que se usa para imprimir texto en la salida estándar (normalmente la terminal). La cadena "Hola, $nombre"
incluye la variable nombre
. El símbolo $
se utiliza para acceder al valor de la variable. Por lo tanto, cuando se ejecuta este comando, se imprimirá Hola, Juan
en la terminal.
5. Estructuras de control
Condicionales
Las estructuras condicionales permiten ejecutar diferentes bloques de código según ciertas condiciones.
Ejemplo: Condicional if
#!/bin/bash
numero=5
if [ $numero -gt 0 ]; then
echo "El número es positivo"
else
echo "El número es negativo o cero"
fi
Explicación del script:
#!/bin/bash
: Al igual que en el script anterior, esta línea indica que el script debe ser ejecutado utilizando el intérprete de Bash.
numero=5
: Aquí se declara una variable llamada numero
y se le asigna el valor 5
.
if [ $numero -gt 0 ]; then
: Esta línea inicia una estructura condicional if
. La condición que se evalúa es si el valor de la variable numero
es mayor que (-gt
) 0. El uso de los corchetes [
y ]
es una forma de realizar comparaciones en Bash.
echo "El número es positivo"
: Si la condición del if
es verdadera (es decir, si numero
es mayor que 0), se ejecutará esta línea, que imprimirá «El número es positivo».
else
: Esta línea indica que si la condición del if
no se cumple (es decir, si numero
es menor o igual a 0), se ejecutará el bloque de código que sigue.
echo "El número es negativo o cero"
: Si la condición del if
es falsa, se ejecutará esta línea, que imprimirá «El número es negativo o cero».
fi
: Esta línea cierra la estructura condicional if
.
En resumen, este script verifica si el número almacenado en la variable numero
es positivo o no. Si es mayor que 0, imprime «El número es positivo»; de lo contrario, imprime «El número es negativo o cero». En este caso, dado que numero
es 5, al ejecutar el script se mostrará «El número es positivo».
Bucles
Los bucles permiten repetir un bloque de código varias veces.
Ejemplo: Bucle for
#!/bin/bash
for i in {1..5}; do
echo "Número: $i"
done
Ejemplo: Bucle while
#!/bin/bash
contador=1
while [ $contador -le 5 ]; do
echo "Contador: $contador"
((contador++))
done
Explicación de este script de Bash línea por línea:
#!/bin/bash
: Al igual que en los scripts anteriores, esta línea indica que el script debe ser ejecutado utilizando el intérprete de Bash.
for i in {1..5}; do
: Esta línea inicia un bucle for
. La expresión {1..5}
genera una secuencia de números del 1 al 5. En cada iteración del bucle, la variable i
tomará el valor de cada número en esa secuencia, comenzando desde 1 hasta 5.
echo "Número: $i"
: Dentro del bucle, esta línea se ejecuta en cada iteración. Imprime el texto «Número: » seguido del valor actual de la variable i
. El símbolo $
se utiliza para acceder al valor de la variable.
done
: Esta línea cierra el bucle for
. Indica que se ha terminado el bloque de código que se ejecuta en cada iteración del bucle.
En resumen, este script imprime los números del 1 al 5, cada uno precedido por el texto «Número: «. Al ejecutar el script, la salida será:
Número: 1
Número: 2
Número: 3
Número: 4
Número: 5
6. Funciones en Bash
Las funciones permiten agrupar comandos y reutilizarlos.
Ejemplo: Definición y uso de funciones
#!/bin/bash
function saludar {
echo "Hola, $1"
}
saludar "Carlos"
Explicación del script:
#!/bin/bash
: Esta línea indica que el script debe ser ejecutado utilizando el intérprete de Bash.
function saludar {
: Aquí se define una función llamada saludar
. En Bash, las funciones se pueden definir utilizando la palabra clave function
, aunque también se puede omitir y simplemente usar el nombre de la función seguido de paréntesis.
echo "Hola, $1"
: Dentro de la función saludar
, esta línea imprime el texto «Hola, » seguido del primer argumento que se pasa a la función. En Bash, los argumentos de una función se acceden mediante $1
, $2
, etc. En este caso, $1
representa el primer argumento.
}
: Esta línea cierra la definición de la función saludar
.
saludar "Carlos"
: Aquí se llama a la función saludar
y se le pasa el argumento "Carlos"
. Esto significa que el valor de $1
dentro de la función será "Carlos"
.
En resumen, este script define una función que saluda a una persona utilizando el nombre que se le pasa como argumento. Al ejecutar el script, se imprimirá «Hola, Carlos» en la salida.
7. Ejercicios prácticos
- Crear un script de copia de seguridad:
- Crea un script que copie un directorio a una ubicación de respaldo.
- Ejemplo:
#!/bin/bash
cp -r /ruta/origen /ruta/destino
echo "Copia de seguridad completada."
- Modificar un script existente:
- Toma un script simple y añade una función que realice una tarea adicional, como contar archivos en un directorio
8. Recursos adicionales
- Documentación oficial de Bash
- Fundamentos de Bash
- Programación Bash
- La guía definitiva de línea de comandos de Linux: tutorial completo de bash