- 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.4
using the flags-Wall
-Werror
-Wextra
and-pedantic
- All your files should end with a new line
- Code should use the
Betty
style. 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. |