La creación de scripts básicos representa el salto cualitativo entre el uso manual de la terminal y la auténtica automatización avanzada. Un script es un archivo de texto secuencial que agrupa una serie de comandos del sistema operativo para que se ejecuten de manera ordenada y desatendida.
Para un administrador de sistemas, dominar el diseño de scripts tanto en entornos Windows (Batch) como en Linux (Bash), junto con el manejo de variables, estructuras de control condicionales y bucles, es indispensable para eliminar tareas repetitivas y estandarizar procedimientos operativos.
Fundamentos de Scripting y Estructuras de Control
El desarrollo de scripts se apoya en constructos lógicos universales adaptados a la sintaxis nativa de cada intérprete de comandos:
- Condicionales (
if / else): Permiten tomar decisiones lógicas evaluando si se cumple un criterio determinado (ej. comprobar si un archivo existe antes de borrarlo). - Bucles (
for / while): Automatizan la repetición de bloques de código para iterar sobre listas de elementos, directorios o secuencias numéricas.
.bat / .cmd): El lenguaje de scripting tradicional de la línea de comandos de Windows (cmd.exe), empleado habitualmente para tareas sencillas de mantenimiento, copias locales y despliegues en infraestructuras Microsoft..sh): El estándar de programación en shell para sistemas GNU/Linux. Todo script de Bash se inicia obligatoriamente con una línea de declaración de intérprete o shebang (#!/bin/bash) que indica al sistema operativo qué binario debe procesar el código.CARPETA="/tmp/backup") y se invocan anteponiendo el signo de dólar ($CARPETA).Analogía: Imagina la partitura musical y la pianola automática de un salón clásico. Los scripts Batch y Bash equivalen a la tira perforada de papel que contiene la secuencia exacta de notas musicales; las variables son los registros que indican la intensidad o velocidad que debe aplicarse en cada compás; las estructuras de control (condicionales y bucles) representan las órdenes lógicas de la máquina para repetir un estribillo tres veces o cambiar de melodía solo si se pulsa un determinado pedal; y la automatización de tareas repetitivas es la capacidad de interpretar toda la sinfonía a la perfección sin que el pianista tenga que mover un solo dedo de forma manual.
Actividad práctica
Objetivo:
Crear un script básico en Bash, declarar variables, implementar una estructura condicional y otorgar permisos de ejecución para automatizar una tarea sencilla.
Tareas:
- Crea un nuevo archivo de texto utilizando un editor en consola (ej.
nano automatizar.sh) y añade la línea de cabecera shebang:#!/bin/bash. - Declara una variable con tu nombre y añade una estructura condicional simple que verifique si existe un directorio de trabajo temporal (ej.
if [ -d "/tmp/proyecto" ]; then echo "Existe"; else mkdir /tmp/proyecto; fi). - Guarda el fichero, asígnale permisos de ejecución mediante el comando
chmod +x automatizar.shy ejecútalo en la terminal escribiendo./automatizar.sh.
Preguntas de reflexión:
#!/bin/bash) al comienzo de un script en Linux?[ "$VALOR" = "1" ])?for) con herramientas de filtrado para procesar de manera masiva una lista de archivos en un directorio?Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué función cumple el shebang (#!/bin/bash)?
El shebang indica al núcleo del sistema operativo qué intérprete de comandos específico debe utilizarse para leer y ejecutar el código contenido en el archivo de texto. Sin esta línea, el sistema no sabría si debe procesar el script con Bash, Python, Perl u otro lenguaje compatible.
2. ¿Qué diferencias hay entre Batch y Bash?
Batch (.bat / .cmd) es el intérprete clásico y limitado de la línea de comandos de Windows, con una sintaxis rudimentaria y orientada a entornos Microsoft. Bash (Bourne Again SHell) es un lenguaje de scripting potente, rico y estandarizado en entornos Unix/Linux, con un soporte avanzado para expresiones regulares, estructuras de control complejas y una integración nativa con miles de utilidades del sistema.
3. ¿Por qué usar comillas dobles al evaluar variables en condicionales?
Para prevenir errores de sintaxis provocados por la expansión de variables vacías o cadenas que contienen espacios en blanco. Si una variable está vacía y no se protege con comillas, el intérprete eliminará el token de la sentencia condicional, alterando la lógica de la comparación y generando errores de ejecución en el script.
4. ¿Cómo se combinan bucles y filtros para procesar archivos?
Mediante la iteración controlada de elementos. Por ejemplo, un bucle for archivo in /ruta/*.log; do ... done recorre uno a uno todos los ficheros que coincidan con el patrón de extensión, permitiendo aplicar dentro del bloque de código operaciones automatizadas como análisis de texto, copias de seguridad o borrados selectivos.
5. ¿Qué precauciones tener con variables introducidas por usuarios?
Nunca se debe confiar en las entradas directas de los usuarios sin una validación previa (sanitización). Un usuario malintencionado podría introducir caracteres especiales de control (como punto y coma, tuberías o redirecciones) para lograr la inyección de comandos en el sistema operativo y ejecutar código arbitrario con los privilegios del script.