JPO : Webinar d'information sur nos formations → RDV mardi à 17h30.

Programación de scripts Bash: Todo lo que necesitas saber

El scripting ofrece a los usuarios la posibilidad de simplificar y racionalizar sus operaciones diarias. Los scripts Bash (acrónimo de Bourne Again Shell) son elementos muy poderosos y útiles para el desarrollo.

Se trata de un intérprete de comandos para los sistemas Unix y Linux. Diseñado por Brian Fox en 1989 para el proyecto GNU, fue desarrollado para reemplazar el Bourne Shell original, aportando mejoras significativas en términos de funcionalidades y compatibilidad.

La importancia del Bash en la administración de sistemas y el desarrollo de software no puede ser subestimada. Permite automatizar tareas repetitivas, gestionar sistemas a gran escala y facilitar el desarrollo de scripts complejos para diversas aplicaciones.

¿Cuáles son los fundamentos del Bash Scripting?

El Bash scripting es una habilidad esencial para cualquiera que trabaje con sistemas Unix o Linux.

¿Qué es Bash y Bang: introducción al shebang?

El primer elemento clave de cualquier script Bash es la línea shebang. Indica al sistema qué intérprete usar para ejecutar el script.

				
					#!/bin/bash
				
			

El #! es conocido como shebang, y /bin/bash especifica la ruta hacia el intérprete Bash. Esta línea es crucial ya que asegura que el script será interpretado por Bash, incluso si hay otros shells presentes en el sistema.

¿Cómo dar el primer paso: Hello World?

Con tu editor de texto favorito, crea un archivo llamado hello.sh, y añade el siguiente contenido y guarda:

				
					#!/bin/bash
echo "Hello World!"
				
			

¿Cómo hacer un script ejecutable?

Por defecto, un archivo de texto no tiene los permisos necesarios para ser ejecutado como un programa. Para hacer tu script ejecutable, es necesario usar el siguiente comando para modificar los permisos:

				
					chmod +x hello.sh
				
			

Luego es posible verificar los permisos con el siguiente comando:

				
					ls -l hello.sh
				
			

¿Cómo ejecutar un script?

Para ejecutar el script, varias posibilidades se nos ofrecen:

  • Ruta relativa:
				
					./hello.sh
				
			
  • Uso del shell Bash:
				
					bash hello.sh
				
			
  • A través del shell sh, pero puede causar comportamientos diferentes si el script utiliza funcionalidades específicas de Bash:
				
					sh hello.sh
				
			

¿Cuáles son los comandos básicos?

El Bash scripting se basa en el uso eficaz de una variedad de comandos para realizar tareas simples y complejas. A continuación, algunos comandos utilizados comúnmente para navegar y manipular el sistema de archivos:

  • Listar los archivos y carpetas del directorio actual
				
					ls
				
			
  • Cambiar de directorio
				
					cd /path/to/directory
				
			
  • Mostrar el directorio actual
				
					pwd
				
			
  • Crear un archivo vacío, o actualizar la marca de tiempo de un archivo existente
				
					touch newfile.txt
				
			
  • Eliminar archivos o carpetas
				
					rm file.txt
				
			

¿Cómo combinar comandos?

Los scripts Bash se vuelven poderosos cuando combinas comandos para realizar tareas más complejas. A continuación, algunos ejemplos:

  • Uso del “;” para ejecutar varios comandos en una secuencia
				
					cd /path/to/directory; ls; pwd
				
			
  • Redirección de salida: Usa > para redirigir la salida de un comando a un archivo, o >> para añadir a un archivo existente
				
					echo "Hello, World!" > hello.txt
echo "Hello again!" >> hello.txt
				
			
  • Uso del Pipe ( | ) para dirigir la salida de un comando como entrada de otro comando
				
					ls -l | grep ".txt"
				
			

¿Cómo gestionar variables y sustitución?

  • Declaración de una variable y uso de esta última con $
				
					NAME=”Alice”
echo “Hello, $NAME!”
				
			
  • Uso de la sustitución para usar la salida de un comando como variable
				
					DATE=$(date)
echo "Today's date is $DATE"
				
			

Nota que este ejemplo es a menudo utilizado en la creación de logs.

¿Cómo gestionar rutas?

Entender y gestionar las rutas de archivos es esencial para navegar eficazmente en el sistema de archivos y escribir scripts robustos.

¿Cuál es la diferencia entre ruta absoluta vs relativa?

