Homework 5 Assigned 29 Nov Due 13 Dec (the last day of class) Expand the shell you wrote in HW4 with additional features. I insist on the first three. You may choose which of the others to try for extra credit. I don't expect anybody to finish more than a few of them. In any case, tell me clearly in writing which of them you've done and want me to grade. (1) If your program for HW4 doesn't do everything required for HW4, fix it. (2) In the assignment file for HW4, I gave the example --> setenv PROMPT="yes? " yes? printenv PROMPT yes? This requires that the user be able to use quotation marks to override the normal handling of spaces (and perhaps other special characters too). If you didn't do this for HW4, do it now. (3) Allow the user to run programs with input and/or output redirected, using "<" and ">" as in csh. (4) Allow the user to execute multiple commands on one line, using ";" as in csh. (5) Allow the user to pipe one command into another, using "|" as in csh. (Note that if you do both this and (4), you'll need to decide what mixes like "cmd1 ; cmd2 | cmd3 ; cmd4 | cmd5 " should mean.) (6) Allow the user to run programs without waiting for them to finish, using "&" as in csh. (Again, you'll need to decide precedence issues.) (7) Allow the user to specify his/her own home directory easily, using "~" as in csh. (8) Allow the user to specify other users' home directories easily, using "~username" as in csh. (9) Allow the user to expand environment variables in the middle of a command line, using "$variablename" as in csh. (10) Allow the user to repeat the previous command, using "!!" as in csh. (11) Allow the user to repeat a previous command that started with a particular string, using "!string" as in csh. (12) Allow the user to replace part of a previous command with something else, using "^old^new" as in csh. (13) Make your shell capable of running shell scripts nicely (i.e. taking "#" to indicate a comment, not printing prompts during a script, etc.). You can run a shell script either by typing "myshell