CSE 5306 Operating Systems Spring 1996 LAB 1 A "Menu" shell for Linux Due: March 1, 1996 Description: You will develop a small shell (command interpreter) for Unix (LINUX). You may write this in C, C++ or Assembler. A common complaint of the most-used UNIX shells (Bourne, Korn, C) is that it is difficult to remember (long) file names, and type long command names. A "menu" type shell allows a user to "pick" an item (file or command) from a "menu". You will display a simple menu, as follows: Current Dir: /home/5306/Imagoodstudent Files: 0. ".." 1. a.out 10 Feb 96 108K -rwxr--r-- 2. a.txt 12 Feb 96 8K -rw-rw-rw- 3. my_dir 8 Feb 96 drwxrwx--- 4. program1 10 Feb 96 6K -rw------- Operation: V View E Edit R Run C Change Dir P Previous Files N Next Files X Exit The commands you will implement: ( You may call any UNIX/LINUX utility to support your shell. For example, you may use "more" (or "less") for a "viewer" ) View - displays a file but does not allow changes. Edit - uses your fovorite editor Run - runs an executable program. You should handle parameters. Prev and Next give the next "N" (or prev.) files if not all names fit on one screen. You must demonstrate this lab, working (or partially) to the Linux Lab GTA by the due date, and at that time give him a printed copy of your program. Your program should be well commented and documented, make sure the first few lines of your program contain your name, this course number, and the lab number. Your comments should reflect your design and issues in your implementation. Your design and implementation should address error conditions: what if an illegal command is entered or misspelled, what if a path can not be reached, or an "executable file" is not executable. Bonus: Add "sort options" (by date, size, extension, etc.) Add a pull-down menu using terminal codes or curses. Others?