Linux Command-Line and Shell Scripting

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
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
Peter Gruessing
Author at Sensation Interactive
"I am about 60% through the course and its been a real treat! Even though I have been in IT for years Gustavo's teaching style and patient explanations of key topics are a real breath of fresh air.

I have taken courses on Udemy, Skillshare, Codeacademy, and others and not many come close to the level Gustavo is currently teaching at. Bravo!

Take this course you wont be sorry you did!"
05 Feb 2022
Charmaine Carby
"Excellent course! The lecturer is very good at imparting the knowledge of Linux - Just a great and awesome way of giving exercises and be able to understand the core principles"
24 Jan 2022
John Reder
"Great Refresher and I actually learned some new things! My last formal UNIX class was in the middle 90's when I worked for NCR (at the time an At&t company)! One of my instructors was a developer of S5R4-MPRAS which was a big deal back them. For the past 25 years I've been mostly a Windows and web developer but I play around a bunch with Raspberry Pi projects and have been tinkering with many Linux based projects and even poking through code for some Vectrex development projects on the PiTrex a Pi Power Vectrex card that hijacks the old GCE Vectrex hardware for all kinds of new vector tricks not possible with the 6809 processor. This course cleared up a ton of what I was fumbling through on the gcc side. Thanks!"
22 Dec 2021

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++.