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.
- Familiarizarte con la terminal de Linux y comandos básicos.
- Comprender la sintaxis básica de Bash.
- Escribir y ejecutar scripts simples.
-
Introducción a la Terminal y Comandos Básicos
Recursos Didácticos:- Video Tutorial:
- Guías Interactivas:
- Linux Command Line Basics en Codecademy (requiere registro gratuito)
- Juego Didáctico:
- Bandit de OverTheWire
Bandit es un juego interactivo que te introduce a los comandos básicos de Linux de forma práctica y divertida.
- Bandit de OverTheWire
-
Primeros Pasos con Bash Scripting
Recursos Didácticos:- Tutorial Escrito y Práctico:
- Bash Scripting Tutorial for Beginners
(Muy visual y paso a paso, ideal para comenzar)
- Bash Scripting Tutorial for Beginners
- 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:
- Learn Shell - Interactive Shell Scripting
(Te permite practicar comandos y scripting directamente en el navegador)
- Learn Shell - Interactive Shell Scripting
- Tutorial Escrito y Práctico:
-
Lecturas Complementarias
- Libro Recomendado:
- Learning the bash Shell de Cameron Newham
(Aunque está en inglés, es una referencia excelente para sentar las bases)
- Learning the bash Shell de Cameron Newham
- Libro Recomendado:
- 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.
-
Variables, Condicionales y Bucles
Recursos Didácticos:- Tutorial Interactivo:
- Bash Scripting: Variables, Condicionales y Bucles
(Aunque está en inglés, es muy práctico. Puedes traducir los conceptos o buscar complementos en español.)
- Bash Scripting: Variables, Condicionales y Bucles
- 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.
- Tutorial Interactivo:
-
Redirección y Manejo de Archivos
Recursos Didácticos:- Tutoriales y Videos:
- Ejercicios Prácticos:
- Escribe un script que ejecute un comando (por ejemplo,
ls -l
) y redirija su salida a un archivo de log. - Crea un script que lea línea por línea de un archivo de texto, procese cada línea (por ejemplo, contar palabras o filtrar contenido) y guarde el resultado.
- Escribe un script que ejecute un comando (por ejemplo,
-
Funciones y Modularidad
Recursos Didácticos:- Tutorial:
- Funciones en Bash (Cyberciti.biz)
(Muy didáctico y con ejemplos claros)
- Funciones en Bash (Cyberciti.biz)
- 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.
- Tutorial:
- Dominar estructuras complejas, manejo de errores y depuración.
- Automatizar tareas complejas (despliegues, backups, monitoreo).
- Utilizar herramientas avanzadas como
awk
,sed
y expresiones regulares.
-
Manejo Avanzado de Errores y Depuración
Recursos Didácticos:- Guía Avanzada:
- Advanced Bash-Scripting Guide (ABS)
(Una lectura esencial para profundizar; si bien es densa, te brindará un entendimiento profundo)
- Advanced Bash-Scripting Guide (ABS)
- Ejercicios Prácticos:
- Escribe scripts que usen
set -e
(para detener el script en caso de error) yset -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.
- Escribe scripts que usen
- Guía Avanzada:
-
Uso de Herramientas Avanzadas:
awk
,sed
y Expresiones Regulares
Recursos Didácticos:- Tutorial de Awk:
- Tutorial de awk
(Una guía completa y repleta de ejemplos prá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).
- Desarrolla un script que use
- Tutorial de Awk:
-
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.
- Proyectos y Ejercicios:
- 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.
-
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.
- Estudio de Casos:
-
Seguridad y Buenas Prácticas
Recursos Didácticos:- Herramientas de Validación:
- ShellCheck
(Utilízalo para analizar y corregir tus scripts)
- ShellCheck
- 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.
- Herramientas de Validación:
-
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.
- Lecturas y Blogs:
-
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.
-
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!