- This includes not only implementing commands from cat, grep, tee, echo, ls and more.
- But also being able to combine all these commands together in advanced manners such as ls | grep
- Purpose is to learn how CLI tools like bash works by building it.
Secondary goal is to learn how to test software comprehensively (unit tests, integration tests, mutation tests and more!)
A shell is a command interpreter. Its responsibility is to interpret commands that the user types and to run programs that the user specifies in her command lines. Figure 1 shows the relationship between the shell, the kernel, and various applications/utilities in a UNIX-like operating system: