{"id":27078753,"url":"https://github.com/jaimehp05/bash","last_synced_at":"2026-05-04T05:33:01.132Z","repository":{"id":286176874,"uuid":"960614195","full_name":"JaimeHP05/Bash","owner":"JaimeHP05","description":"Spanish commented practices about Bash.","archived":false,"fork":false,"pushed_at":"2025-04-09T11:48:52.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T20:17:58.629Z","etag":null,"topics":["bash","bash-script","bash-scripting","bash-scripts","software-engineering"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JaimeHP05.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-04T18:34:33.000Z","updated_at":"2025-04-09T11:48:55.000Z","dependencies_parsed_at":"2025-04-04T19:58:56.814Z","dependency_job_id":null,"html_url":"https://github.com/JaimeHP05/Bash","commit_stats":null,"previous_names":["jaimehp05/bash"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaimeHP05%2FBash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaimeHP05%2FBash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaimeHP05%2FBash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JaimeHP05%2FBash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JaimeHP05","download_url":"https://codeload.github.com/JaimeHP05/Bash/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103910,"owners_count":21048246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","bash-script","bash-scripting","bash-scripts","software-engineering"],"created_at":"2025-04-06T01:17:53.649Z","updated_at":"2026-05-04T05:33:01.127Z","avatar_url":"https://github.com/JaimeHP05.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Prácticas de Bash\n\nEste repositorio contiene los ejercicios de Bash que voy realizando en la asignatura Programación y Administración de Sistemas. Cada carpeta representa una práctica diferente, con su respectiva descripción y ejercicios.\n\n## Contenido\n\n- **Prácticas:** Cada práctica está organizada en carpetas numeradas o con nombres descriptivos, para facilitar la navegación y el seguimiento de los ejercicios.\n  \n- **Ejercicios:** Scripts de Bash interesantes que demuestran los conceptos aprendidos en cada sesión.\n  \n- **Notas:** Comentarios que explican el funcionamiento de cada script y los comandos utilizados. [Forman parte de los ejercicios]\n\n- **Ficheros Complementarios:** Algunos ejercicios requerirán de estos archivos para funcionar correctamente.\n\n## Cómo usar este repositorio\n\n1. **Clonarlo:**  \n   Puedes clonar este repositorio en tu máquina local utilizando el siguiente comando:\n   ```bash\n   git clone https://github.com/JaimeHP05/Bash.git\n\n2. **Navegar por las prácticas:**\n  Revisa las carpetas o archivos de las prácticas para encontrar el ejercicio que necesites.\n\n3. **Ejecutar los scripts:**\n  Abre una terminal, navega hasta la carpeta correspondiente y ejecuta el script de Bash:\n    ```bash\n    cd Bash\n    \n    cd Bloque_X\n    \n    chmod u+x nombre_ejercicio.sh\n    \n    ./nombre_ejercicio.sh\n    \n\n## Bloque 1\n\n- **Ejercicio 1:**\n  \n   Lee una carpeta que tiene un puñado de archivos con la asistencia de cada alumno a clase. A continuación, muestra cuántas personas fueron a cada clase. Este código se puede cambiar a muchas extensiones, tales como mostrar cuántas veces ha venido un estudiante a clase.\n  \n\n- **Ejercicio 2:**\n  \n   Copia un directorio, permitiendo elegir entre archivarlo (.tar) o comprimirlo (.tar.gz). Verifica argumentos, crea el directorio de destino si no existe, genera un nombre de archivo con fecha y usuario, y controla si se puede sobrescribir. Finalmente, realiza la operación seleccionada y guarda el archivo en el directorio indicado.\n\n\n- **Ejercicio 3:**\n  \n   Verifica los permisos de los directorios y archivos relacionados con las claves SSH de los usuarios en un sistema. Si detecta problemas, genera un archivo de advertencia en el escritorio del usuario afectado.\n\n- **Ejercicio 4:**\n\n  Genera una cadena aleatoria de una longitud específica y de un tipo determinado (alfa, num o alfanum) utilizando /dev/urandom para obtener caracteres aleatorios. Verifica los argumentos de entrada y solicita el tipo si no se proporciona.\n\n- **Ejercicio 5:**\n\n  Recorre un directorio dado, lista todos los archivos y muestra información detallada de cada uno (nombre, ruta completa, fecha de modificación, tamaño y permisos). Finalmente, ordena los resultados por fecha de modificación en orden ascendente.\n\n- **Ejercicio 6:**\n  \n  Genera un archivo index.html en un directorio, que contiene una lista en formato HTML de todos los archivos y subdirectorios dentro de ese directorio. Para los subdirectorios, crea enlaces recursivos a sus propios índices HTML. Verifica que el directorio exista antes de ejecutarse y muestra mensajes de confirmación al crear cada índice.\n\n- **Ficheros Complementarios:**\n  \n  Ficheros_Ejercicio1 --\u003e Puedes añadir todos los archivos de texto que quieras, pero deben cumplir las siguientes condiciones:\n    - Cada línea sólo puede incluir un 1 o un 0\n    - Todos los alumnos deben tener el mismo número de líneas (sesiones en las que ha habido esa clase)\n    - El fichero que se muestra en su carpeta es sólo un ejemplo, puedes añadir todos los que quieras.\n\n  generar_ficheros_ejercicio3.sh --\u003e Es un programa que genera los usuarios sobre los que se va a realizar el ejercicio de la práctica. Este programa no ha sido creado por mí, formaba parte del enunciado de la tarea y había que aplicarlo de igual forma.\n\n  \n## Bloque 2\n\n- **Ejercicio 1:**\n  \n   Genera un archivo index.html en un directorio dado, que contiene una lista en formato HTML de todos los archivos y subdirectorios dentro de ese directorio. Para los subdirectorios, crea enlaces recursivos a sus propios índices HTML. Verifica que el directorio exista antes de ejecutarse y muestra mensajes de confirmación al crear cada índice.\n  \n- **Ejercicio 2:**\n\n  Verifica que un archivo .txt exista y sea válido. Luego, procesa su contenido utilizando sed para formatear campos como Título, Autor, Año, Precio y Género, reorganizándolos en un formato más legible.\n\n- **Ejercicio 3:**\n\n   Procesa un archivo de registros de acceso web, filtra las solicitudes con código HTTP 200, y extrae las direcciones IP y URLs solicitadas. Según la opción proporcionada (repite-si o repite-no), muestra todas las solicitudes o un conteo único de accesos, junto con el total de accesos.\n\n- **Ejercicio 4:**\n\n  Procesa el archivo `/etc/passwd` para extraer información específica de los usuarios del sistema. Muestra usuarios cuyo nombre empieza con \"l\", usuarios con shells válidos, UID de usuarios cuyo directorio home no está en `/home`, usuarios con GID mayor a 1000, y usuarios con una coma en su campo GECOS.\n\n- **Ejercicio 5:**\n\n  Analiza las interfaces de red disponibles en el sistema y muestra información como la dirección IP, broadcast, máscara de red (en bits), si el cable está conectado, y las velocidades soportadas y anunciadas. Utiliza herramientas como ifconfig y ethtool para obtener los datos.\n\n- **Ejercicio 6:**\n\n  Analiza los últimos 20 comandos del historial (~/.bash_history), cuenta cuántas veces se ejecutó cada comando y determina el máximo número de argumentos usados con cada uno. Utiliza archivos temporales para procesar los datos y muestra un resumen por comando antes de eliminar los archivos temporales.\n\n- **Ficheros Complementarios:**\n  \n  libros.txt --\u003e Un fichero de texto con libros escritos según el formato que lee el ejercicio, puedes crear todos los libros extras que quieras. Este archivo no ha sido creado por mí.\n  \n  access.log --\u003e Es el archivo que lee el ejercicio 3 para sacar la información de los registros. Este archivo no ha sido creado por mí.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaimehp05%2Fbash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaimehp05%2Fbash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaimehp05%2Fbash/lists"}