- Allowed editors:
vi,vim,emacs - All files will be compiled on Ubuntu 14.04 LTS
- C programs and functions will be compiled with
gcc 4.8.4using the flags-Wall-Werror-Wextraand-pedantic - All your files should end with a new line
- Code should use the
Bettystyle. It will be checked using betty-style.pl and betty-doc.pl - No more than 5 functions per file
- Header files should be include guarded
- Unless specified otherwise, your program must have the exact same output as
sh(/bin/sh) as well as the exact same error output. - The only difference is when you print an error, the name of the program must be equivalent to your
argv[0]
| Task Number | Description |
|---|---|
| 0 | Write a README, man page, and have an authors file in your repository |
| 1 | Write a beautiful code that passes the betty checks |
| 2 | Write a UNIX command line interpreter. |
| 3 | Handle command lines with arguments |
| 4 | Handle the PATH |
| 5 | Implement the exit built-in, that exits the shell |
| 6 | Implement the env build-in, that prints the current environment |
| 7 | Write a blog post about what happens when you type ls -l in the shell |
| Task Number | Description |
|---|---|
| 8 | Write your own getline function |
| 9 | You are not allowed to use strtok |
| 10 | Handle arguents for the built-in exit |
| 11 | Handle Ctrl+C: your shell should not quit when user inputs ^C |
| 12 | Implement the setenv and unsetenv builtin commands |
| 13 | Implement the builtin command cd |
| 14 | Handle the commands separator ; |
| 15 | Handle the && and |
| 16 | Handle aliases |
| 17 | Handle variables replacement, Handle |
| 18 | Handle comments (#) |
| 19 | Implement the help built-in |
| 20 | Implement the history build-in, without any argument |
| 21 | Shell can take a file as a command line argument. |