Image Absoluta Image Relativa
Especifica la ubicación completa de un archivo o directorio desde la raíz del sistema de archivos. Indica la ubicación de un archivo o directorio en relación con el directorio actual.
Ejemplo: /home/user/documents/report.txt Ejemplo: documents/report.txt

¿Qué comandos están asociados a la gestión de rutas?

Para localizar archivos y comandos, hay varias herramientas disponibles en Bash:

  • Encontrar la ubicación de un ejecutable
				
					which bash
				
			
  • Ubicación de los binarios, fuentes y documentaciones asociadas a un comando
				
					whereis bash
				
			
  • Búsqueda de archivos y carpetas
				
					find /home/user -name "report.txt"
				
			

¿Cuáles son las variables de entorno más comunes?

Las variables de entorno son pares clave-valor que afectan el comportamiento de los procesos del sistema. A continuación, las más comunes:

  • $PATH : contiene una lista de directorios donde el sistema busca los ejecutables. Para modificarlo, usa el siguiente comando
				
					export PATH=$PATH:/new/directory/path
				
			
  • $HOME : Representa la carpeta personal del usuario
				
					echo $HOME
cd $HOME
				
			
  • $PWD : Indica la carpeta de trabajo actual
				
					echo $PWD
				
			
  • $USER : Contiene el nombre del usuario actual
				
					echo $USER
				
			

¿Cómo se maneja el control de flujo y lógica?

El control de flujo y la lógica son elementos esenciales del Bash scripting, permitiendo escribir scripts dinámicos y adaptables.

¿Cómo funcionan las instrucciones condicionales?

Permiten ejecutar código en función de ciertas condiciones. A continuación, un ejemplo que ilustra el uso de if…elif…else.

				
					#!/bin/bash 
echo "Ingrese un número: " 
read number 
if [ $number -gt 10 ]; then 
    echo "El número es mayor que 10." 
elif [ $number -eq 10 ]; then 
    echo "El número es igual a 10." 
else 
    echo "El número es menor que 10." 
fi
				
			

¿Cómo funcionan los bucles?

Los bucles se utilizan para repetir comandos varias veces.

  • for
				
					for i in 1 2 3 4 5; do
    echo "Contador : $i"
done
				
			
  • while
				
					count=1
while [ $count -le 5 ]; do
    echo "Contador : $count"
    ((count++))
done
				
			
  • until
				
					count=1
until [ $count -gt 5 ]; do
    echo "Contador : $count"
    ((count++))
done
				
			

¿Cuáles son algunos scripts útiles y buenas prácticas?

¿Ejemplos de scripts?

  • Script de backup : copia de archivos de una fuente a un destino
				
					#!/bin/bash
# Este script realiza una copia de seguridad de los archivos
src="/home/user/documents"
dest="/backup/documents"

if [ ! -d $dest ]; then
    mkdir -p $dest
fi

for file in $src/*; do
    if [ -f $file ]; then
        cp $file $dest
        echo "Copiado $file vers $dest"
    fi
done
				
			
  • Limpieza : eliminación de elementos de una carpeta temporal
				
					#!/bin/bash
dir="/home/user/temp"
echo "Limpiando el directorio $dir"

for file in $dir/*; do
    if [ -f $file ]; then
        rm $file
        echo "Eliminado $file"
    fi
done
				
			

¿Cuáles son algunas buenas prácticas?

1. Comenta : esto hace que los scripts sean más legibles y comprensibles

2. Nombra tus variables de manera descriptiva. Evita nombres de variables como $var1, $var2 o $tmpvar.

3. Gestiona los errores : usa condiciones para verificar el éxito y capturar los errores de manera apropiada

4. Modula tu código mediante el uso de funciones, especialmente si el script realiza varias operaciones, por ejemplo:

				
					backup_files() {
    # Código para realizar la copia de seguridad
}
				
			

5. Depura para identificar los errores. A continuación, comandos útiles para esto:

				
					#!/bin/bash
set -x # Activa el modo traza, mostrando cada comando y su resultado
# Código del script

#!/bin/bash
set -e # Detiene el script en caso de error
# Código del script

echo "Début du script" # Usar echo en puntos estratégicos del script para verificar las salidas y seguir el flujo de ejecución
				
			

Para concluir

El Bash scripting es una herramienta poderosa para automatizar y simplificar las tareas en los sistemas Unix y Linux. Dominando los fundamentos, los comandos básicos, la gestión de rutas, el control de flujo y las buenas prácticas, puedes escribir scripts robustos y eficaces para mejorar tu productividad diaria.

¿No está disponible?

Déjenos su dirección de correo electrónico para que podamos enviarle los nuevos artículos cuando se publiquen.