Learn about parsing shell commands, executing programs and more
The core challenge experience is completely free this month. If you'd like to enjoy advanced features such as running turbo tests, dark mode, or unlimited code examples, you'll need a membership.
A shell is the program that interprets what you type into the terminal. It reads your commands, runs programs, and prints their output. Popular examples are Bash and ZSH.
In this challenge, you'll build your own shell from scratch.
Your shell will run a REPL, parse commands, spawn processes, and more.
A shell is the program that interprets what you type into the terminal. It reads your commands, runs programs, and prints their output. Popular examples are Bash and ZSH.
In this challenge, you'll build your own shell from scratch.
Your shell will run a REPL, parse commands, spawn processes, 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