After-hours Command Line Basics
|Instructors:||Martin Petrauskas and Christo Wilson|
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.
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.
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.
This seminar will use an interactive format. There will slides and presentation, but also many hands-on examples.
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.
- Learning the Linux Command Line Updated 12/11/19
We'll be using example code in this seminar that is available from the following Github repository: After Hours Command Line Basics.
|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.)|
||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. 25||Process Management: go over how to view process, kill them, move them between the foreground and background|
|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)|