After-hours Command Line Basics

Room Change
Make a note: Command Line Basics will be held in Snell Engineering 168 on February 4!

General Information

Instructors: Martin Petrauskas and Christo Wilson
Classroom: Behrakis 010
Time: Mondays, 6-7pm

Why Command Lines?

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.

Description

In this seminar, we will present all of the basics of the Linux command line. This seminar is designed for beginners who have little-to-no command line experience. We will help everyone setup a Linux Virtual Machine (VM) on their personal computer, and then we will go through all of the basics of how to use the bash command line. This will include topics such as: navigating the file system; what are files anyway?; how to invoke programs and pass arguments; how to find help; file manipulation and permissions; managing, redirecting, and chaining programs; accessing and managing computers remotely with ssh and scp; etc.

Why are we teaching the Linux command line? First, Linux is emblematic of a large group of operating systems that all share similar command lines (along with BSD, Mac OSX, Android, and even Windows 10). Skills learned on Linux can easily transfer to these other environments. Second, Linux is the dominant operating system in cloud and mobile environments. We argue that Linux command line skills are essential in the modern workplace. Third, Linux command line skills are essential for upper-level classes in Khoury College, including 2550, 3650, 3700, etc.

Who is This Seminar For?

Any student at Northeastern who want to learn the Linux command line. This especially applies to students in Khoury College, but the seminar is open to everyone.

Prerequisites

We assume that you have a laptop, and we highly encourage you to bring it to the seminar. To the greatest extent possible, we will be doing hands-on examples and it will help to be able to follow along. Other than this, we assume nothing: you don't need to have Linux already installed, and you don't need any existing command line experience.

Seminar Format

This seminar will use an interactive format. There will slides and presentation, but also many hands-on examples.

Reading Material

In this seminar, we will be using a guide written by Martin. This guide includes instructions for setting up the Linux environment we'll be using, as well as chapters for how to use many features and tools of the Linux command line. This guide is a work in progress, so make sure to download fresh copies periodically.

Schedule

Date Content & Slides
Jan. 7 Getting everything setup; set-up the VM with Ubuntu, installing necessary programs
Jan. 14 Basic Terminal Commands: go over simple commands (ls, touch, mkdir, file, cat, rm, etc.)
Jan. 21 Martin Luther King Jr. Day
Jan. 28 File Permissions: go over how to read/change permissions
Feb. 4 Room Change to Snell Engineering 168 Scripting: basic shell scripting, Makefiles, Python basics
Feb. 11 Complex Inputs: explain and provide examples of complex inputs
Feb. 18 President's Day
Feb. 25 Process Management: go over how to view process, kill them, move them between the foreground and background
Mar. 4 Spring Break
Mar. 11 Filtering techniques: explain all the different filtering commands available with the command line
Mar. 18 Regular Expressions: introduce the black magic of regex
Mar. 25 I/O Redirection: go over input/output data streams and how they can be manipulated
Apr. 1 Version Control: introduce how to use version control software like git
Apr. 8 Networking: accessing remote machines and managing remote files (ssh and scp)