Skip to content

Instantly share code, notes, and snippets.

@EmilZapata
Created February 6, 2025 20:20
Show Gist options
  • Save EmilZapata/39ddcd79143091360755906f08b820ee to your computer and use it in GitHub Desktop.
Save EmilZapata/39ddcd79143091360755906f08b820ee to your computer and use it in GitHub Desktop.
Bash and Scripting roadma ROADMAP

Ruta de Aprendizaje en Bash y Shell Scripting

Esta ruta está diseñada para aprender desde cero hasta alcanzar un nivel de maestría en Bash y Shell Scripting. Se divide en 4 niveles, cada uno con objetivos, recursos didácticos, ejercicios prácticos y recomendaciones para no dejar huecos en el aprendizaje.


Nivel 1: Principiante

Objetivos

  • Familiarizarte con la terminal de Linux y comandos básicos.
  • Comprender la sintaxis básica de Bash.
  • Escribir y ejecutar scripts simples.

Recursos y Actividades

  1. Introducción a la Terminal y Comandos Básicos
    Recursos Didácticos:

  2. Primeros Pasos con Bash Scripting
    Recursos Didácticos:

    • Tutorial Escrito y Práctico:
    • Ejercicios Prácticos:
      • Escribe un script simple que imprima "¡Hola, Mundo!" y ejecútalo.
      • Crea un script que reciba uno o dos argumentos (por ejemplo, tu nombre y tu hobby) y los muestre en pantalla.
    • Plataforma Interactiva:
  3. Lecturas Complementarias

    • Libro Recomendado:
      • Learning the bash Shell de Cameron Newham
        (Aunque está en inglés, es una referencia excelente para sentar las bases)

Nivel 2: Intermedio

Objetivos

  • Usar variables, condicionales y bucles en Bash.
  • Comprender la redirección de entrada/salida y manipulación de archivos.
  • Escribir scripts que automaticen tareas sencillas y empleen funciones.

Recursos y Actividades

  1. Variables, Condicionales y Bucles
    Recursos Didácticos:

    • Tutorial Interactivo:
    • Ejercicios Prácticos:
      • Crea un script que recorra una lista de nombres (por ejemplo, usando un array) e imprima un saludo para cada uno.
      • Desarrolla un script que verifique si un archivo o directorio existe, utilizando condicionales, y muestre mensajes personalizados.
    • Desafío Didáctico:
      • Utiliza ShellCheck para validar y retar tu código, asegurándote de que pase sin errores.
  2. Redirección y Manejo de Archivos
    Recursos Didácticos:

  3. Funciones y Modularidad
    Recursos Didácticos:

    • Tutorial:
    • Ejercicios Prácticos:
      • Escribe un script que defina al menos dos funciones: una para mostrar información del sistema (uso de memoria, espacio en disco) y otra para mostrar la fecha y hora.
      • Integra estas funciones en un script mayor que decida, mediante condicionales, qué función ejecutar según la entrada del usuario.

Nivel 3: Avanzado

Objetivos

  • Dominar estructuras complejas, manejo de errores y depuración.
  • Automatizar tareas complejas (despliegues, backups, monitoreo).
  • Utilizar herramientas avanzadas como awk, sed y expresiones regulares.

Recursos y Actividades

  1. Manejo Avanzado de Errores y Depuración
    Recursos Didácticos:

    • Guía Avanzada:
    • Ejercicios Prácticos:
      • Escribe scripts que usen set -e (para detener el script en caso de error) y set -u (para tratar variables no definidas) y prueba su comportamiento.
      • Integra mecanismos de logging y manejo de errores en un script que automatice un backup de archivos.
  2. Uso de Herramientas Avanzadas: awk, sed y Expresiones Regulares
    Recursos Didácticos:

    • Tutorial de Awk:
    • Tutorial de Sed:
    • Ejercicios Prácticos:
      • Desarrolla un script que use awk para extraer columnas específicas de un archivo CSV y realice sumatorias o promedios.
      • Usa sed para reemplazar patrones en un archivo de configuración (por ejemplo, cambiar puertos o direcciones IP).
  3. Automatización de Tareas Complejas
    Recursos Didácticos:

    • Proyectos y Ejercicios:
      • Automatiza el despliegue de una aplicación sencilla (por ejemplo, actualizar código, reiniciar un servicio) en un entorno local o en una máquina virtual.
      • Busca proyectos open source en GitHub que utilicen scripts complejos y trata de replicar o mejorar su funcionalidad.
    • Juego/Desafío:
      • Participa en retos de automatización en foros o comunidades (por ejemplo, en StackOverflow o Reddit r/bash). Algunos usuarios proponen desafíos para resolver con scripting.

