Lab 8: Osh I

In this lab and the next, you’re going to implement a simple shell named Osh. The shell will be able to

  1. Run simple commands like wc -l some/file; and
  2. Run pipelines containing an arbitrary number of commands.

You will learn

  • one way to parse input;
  • how to model a pipeline; and
  • how to run programs and wait for them to complete.


First, find a partner. You’re allowed to work by yourself, but I highly recommend working with a partner. Click on the assignment link. One partner should create a new team. The team name cannot be the same name used for a previous lab. The second partner should click the link and choose the appropriate team. (Please don’t choose the wrong team, there’s a maximum of two people and if you join the wrong one, you’ll prevent the correct person from joining.) You cannot choose a team name you’ve used previously.

Once you have accepted the assignment and created/joined a team, you can clone the repository and begin working.

Be sure to ask any questions on Ed.

Compiler warnings and errors

Make sure your code compiles and passes clippy without errors or warnings. That is, running

$ cargo clean
$ cargo build
$ cargo clippy

should build your program without errors or warnings.


Your code must be formatted by running cargo fmt.