{"id":27995211,"url":"https://github.com/matcom/scr_shell_2025","last_synced_at":"2025-05-08T20:15:26.367Z","repository":{"id":284264235,"uuid":"954366814","full_name":"matcom/scr_shell_2025","owner":"matcom","description":"Repositorio para la entrega del primer proyecto de la asignatura Sistemas Computacionales y Redes, correspondientes al curso 2025.","archived":false,"fork":false,"pushed_at":"2025-04-16T02:00:23.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-08T20:15:11.406Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matcom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-03-25T01:15:41.000Z","updated_at":"2025-04-16T02:00:26.000Z","dependencies_parsed_at":"2025-03-25T02:31:28.709Z","dependency_job_id":"168148a3-bf75-465b-8b9e-444870fe5b11","html_url":"https://github.com/matcom/scr_shell_2025","commit_stats":null,"previous_names":["matcom/scr_shell_2025"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcom%2Fscr_shell_2025","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcom%2Fscr_shell_2025/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcom%2Fscr_shell_2025/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcom%2Fscr_shell_2025/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matcom","download_url":"https://codeload.github.com/matcom/scr_shell_2025/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253141531,"owners_count":21860541,"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":[],"created_at":"2025-05-08T20:15:25.586Z","updated_at":"2025-05-08T20:15:26.334Z","avatar_url":"https://github.com/matcom.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scr_shell_2025\nRepositorio para la entrega del 1mer proyecto de la asignatura Sistemas Computacionales y Redes, correspondientes al curso 2025.\n\nEl objetivo del proyecto es hacer un shell que simule los shells del sistema operativo linux.\n\nLas funcionalidades son las siguientes:\n\n1. Al ejecutar el programa este debe imprimir un prompt (ejemplo \"$ \")\n2. Ejecutar comandos e imprimir su salida\n3. Poder ejecutar el comando `cd` (y que cambie de directorio)\n4. Redirigir entrada y salida estándar de comandos hacia/desde ficheros con `\u003e`, `\u003c`, `\u003e\u003e` \n5. Redirigir la salida estándar de un comando hacia la entrada de otro con un pipe `|`\n6. Una vez terminado el comando previo, se debe mostrar el prompt nuevamente.\n7. Solamente habrá un espacio entre cada uno de los *tokens* de la entrada\n  * comandos\n  * parámetros\n  * operadores de redirección (`\u003e`, `|`, etc.)\n\ny hasta aquí tienen 3 puntos en el proyecto\n\n8. Implementar más de una tubería (1pt adicional)\n9. Implementar el operador `\u0026` y tener procesos en el background (1pt adicional)\n  * jobs =\u003e listar todos los procesos que están corriendo en el background\n  * fg \u003cpid\u003e =\u003e envía el proceso \u003cpid\u003e hacia el foreground\n  * NOTA: aquí tiene que funcionar algo como `command1 \u003c file1 | command2 \u003e file2 \u0026`\n9. Permitir cualquier cantidad de espacios o no entre los comandos y parámetros (0.5pt adicional)\n10. Implementar un historial de comandos (un comando `history`) que permita imprimir enumeradamente los últimos 50 comandos ejecutados en la consola (0.5pt adicional). Un comando no va a parar al historial si:\n  * Se repite el último comando.\n  * El comando empieza con espacio.\n11. Implementar Re-utilización de comandos.\n  * El comando history muestra la secuencia de comandos, con un número a su izquierda. Con este número es posible llamar de nuevo el comando utilizando el caracter admiración \"!\" (comando `![número]`). El último comando se repite con doble admiración \"!!\" (0.5pt adicional)\n  * Ejecutar el último comando (`command`) que se ha ejecutado escribiendo `![command]` (0.5pt adicional)\n  * NOTA: Por ejemplo history retorna:\n    1  history \n    2  ls \n    3  cd /dev \n    4  ls \n    5  rm *.bak\n    6  cd /etc \n    7  history\n\n\n    De manera que si hacemos:\n   `!5` ejecuta \"rm *.bak\"\n   `!!` ejecuta \"history\"\n   `!cd` ejecuta \"cd /etc\"\n\n\n\n   Fecha de entrega: Domingo 20 de abril 11:59:59 PM. Mediante un issue o PR en el presente repositorio.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatcom%2Fscr_shell_2025","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatcom%2Fscr_shell_2025","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatcom%2Fscr_shell_2025/lists"}