Student Information ------------------- prestonv, Preston Verling jordanha23, Jordan Harrington How to execute the shell ------------------------ 1) After navigating to the posix_spawn/ directory, type "make" then press enter 2) Naviagte to the src/ directory and type "make" then press enter 3) Type "./cush" and press enter to run the shell Important Notes ---------------- All basic and additional functionality tests pass. To access additional functionaility tests, see the /tests/custom directory. In regards to advanced testing, we were unable to implement the ability to process multiple sets of pipes in addition to stderr redirection while piping. This causes us to fail a few of the advanced tests. Description of Base Functionality --------------------------------- Our shell has support for the following: jobs, fg, bg, kill, stop, CTRL-C, CTRL-Z, exit 'jobs' : displays a list of the currently running and stopped jobs 'fg' : brings a job from the background or stopped state to the foreground 'bg' : continues a stopped job in the background 'kill' : kills a job 'stop' : stops a job 'exit' : exits the cush shell CTRL-C : interrupts the job in the forground CTRL-Z : stops the job in the forground NOTE: 'fg' 'bg' 'kill' and 'stop' take JIDs (JOB IDs) as arguments. If no argument is provided, they will alter the most recent addition to the jobs list. Description of Extended Functionality ------------------------------------- 1) I/O Redirection: changes the stdin/stdout source to or from a file. Description: [JOB] > [filename] : Redirects [JOB] output from stdout to the file specified by [FILENAME] overwriting the contents of that file if the file exists. [JOB] < [filename] : Redirects the input to [JOB] from stdin to the file specified by [FILENAME]. [JOB] >> [filename] : Redirects [JOB] output from stdout to the file specified by [FILENAME] and appends to the file. 2) Exclusive Access: provided programs that require exclusive access to the terminal (vim and nano) with said exclusive access. 3) Pipes: directs the stdout of a process to the stdin of another, effectively allowing different processes to communicate. As mentioned above, we are unable to handle multiple sets of pipes and redirecting stderr while piping. List of Additional Builtins Implemented --------------------------------------- Written by Us: 1) Additional Builtin: CD Description: <cd> <[PATH]> : changes the cwd to the directory specified by [PATH]. [PATH] defaults to the user's home direcotry if not specified. 2) Additional Builtin: Command-line history Description: <history> <#> : Outputs the last # commands from the command history. Outputs the entire history if no # is specified. <!!> : Displays and executes the previous command from the command history. <!#> : Displays and executes the command specified by # which is its number from the command history. <![STRING]> : Displays and executes the most recent command where the user inputted [STRING] is a substring of that command. Additionally, our implementation provides functionality for up/down arrow key navigation for previous commands. 3) Additional Builtin: Custom prompt Description: Displays the name of the current host, user, cwd, and the command count of the cush session.