Learning Path

Content is broken down into modules. Each module consists of a set of lessons. The module covers a single topic and you don't have to take the modules in any specific order.

Developer Modules

Introduction

In this module, you will learn what a terminal is and how to interact with it. Shortcuts such as tab completion, and keyboard shortcuts to move the cursor around and manipulate input and commands history. You will also try out some basic everyday commands and arguments.

Common commands

Some of the most common stuff you will do daily. Creating files and moving those around, checking the size, searching for files based on name or content, and much more.

Bash tricks

Here we take a look at the true power of Unix command line and that is combining multiple simple programs to get some result. You will learn how to pipe the output of a single command to another command or redirect it to a file. We'll also use variables, aliases, check for command results, and other interesting stuff.

Text editing

Unix comes with incredibly powerful command line based text editors such as emacs, nano, and vi. You will learn how to do basic text editing in those and some neat tips & tricks.

Users and permissions

Unix is a multi-user operating system. Every file and folder on Unix has an owner. You learn how to check for users, create and delete users and groups, and manage file permissions.

Software packages

Software installations on Unix are done using package managers. Here you will learn how to list and install new packages, upgrade those already installed, and delete the ones you no longer need.

Shell scripting

You can package any task you perform in the command line interface into a reusable script. Learn script building blocks like variables, conditionals, loops, inputs, outputs, command substitution, brace expansion, functions, and arrays.

SSH

SSH is a secure way to access a computer over an unsecured network. It provides strong password authentication and public key authentication. It is used to manage systems and applications remotely. You will learn how to connect to other machines and how to configure your machine for safe SSH connections.

DevOps Modules

Filesystem hierarchy

Unix has a unique filesystem structure which you may find very unusual if you come from Windows. You will learn about Filesystem Hierarchy Standard (FHS) and check out where you can find logs, configuration files, essential binaries, and libraries. You will also learn how to work with temporary files.

Cron

The crond daemon enables you to run programs at regular intervals. Much better than staying up late and running the programs manually. You will learn ins and outs of cron in this module.

Systemd

Systemd is an init system used to get your system up and running. You will learn how to start and stop processes, check logs, mount filesystems, enable programs to start when your system starts up, and other good stuff.

Resource management

Memory, CPU, and disk space are some of the essential resources an operating system manages. Learn resource monitoring with top, iostat, lsof, and other tools. By completing this module you will understand the resource utilization of your system and have the ability to identify resource consumption by processes.

Filesystems

There are multiple filesystem types used for different purposes. You will learn the differences between filesystems and concepts like inodes, mounts, and mount options. You will also create and mount temporary and memory-backed filesystems.

Networking

Learn how to configure networking on your system. You will learn about different kinds of network interfaces, how to configure network interfaces, how to set up custom hosts entries, change DNS resolver settings, and other networking-related operations.

Firewall

Linux comes with a very powerful kernel-based firewall called iptables. You will learn to allow, block or modify certain types of traffic which are essential skills to make your servers safe on the public internet.

System calls

System calls are a mechanism that programs use to interact with the kernel. Whenever a program wants to open and write to a file or perform any other operation with a kernel it makes a system call. You will learn how to track system calls in this module. It is a very useful troubleshooting technique.

Network troubleshooting

When something does not work on the network level you need to take a deep dive under the hood to figure out what is going on. In this module, you will learn how to track network packets, scan for open ports, test connectivity to remote machines using ping and telnet, and many more useful techniques that will be a valuable addition to your troubleshooting skills toolbox.

Namespaces and cgroups

These are the basic building blocks of modern container engines such as Docker. You will learn what namespaces are, and how to create a new or run a program in an existing namespace. You will also learn how to allocate resources such as CPU time, system memory, and network bandwidth to a process or a group of processes using cgroups.

Command Walkthroughs

Some commands are so useful and have so many options that they deserve a section of their own. You will use these for sure in your scripts and daily tasks. Here you will learn many tips and tricks with those commands.

grep

curl

awk

apt

ip

tar

Cheat Sheets and Diagrams

Quick reminders for useful flags and principles that are hard to remember. You can save these to your computer or even print the images and keep it on your desk.

Navigation shortcuts

File permissions

Performance overview

File system hierarchy

Vim keybindings

Cron

Tar — Gzip

Bash helpsheet

Kernel overview

Netcat

IPtables

Configuration files

Signals

Extra Materials

Here are some interesting articles that will help you expand your knowledge and understanding of Linux. These are not strictly related to the command line interface itself but you might find these topics both useful and fascinating while on the path to mastering the command line.

Terminal history

Choosing Linux distribution

Installing Linux

Bash workbook

Text editors

Boot sequence

Systemd

System calls

Bash pitfalls

Check server health