Este proyecto es una implementación de un shell básico creado como parte de la asignatura de Sistemas Operativos en el segundo año de la carrera de Ciberseguridad e Inteligencia Artificial. El objetivo es comprender y aplicar conceptos fundamentales de sistemas operativos como procesos, memoria, gestión de entradas/salidas y ejecución de comandos.
El proyecto consiste en la creación de un shell básico que simula el comportamiento de un sistema operativo al ejecutar comandos de manera interactiva. Además, se implementan características como:
- Ejecutar comandos del sistema.
- Redirección de entrada y salida.
- Pipes (tuberías).
- Manejo de procesos en segundo plano y primer plano.
- Soporte para señales.
El shell permite a los usuarios interactuar con el sistema operativo de manera eficiente y flexible, gestionando múltiples procesos y ejecutando programas de forma paralela.
-
Clona el repositorio en tu máquina local:
git clone https://github.com/mmarhin/shell.git
-
Accede al directorio del proyecto:
cd shell -
Compila el proyecto utilizando
gcc:gcc Shell_project.c job_control.c -o shell
-
Ejecuta el shell:
./shell
- Para ejecutar un comando, simplemente ingresa el nombre del comando en el prompt.
- Utiliza
Ctrl+Dpara salir del shell. - Soporta redirección de entrada y salida usando
>y<. - Puedes usar pipes con
|para encadenar comandos. - Ejecuta programas en segundo plano con
&.
Si deseas contribuir, por favor realiza un fork del repositorio, crea una rama con tus cambios y abre un pull request para revisión.
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
This project is an implementation of a basic shell created as part of the Operating Systems course in the second year of the Cybersecurity and Artificial Intelligence degree. The goal is to understand and apply fundamental operating system concepts such as processes, memory, input/output management, and command execution.
The project involves creating a basic shell that simulates the behavior of an operating system by executing commands interactively. Additionally, features such as:
- Executing system commands.
- Input and output redirection.
- Pipes.
- Handling background and foreground processes.
- Signal handling.
The shell allows users to interact with the operating system efficiently and flexibly, managing multiple processes and executing programs in parallel.
-
Clone the repository to your local machine:
git clone https://github.com/mmarhin/shell.git
-
Navigate to the project directory:
cd shell -
Compile the project using
gcc:gcc Shell_project.c job_control.c -o shell
-
Run the shell:
./shell
- To run a command, simply enter the command name in the prompt.
- Use
Ctrl+Dto exit the shell. - Supports input and output redirection using
>and<. - You can use pipes with
|to chain commands. - Run programs in the background using
&.
If you wish to contribute, please fork the repository, create a branch with your changes, and open a pull request for review.
This project is licensed under the MIT License - see the LICENSE file for details.