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?
Absoluta | 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.