Lx

Operating System

·View all resources →

Linux Learning Roadmap

Linux runs 96% of the world's servers, every Android device, and most of the cloud infrastructure you deploy to. Knowing Linux means you can SSH into any server, navigate its filesystem, manage processes and services, and debug production issues in the environment where code actually runs. Essential for backend, DevOps, and cloud roles.

Total time

6–10 weeks

Stages

5 stages

Job-ready at

Stage 3

Career paths

3 paths

1
2
3
4
5

Before you start — Prerequisites

✓

Access to a Linux terminal

You can use Ubuntu via WSL on Windows, macOS terminal (BSD-compatible), or a free cloud VM (Oracle Cloud, Google Cloud free tier).

1

Stage 1: Shell & Navigation

Move around and manage files

1–2 weeks

Topics to cover

The filesystem hierarchy: /, /home, /etc, /var, /usrpwd, ls, cd — navigate directoriesmkdir, touch, cp, mv, rm — file operationsAbsolute vs relative pathscat, less, head, tail — read filesman — read the manual for any commandTab completion and command historyWildcards: * and ? for filename matchingHidden files and directories (dotfiles)Keyboard shortcuts: Ctrl+C, Ctrl+Z, Ctrl+L

Bold = especially important

Milestone

You navigate any Linux system by terminal — find files, read them, create directories, and move data around without a GUI.

Project to build

Organize a project directory

Create a multi-level directory structure, use cp/mv/rm to organize 20+ files, read config files with cat/less — no GUI allowed.

2

Stage 2: Text Processing & Pipes

The Unix philosophy: small tools, chained together

1–2 weeks

Topics to cover

Piping | to chain commandsRedirection: >, >>, < for filesgrep: search for patterns in textfind: locate files by name, type, datesort, uniq, wc — count and de-duplicateawk — column extractionsed — stream edit (substitute text)cut and tr — character-level transformsxargs: pipe output as arguments2>&1 and /dev/null

Bold = especially important

Milestone

You chain grep, awk, sort, and uniq to answer questions about log files and datasets in one-liners. The pipe symbol feels natural.

Project to build

Analyze server logs

Download a real Apache/nginx access log, use grep+awk+sort+uniq to find: top 10 IP addresses, 404 error count, requests per hour.

3

Stage 3: Users, Permissions & Processes

✓ Min. Job Ready

Who can do what, and what is running

1–2 weeks

Topics to cover

Users and groups: useradd, usermod, groupaddFile permissions: rwx for owner/group/otherchmod (octal and symbolic) and chownsudo and the sudoers fileps, top, htop — view running processeskill and killall: send signals to processesBackground jobs: &, jobs, fg, bgnohup and disown: survive logoutEnvironment variables: export, echo $VAR.bashrc, .bash_profile, .profile

Bold = especially important

Milestone

You create users, set correct permissions on sensitive files, manage running processes, and configure environment variables.

Project to build

Secure multi-user setup

Create two users with different permissions, set correct chmod on sensitive files, create a deployment user that can run an app but nothing else.

4

Stage 4: Networking & SSH

Connect to remote servers and debug network issues

1–2 weeks

Topics to cover

SSH: connect to remote servers with keysSSH key generation: ssh-keygenSSH config file for multiple serversscp and rsync: copy files to/from serversip addr, ip route, ifconfignetstat / ss: open ports and connectionscurl and wget: make HTTP requestsping, traceroute, dig, nslookupufw and iptables: firewall basicsPort forwarding: ssh -L and -R

Bold = especially important

Milestone

You SSH into any server with key authentication, transfer files, debug network connectivity, and configure a basic firewall.

Project to build

Deploy app to a cloud VM

Provision an Oracle Cloud free-tier VM, SSH in with key auth, install dependencies, deploy a web app, open firewall port.

5

Stage 5: Services, Packages & Shell Scripts

Manage a Linux server in production

2–3 weeks

Topics to cover

systemd: systemctl start/stop/enable/statusCreating systemd service unitsjournalctl: query systemd logsapt / yum / dnf: package managementShell scripting: variables, loops, conditionalscron and crontab: scheduled taskstmux or screen: persistent terminal sessionslogrotate: manage log file sizeDisk usage: df, du, lsblkNginx or Apache: serve a web app

Bold = especially important

Milestone

You write shell scripts that automate routine tasks, manage system services with systemd, and set up cron jobs. You maintain a Linux server without rebooting unnecessarily.

Project to build

Automated server setup script

Bash script that installs packages, creates a non-root user, configures SSH hardening, enables ufw, and sets up a systemd service — idempotent.

Frequently asked questions

Which Linux distribution should I learn?

Ubuntu — specifically Ubuntu LTS (Long Term Support). It's the most common Linux distribution on cloud servers, has the most documentation, and is what most tutorials assume. Debian is a close second. Once you know Ubuntu, switching to CentOS/RHEL, Amazon Linux, or Alpine is straightforward.

Can I learn Linux on a Mac?

Yes — macOS uses a BSD-based terminal that's very similar to Linux. Most commands work identically. For full Linux practice, install Ubuntu via VirtualBox (free) or use Windows Subsystem for Linux (WSL2) on Windows. A free cloud VM works too.

Do I need to memorize every Linux command?

No. You need to know what's possible and how to find the right command. man <command> gives the manual for any command. The commands you use daily (ls, cd, grep, find, ssh, systemctl) become automatic quickly. The rest you look up.

Linux vs Windows for a developer — which should I use?

Linux for servers (non-negotiable — 96% of servers run Linux). For your local development machine, macOS or Linux are both excellent. Windows works with WSL2. Most professional developers use macOS or Linux as their daily driver for a reason — better terminal, native Unix tools, fewer compatibility issues.

Is Linux command line the same as Bash?

Almost. Bash (Bourne Again Shell) is the most common command interpreter on Linux. When you type commands in a terminal, you're usually talking to Bash. There are other shells (zsh, fish, sh), but Bash is the standard for scripting and server administration. Learning Bash means learning Linux.

Ready to start learning?

Browse our curated Linux resources — every course, book, and video ranked by quality.

View Linux Resources →