Course description

This course is a comprehensive immersion into the command-line of Linux and other UNIX-like systems. We'll learn the most popular shell tools and introduce concepts of Operating System theory that became popular with the UNIX OS.

linux tutorial

We'll also discuss other important development tools that we can use with Linux, and learn how to write shell scripts that can be used to to automate system tasks.

The tools you'll need

You'll need either a Virtual Machine to install Linux or a physical machine that can be partitioned to run a Linux distribution natively.

linux terminal

We'll use a lightweight Linux distribution called Lubuntu and the Oracle VirtualBox Virtual Machine. All tools are cross-platform, so you can follow along on either Windows or macOS.

Is this course for you?

This course has no prerequisites and it's designed to be as beginner-friendly as possible. We'll start by understanding the history and the evolution of UNIX-like systems, and proceed to cover the most popular tools of the Linux command-line.

We will also try to be as portable as possible. All the commands we'll learn should work with any Linux distribution and any other UNIX-like system (OpenBSD, FreeBSD, and macOS).

This course was designed with programmers in mind. Therefore, we will not be covering advanced Linux tools for networking, infrastructure, or system administration.

About the instructor

gustavo pezzi

Gustavo Pezzi is a university lecturer in London, UK. He has won multiple education awards as a teacher and is also the founder of

Gustavo teaches fundamentals of computer science and mathematics; his academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.

teaching certification
higher education academy
pgclt teaching certification
bpp university award

Course content

7 hours total length 18 Chapters Last updated November 2021
  • Motivations & Learning Outcomes
  • How to Take This Course
  • Do All Computers Need an Operating System?
  • Evolution os UNIX and Linux
  • The Birth of the Linux OS
  • Downloading a Linux Distro
  • What Linux Distro Should I Use?
  • Installing Linux on a Virtual Machine
  • Creating a Bootable Device with Linux
  • Installing Linux
  • Linux Login
  • Quiz: Installing Linux
  • Navigating Files and Directories
  • Hidden Files
  • Viewing the Content of a Text File
  • Editing Text Files
  • File Globbing and Wildcards
  • Wildcard Options
  • Copying and Moving Files
  • Issues with the Space Character
  • Escape Characters
  • Removing Files and Folders
  • Exercise: Navigating Files and Folders
  • The Root Directory
  • Important System Folders
  • Quiz: Important System Folders
  • Working with Different Shells
  • Quiz: Different Shells
  • Find
  • Grep
  • Exercise: Find and Grep
  • Visualizing OS Processes
  • Killing OS Processes
  • Exercise: Processes
  • Redirecting Output
  • Redirecting Input
  • The Pipe Operator
  • Exercise: IO Stream
  • UNIX Common Ground
  • Adding Users
  • File Permissions
  • Executing Files
  • Exercise: File Permissions
  • Environment Variables
  • RC Files
  • Working with a Package Manager
  • Different Package Managers
  • Exercise: Installing Packages
  • Popular Command-Line Text Editors
  • Understanding System Calls
  • Popular Shell Utilities
  • Compressing and Extracting Files
  • List of Popualr Shell Tools
  • Exercise: Shell Tools
  • What is a Shell Script?
  • Writing and Executing Shell Scripts
  • Script Variables
  • Numerical Expressions
  • Special Script Variables
  • Tests and Conditional Statements
  • Comparison Operators
  • Example of String Test
  • For Loops
  • While Loops
  • Secure Shell and Deamons
  • Scheduling Tasks with Cron
  • Awk and Sed
  • Exercise: Shell Scripting
  • Functions in Shell Scripting
  • Popular Development Tools
  • Compiling with GCC
  • Debugging with GDB
  • Building with Makefiles
  • Installing Programs from Source
  • Exercise: Building Nano from Source
  • Popular Scripting Languages
  • Conclusion and Next Steps
  • Moving Forward and Extra Resources

What students are saying

5 star
4 star
3 star
2 star
1 star
Albert Tsanaclis
Albert Tsanaclis
Senior Software Developer
"Really, really interesting and instructive course with plenty of real-world examples, that are applicable to many, many operating systems including MacOS."
06 Nov 2022
José Font
"Excellent instructor. I wish you have Python, C, and advanced Bash for beginners."
19 Oct 2022
"Incredibly good course! It includes so much more than just the basics! You learn which tools are essential for development and you get a very good all-round view. After the course you will see your computer with different eyes. Highly recommended!"
23 Aug 2022
Jaqop James
"Wonderful course! I learn a lot from this course, it's easy and straight to the point. Enjoyable, very rare to find a course like this, and it makes you learn more by yourself."
11 Apr 2022
Emilio Ganibegovic
"In depth and good course! This course is very good for people who are new to Linux and the course is very detailed and you are guaranteed to learn a lot from this course."
20 Feb 2022

Other similar courses

3D Computer Graphics Programming

35 hours
  • Create a 3D software renderer from scratch using the C programming language.

C++ 2D Game Engine Development

30 hours
  • Learn to make a simple 2D game engine using modern C++, SDL, ECS, and Lua.

Game Physics Engine Programming

35 hours
  • Learn how to create a 2D rigid-body game physics engine from scratch with C++.