No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Why use the Command Line?

The command line was one of the first interfaces through which people could dynamically interact with computers. In the 70's and early 80's, it was essentially the only way to interact with mainframe and proto-desktop computers. Even today, all operating systems support command line interfaces of some sort.

Given how sleek modern operating systems are (i.e. with mice, touch screens, and 3D-accelerated application windows), this begs the question: why do we still need command lines? The answer is that command lines are powerful. For many tasks, they are faster and less error prone than alternative interfaces that rely on windows, mice, clicking, tapping, etc. Further, command lines are ideal for automation. It is trivially easy to automate and systematize repetitive tasks using a command line; tasks that would otherwise be monotonous and time consuming. Lastly, command lines are ideal for accessing and controlling computers remotely. In an age of cloud computing, the need to remotely administer resources is greater than ever. In summary: command lines are not a useless relic from computing history; they are a vital and powerful tool of the present.

Who is this for?

This is for anyone who is interested in learning how to use the Linux command line. This semester long seminar does not require any previous knowledge. All that is required it a desire to learn!


January 7, 2019 -- Lab 1: Getting started, setting up a Linux environment on a Virtual Machine (VM).

January 14, 2019 -- Lab 2: Learning the basic terminal commands such as ls, touch, mkdir, cat, rm, mv, etc.

January 21, 2019 -- NO LAB: Martin Luther King Jr. Day.

January 28, 2019 -- Lab 3: File Permissions, how to read them and change them.

February 4, 2019 -- Lab 4: Scripting, An introduction to scripting with C, Python, and Bash.

February 11, 2019 -- Lab 5: Complex Inputs, Explaining the world of complex inputs and how they can be used on the command line.

February 18, 2019 -- NO LAB: President's Day.

February 25, 2019 -- Lab 6: Process Management, An introduction to managing processes on the command line.

March 4, 2019 -- NO LAB: Spring Break.

March 11, 2019 -- Lab 7: Filtering, An in depth look at the various filtering techniques available on the command line.

March 18, 2019 -- Lab 8: Regular Expressions, A brief introduction to the black magic of regex.

March 25, 2019 -- Lab 9: Input/Output Redirection, how to use it to your advantage and make your life easier.

April 1, 2019 -- Lab 10: Version Control, how to use git to keep manage all your coding projects.

April 8, 2019 -- Lab 11: Networking, how to access remote machines and servers.


A textbook is included in this repository which covers most of the material. This textbook is a work in progress with more material being added monthly.

The full schedule and information can be found at