Introducción a Shell Scripting

¿Qué es Shell Scripting?

Un Shell Script es un archivo de texto que contiene una serie de comandos ejecutables por una Shell, que es un intérprete de línea de comandos en sistemas operativos basados en UNIX/Linux. Los scripts son utilizados para automatizar tareas repetitivas, administrar sistemas o realizar operaciones complejas mediante la combinación de comandos.

¿Para qué sirve?

  • Automatización de tareas: Reduce el tiempo necesario para ejecutar comandos manuales y facilita tareas repetitivas.
  • Administración del sistema: Ayuda a configurar y monitorear sistemas de manera eficiente.
  • Manejo de procesos complejos: Permite combinar múltiples comandos en flujos de trabajo avanzados.
  • Desarrollo: Automatiza la configuración de entornos de desarrollo y compilación de proyectos.

¿En qué lenguaje está escrito?

Shell Scripting no es un lenguaje único, sino un conjunto de comandos que la Shell interpreta. Los shells más comunes incluyen:

  • Bash (Bourne Again Shell): Común en Linux.
  • Sh (Bourne Shell): Básico y más antiguo.
  • Zsh (Z Shell): Más interactivo y avanzado.
  • Fish (Friendly Interactive Shell): Ideal para principiantes.

La mayoría de los shells están escritos en C.

¿Cómo funciona Shell Scripting?

  1. Escritura del script: Se crea un archivo de texto plano que contiene comandos válidos del shell.
  2. Interpretación: La Shell lee el script línea por línea y ejecuta los comandos.
  3. Resultados: Se generan salidas o efectos dependiendo de los comandos ejecutados.

#!/bin/bash
echo "Hola, mundo"
    

El script anterior imprime "Hola, mundo". Para ejecutarlo:


chmod +x script.sh  # Dar permisos de ejecución
./script.sh         # Ejecutar el script
    

Estructura básica de un Shell Script

  • Shebang: Define el intérprete del script. Ejemplo:
    
    #!/bin/bash
                
  • Comentarios: Se escriben con #. Ejemplo:
    
    # Este es un comentario
                
  • Variables: Ejemplo:
    
    NOMBRE="Mundo"
    echo "Hola, $NOMBRE"
                
  • Condicionales: Ejemplo:
    
    if [ -e archivo.txt ]; then
        echo "El archivo existe."
    fi
                
  • Bucles: Ejemplo:
    
    for i in {1..5}; do
        echo "Número $i"
    done
                
  • Funciones: Ejemplo:
    
    mi_funcion() {
        echo "Soy una función"
    }
    mi_funcion
                

Línea de comandos en Shell Scripting

La línea de comandos es la entrada de texto donde se ejecutan comandos. Un ejemplo típico:


$ ls -l
    

Esto lista los archivos en el directorio actual. Los comandos incluidos en un script son ejecutados automáticamente en orden.

Cómo construir un Shell Scripting usando lenguaje C

  1. Leer la entrada del usuario: Usa fgets para capturar comandos.
  2. Analizar el comando: Usa strtok para dividir la entrada en palabras.
  3. Ejecutar comandos: Usa fork() para crear un proceso hijo y ejecuta el comando con execvp.
  4. Añadir funcionalidades: Implementa control de errores y comandos internos como cd.

Ejemplo de Shell básico en C:


#include 
#include 
#include 
#include 
#include 
#include 

int main() {
    char comando[1024];

    while (1) {
        printf("mi-shell> ");
        fgets(comando, 1024, stdin);

        // Remover el salto de línea al final
        comando[strcspn(comando, "\n")] = 0;

        // Salir si el usuario escribe "exit"
        if (strcmp(comando, "exit") == 0) {
            break;
        }

        // Crear un proceso hijo
        pid_t pid = fork();

        if (pid == 0) {
            // Proceso hijo
            execlp(comando, comando, NULL);
            perror("Error ejecutando comando");
            exit(EXIT_FAILURE);
        } else if (pid > 0) {
            // Proceso padre
            wait(NULL);
        } else {
            perror("Error en fork");
        }
    }

    return 0;
}
    

Conclusión

Shell Scripting es una herramienta poderosa para automatizar tareas y administrar sistemas. Está basado en comandos que el intérprete Shell ejecuta, generalmente escrito en C. Crear tu propio Shell en C es un ejercicio interesante para aprender sobre la interacción entre sistemas y procesos.

Destacado

Bootloader Avanzado en Ensamblador

Bootloader Avanzado en Ensamblador Características del Bootloader Se carga en la dirección 0x7C00 (BIOS). ...