Skip to content

Machine Programming II Project for the 2018-2019 course of the Computer Science degree at the University of Havana, Cuba.

Notifications You must be signed in to change notification settings

codestrange/shellout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orientacion del Proyecto

El objetivo del proyecto es hacer un shell que simule los shells del sistema operativo linux.

Las funcionalidades son las siguientes:

  1. Al ejecutar el programa este debe imprimir un prompt (ejemplo "$ ")
  2. Ejecutar comandos e imprimir su salida
  3. Poder ejecutar el comando cd (y que cambie de directorio)
  4. Redirigir entrada y salida estándar de comandos hacia/desde ficheros con >, <, >>
  5. Redirigir la salida estándar de un comando hacia la entrada de otro con un pipe |
  6. Una vez terminado el comando previo, se debe mostrar el prompt nuevamente.
  7. Solamente habrá un espacio entre cada uno de los tokens de la entrada
    • comandos
    • parámetros
    • operadores de redirección (>, |, etc.)

Hasta aquí tienen 3 puntos en el proyecto

  1. Implementar más de una tubería (1pt adicional)
  2. 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 &
  3. Permitir cualquier cantidad de espacios o no entre los comandos y parámetros (0.5pt adicional)
  4. 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.
  5. 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 ![command] (0.5pt adicional)
    • 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:
      • !5 ejecuta "rm *.bak"
      • !! ejecuta "history"
      • !cd ejecuta "cd /etc"

Sobre la Entrega

Fecha de entrega: Jueves 8 de noviembre

About

Machine Programming II Project for the 2018-2019 course of the Computer Science degree at the University of Havana, Cuba.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published