Scripts de Shell

Capítulo 1

1. Introducción a los Scripts de Shell

En el mundo Linux, un script de shell es como una receta de cocina: una serie de instrucciones que le dices a la computadora que ejecute en orden. Así como una receta te ayuda a cocinar sin tener que recordar todos los pasos, un script te ayuda a automatizar tareas sin tener que escribir los comandos una y otra vez.

2. Creación de Scripts Básicos

Componentes Básicos

  • Shebang (#!/bin/bash): le dice al sistema qué intérprete usar, le dice a Linux “Hey, usa bash para ejecutar esto”
  • Permisos de ejecución: Permite que el script se ejecute
  • Extensión .sh: Es una etiqueta para identificar que es un script

Ejemplo Práctico Completo:

mkdir ~/scripts
cd ~/scripts
touch first_script.sh
vim first_script.sh
#!/bin/bash
echo "This is my first bash script"
echo "======================="
ls -l
echo "Script finished!"
EOF
chmod +x first_script.sh
./first_script.sh

Salida esperada:

This is my first bash script
=======================
total 4
-rwxr-xr-x 1 user user 89 Jan 19 10:00 first_script.sh
Script finished!

3. Expresiones Regulares (RegEx)

Las expresiones regulares son como un detector de patrones muy potente. Imagina que tienes una pila de cartas y quieres encontrar todas las que tienen cierto patrón - las expresiones regulares hacen exactamente eso con texto.

Tipos de Expresiones Regulares:

  1. Expresiones Básicas

    • . : Cualquier carácter (como un comodín)
    • ^ : Inicio de línea
    • $ : Final de línea
    • * : Cero o más repeticiones
  2. Expresiones Extendidas

    • + : Una o más repeticiones
    • ? : Cero o una repetición
    • {n} : Exactamente n repeticiones

Ejemplo Práctico con grep:

ls -l > file_list.txt
grep "^conf" file_list.txt
cat << 'EOF' > file_list.txt
config.txt
conf_backup.sh
conf.d
system.log
error.log
EOF
grep "log$" file_list.txt

4. Bucles y Estructuras Condicionales

Los bucles son como una cinta transportadora que repite una tarea hasta que se cumple una condición. Las estructuras condicionales son como un guardia de seguridad que decide si algo puede pasar o no basado en ciertas condiciones.

Ejemplo de Bucle for:

cat << 'EOF' > check_space.sh
#!/bin/bash
for directory in /home /var /etc; do
    echo "Checking space in $directory"
    du -sh $directory
done
EOF

chmod +x check_space.sh
./check_space.sh

Ejemplo de Estructura Condicional:

cat << 'EOF' > check_service.sh
#!/bin/bash
if systemctl is-active postfix > /dev/null; then
    echo "El servicio postfix está activo"
else
    echo "El servicio postfix está inactivo"
fi
EOF

chmod +x check_service.sh
./check_service.sh