El objetivo del proyecto es hacer un shell que simule los shells del sistema operativo linux.
Las funcionalidades son las siguientes:
- Al ejecutar el programa este debe imprimir un prompt (ejemplo "$ ")
- Ejecutar comandos e imprimir su salida
- Poder ejecutar el comando
cd(y que cambie de directorio) - Redirigir entrada y salida estándar de comandos hacia/desde ficheros con
>,<,>> - Redirigir la salida estándar de un comando hacia la entrada de otro con un pipe
| - Una vez terminado el comando previo, se debe mostrar el prompt nuevamente.
- Solamente habrá un espacio entre cada uno de los tokens de la entrada
- comandos
- parámetros
- operadores de redirección (
>,|, etc.)
- Implementar más de una tubería (1pt adicional)
- Implementar el operador
&y tener procesos en el background (1pt adicional)- jobs => listar todos los procesos que están corriendo en el background
- fg
<pid>=> envía el proceso<pid>hacia el foreground - NOTA: aquí tiene que funcionar algo como
command1 < file1 | command2 > file2 &
- Permitir cualquier cantidad de espacios o no entre los comandos y parámetros (0.5pt adicional)
- 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:- Se repite el último comando.
- El comando empieza con espacio.
- Implementar Re-utilización de comandos.
- 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) - Ejecutar el último comando (
command) que se ha ejecutado escribiendo - NOTA: Por ejemplo history retorna:
1 history 2 ls 3 cd /dev 4 ls 5 rm *.bak 6 cd /etc 7 history- De manera que si hacemos:
!5ejecuta "rm *.bak"!!ejecuta "history"!cdejecuta "cd /etc"
- 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