---
title: "Introducción al Bash Scripting"
description: "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..."
url: https://www.puntocomunica.com/introduccion-al-bash-scripting/
date: 2025-01-07
modified: 2025-01-08
author: "redacción puntocomunica"
image: https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo3.png
categories: ["Innovación, Internet y Tecnología"]
tags: ["bash", "bash scripting", "curso básico linux", "gnu linux", "internet y tecnología"]
type: post
lang: es
---

# 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.

![script de bash](https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo3.png)

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

![](https://www.puntocomunica.com/wp-content/uploads/2025/01/GNU-Bash.jpg)

### 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](https://www.puntocomunica.com/la-gran-familia-gnu-linux-distribuciones-y-entornos-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`](https://es.linux-console.net/?p=10511)** (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**](https://www.gnu.org/software/man-db/)

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:

![](https://www.puntocomunica.com/wp-content/uploads/2025/01/man.jpg)

### 3. Creación de un script básico

#### Estructura de un script en Bash

La estructura básica de un script de Bash incluye:

1. **Shebang**: La primera línea del script que indica al sistema qué intérprete usar. Para Bash, se escribe:

```
#!/bin/bash
```

1. **Comandos**: Los comandos que deseas ejecutar.

#### Ejemplo: Primer script «Hola Mundo»

1. Abre la terminal y crea un nuevo archivo llamado `hola_mundo.sh`:

```
nano hola_mundo.sh
```

1. Escribe el siguiente contenido en el archivo:

```
#!/bin/bash
   echo "Hola Mundo"
```

1. Guarda el archivo y sal del editor (`Ctrl + X`, luego `Y` y `Enter`)
2. Da permisos de ejecución al script:

```
chmod +x hola_mundo.sh
```

1. Ejecuta el script en la terminal:

```
./hola_mundo.sh
```

**Capturas de pantalla del proceso:**

![](https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo1.png)

![](https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo2.png)

![](https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo3.png)

![](https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo4.png)

[![](https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo5.png)](https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo5.png)

![](https://www.puntocomunica.com/wp-content/uploads/2025/01/hola_mundo6.png)

### 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.

1.

### 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`.

1.

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.

1.

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"`.

1.

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

1. **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."
```

1. **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](https://www.gnu.org/software/bash/manual/bash.html)
- [Fundamentos de Bash](https://territoriohacker.com/fundamentos-de-bash/)
- [Programación Bash](https://github.com/IamJony/Programacion-bash)
- [La guía definitiva de línea de comandos de Linux: tutorial completo de bash](https://www.freecodecamp.org/espanol/news/la-guia-definitiva-de-linea-de-comandos-de-linux-tutorial-completo-de-bash/)

### [Volver al índice del curso](https://www.puntocomunica.com/curso-basico-linux/)