Nivel 4: Maestría

Objetivos

  • Diseñar y mantener sistemas de automatización complejos y robustos.
  • Escribir scripts seguros, eficientes y con manejo de errores avanzado para entornos de producción.
  • Contribuir a proyectos open source y crear herramientas propias de administración.

Recursos y Actividades

  1. Proyectos Reales y Contribuciones
    Recursos Didácticos:

    • Estudio de Casos:
      • Analiza repositorios de proyectos grandes en GitHub que usen Bash (por ejemplo, scripts de despliegue de Docker o Kubernetes).
    • Ejercicios Prácticos:
      • Desarrolla un script que integre varias herramientas (Git, Docker, PM2, etc.) para automatizar un despliegue completo.
      • Realiza un proyecto de automatización que incluya tests, validaciones y logging avanzado.
    • Plataforma de Retos:
      • Participa en plataformas como Coderbyte o HackerRank y busca desafíos relacionados con scripting y automatización.
  2. Seguridad y Buenas Prácticas
    Recursos Didácticos:

    • Herramientas de Validación:
      • ShellCheck
        (Utilízalo para analizar y corregir tus scripts)
    • Cursos y Artículos:
      • Investiga artículos y tutoriales sobre "Secure Bash Scripting" en blogs especializados.
    • Ejercicios Prácticos:
      • Revisa scripts existentes, corrige vulnerabilidades y mejora la seguridad.
      • Implementa validación de entradas, sanitización de variables y manejo de errores robusto.
  3. Optimización y Mantenimiento de Scripts
    Recursos Didácticos:

    • Lecturas y Blogs:
      • Busca artículos sobre “Optimizing Bash Scripts” en Medium, Dev.to o sitios especializados en Linux.
    • Ejercicios Prácticos:
      • Refactoriza scripts antiguos para mejorar su rendimiento y legibilidad.
      • Crea documentación completa y ejemplos de uso para cada uno de tus scripts.
    • Retos Colaborativos:
      • Participa en comunidades y hackathons online donde se trabajen proyectos de automatización con Bash.

Resumen de lo que podrás lograr en cada nivel

  • Nivel 1 (Principiante):

    • Uso básico de la terminal y comandos de Linux.
    • Escritura y ejecución de scripts simples.
    • Introducción a la sintaxis y estructuras elementales de Bash.
  • Nivel 2 (Intermedio):

    • Dominio de variables, condicionales, bucles y funciones.
    • Manejo de redirecciones y ficheros.
    • Automatización de tareas sencillas y modulares.
  • Nivel 3 (Avanzado):

    • Desarrollo de scripts robustos con manejo de errores y logging.
    • Uso de herramientas avanzadas como awk, sed y expresiones regulares.
    • Automatización de tareas complejas (backups, despliegues, monitoreo).
  • Nivel 4 (Maestría):

    • Diseño e implementación de sistemas de automatización integrados y escalables.
    • Escritura de scripts seguros, optimizados y con buenas prácticas para entornos de producción.
    • Contribución a proyectos open source y creación de herramientas propias.

Consejos Finales

  • Práctica Constante:
    Realiza pequeños proyectos y retos diarios. La práctica es la clave para afianzar conocimientos.

  • Documenta tu Progreso:
    Crea un repositorio personal en GitHub donde subas tus scripts y proyectos, anota qué has aprendido y qué desafíos has superado.

  • Únete a Comunidades:
    Participa en foros como r/bash, StackOverflow y grupos de Discord enfocados en scripting y Linux. Compartir dudas y soluciones te ayudará a crecer.

  • Sé Curioso y Creativo:
    No dudes en buscar nuevos desafíos o crear tus propios retos. Por ejemplo, automatiza tareas en tu entorno diario, desde el manejo de archivos hasta la administración de servicios.


¡Disfruta el proceso de aprendizaje y mucho éxito en tu camino para convertirte en un experto en Bash y Shell Scripting!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment