Learn about parsing shell commands, executing programs and more
You're welcome to study the full challenge structure and stage instructions for free. A membership is needed for submitting code and viewing solutions.
Want to try a free challenge? Try Build your own Kafka — it's free during beta.
A shell is a command-line interface that executes commands and manages processes. In this challenge, you'll build your own
POSIX compliant shell that's capable of interpreting
shell commands, running external programs and builtin commands like cd, pwd, echo and more.
Along the way, you'll learn about shell command parsing, REPLs, builtin commands, and more.
A shell is a command-line interface that executes commands and manages processes. In this challenge, you'll build your own
POSIX compliant shell that's capable of interpreting
shell commands, running external programs and builtin commands like cd, pwd, echo and more.
Along the way, you'll learn about shell command parsing, REPLs, builtin commands, and more.
In this challenge extension, you'll add directory navigation support by implementing the cd and pwd commands.
Along the way, you'll learn about what the "current working directory" is, how to change it and more.
In this challenge extension, you'll add quoting support to your shell.
Quoting allows you to preserve whitespace and special characters in your shell commands.
In this challenge extension, you'll add redirection support to your shell.
Redirection allows you to redirect the output of a command to a file or another command.
In this challenge extension, you'll add programmable completion support to your shell.
Programmable completion allows you to autocomplete commands and executable files.
In this challenge extension, you'll add support for pipelines to your shell.
Pipelines allow you to connect multiple commands together, so the output of one command becomes the input of the next command.
In this challenge extension, you'll add support for viewing and recalling previously entered commands using the history builtin.
History allows you to view and recall previously entered commands. Also, use it to re-run previous commands using the UP and DOWN arrow keys.
In this challenge extension, you'll add support for persisting history to a file.
History persistence allows you to save and load previously entered commands to and from a file.
Ananthalakshmi Sankar
Automation Engineer at Apple
“
I think the instant feedback right there in the git push is really cool.
Didn't even know that was possible!
Patrick Burris
Senior Software Developer, CenturyLink