Learn the terminal, then run a server.

For developers who copy commands and avoid vim. 171 short steps, from pwd to running and defending servers in production.

01. Moving around: pwd, ls, cd

Block A, free

Find the failed release and create a directory named inspected inside it.

linuxpath:~$ cd shop/releases
linuxpath:~/shop/releases$ ls
2026-10-28  2026-10-29  2026-10-30
linuxpath:~/shop/releases$ ls -a 2026-10-29
.  ..  .failed  .revision  release.txt
linuxpath:~/shop/releases$ cd 2026-10-29
linuxpath:~/shop/releases/2026-10-29$ mkdir inspected
linuxpath:~/shop/releases/2026-10-29$ 

What Check looks at

  • [ ]inspected is in the failed release
  • [ ]no inspected anywhere else
  • [ ]you own it, not root
  • [ ]the .failed marker is still there

Part 1 in a browser tab. Part 2 on your own server.

Each step is one topic and one session of 10 to 15 minutes. You read, then you do the task in a real shell.

00 - 70

In your browser tab

An emulator boots Alpine Linux from a saved snapshot, with GNU grep, sed, awk, vim and tmux, so the flags behave the way they will on Debian. A setup script prepares each task: files to find, broken permissions, a script that fails. You fix it and press Check.

71 - 170

On a server you control

A small VPS, or a VM on your laptop with UTM, VirtualBox or WSL. The step gives you one command. It runs a check script on your server and prints a signed token, and the site marks the step done when the token comes back.

Practice needs a keyboard. On a phone you can read every step, and the terminal stays off.

Twenty-one blocks, A to U.

The bar is the whole course, one block per segment, sized by its number of steps. Pick a block to see its topics.

  1. A
  2. B
  3. C
  4. D
  5. E
  6. F
  7. G
  8. H
  9. I
  10. J
  11. K
  12. L
  13. M
  14. N
  15. O
  16. P
  17. Q
  18. R
  19. S
  20. T
  21. U
  • Free, 00 - 20
  • In the browser, 00 - 70
  • On your server, 71 - 108
  • Middle level, 109 - 156
  • Defence with Kali, 157 - 170

In the browser

A From zero free What a terminal is, and how to move around in it. 00 - 07
8 steps
  • Terminal, shell, prompt
  • pwd, ls, cd
  • Paths
  • man and --help
  • History, Tab, Ctrl+C, Ctrl+D, Ctrl+L, Ctrl+R
B Files free Create, read, find, link and pack files. 08 - 20
13 steps
  • mkdir, touch, cp, mv, rm
  • cat, less, head, tail
  • Wildcards * and ?
  • find
  • Hidden files
  • Links
  • tar, gzip
  • du, df
C Text and streams Pipes and the small tools that read logs for you. 21 - 32
12 steps
  • stdin, stdout, stderr
  • Redirects
  • Pipes
  • grep
  • sort, uniq, wc, cut, tr
  • sed
  • awk
  • xargs
  • tee
  • diff
D Vim From getting out alive to macros and your own config. 33 - 43
11 steps
  • Survive and quit
  • Modes
  • Motions
  • Editing
  • Search and replace
  • Visual mode
  • Registers
  • Macros
  • Buffers and windows
  • .vimrc
E Permissions and users Who can read, write and run what. 44 - 50
7 steps
  • chmod, chown
  • sudo, su
  • /etc/passwd, groups
  • umask
  • SUID
  • Why "Permission denied"
F Processes and environment What runs, how to stop it, where settings live. 51 - 59
9 steps
  • ps, top, kill, signals
  • fg, bg, jobs, nohup
  • Variables, PATH
  • .bashrc and .profile
G Bash scripts From a shebang to a CLI tool of your own. 60 - 70
11 steps
  • Shebang, variables
  • if, case
  • Loops
  • Functions
  • Arguments
  • Exit codes
  • set -euo pipefail
  • cron
  • Your own CLI tool

Defence with Kali Linux

T Kali for defenders: audit Check your own server the way an attacker would see it. 157 - 163
7 steps
  • Kali in a VM, and the rule: scan only what you own
  • nmap on your own server
  • Lynis
  • Greenbone
  • nikto and testssl.sh on your site
  • gitleaks on your repos
  • Case: an audit report and a fix list
U Detect and respond Notice an intrusion and recover from it. 164 - 170
7 steps
  • File integrity with AIDE
  • Suricata
  • rkhunter and chkrootkit
  • Read an attack in the logs
  • Incident response
  • A timeline of files and logins
  • Final project: defend your server through an incident

On your own server

H Your own server Get a VPS and reach it safely. 71 - 77
7 steps
  • Getting a VPS
  • ssh keys
  • ssh config
  • scp, rsync
  • tmux
I Packages and services Install software and keep it running. 78 - 84
7 steps
  • apt
  • systemctl, journalctl
  • Your own unit
  • Timers in place of cron
  • What fails at boot
J Network Ports, DNS and the firewall. 85 - 92
8 steps
  • ip, ss
  • curl
  • DNS
  • Ports, /etc/hosts
  • ufw
  • lsof
  • Why it will not connect
K Disks, logs, backups Where the space goes and how to get it back. 93 - 98
6 steps
  • lsblk, mount, fstab
  • Logs in /var/log
  • logrotate
  • Backups on cron
  • Out of disk space
L DevOps tail Your own app, live on your own server. 99 - 108
10 steps
  • nginx
  • A domain and TLS with certbot
  • Docker
  • docker compose
  • Deploy your own app
  • Env and secrets
  • Simple monitoring and an alert

Middle level, on your own server

M Diagnostics and performance Find why a server is slow. 109 - 115
7 steps
  • Load average and vmstat
  • Memory, swap and the OOM killer
  • Disk I/O: iostat, iotop
  • strace
  • /proc, limits, cgroups
  • perf top
  • Case: the server is slow
N Network in depth Routes, packets, firewall rules, TLS. 116 - 122
7 steps
  • ip route and gateways
  • tcpdump
  • nftables
  • Debug TLS with openssl s_client
  • Load balancing with nginx upstreams
  • sysctl and conntrack
  • Case: a 502 every now and then
O Storage Disks that grow without downtime. 123 - 127
5 steps
  • LVM
  • Grow a disk on a live server
  • RAID with mdadm
  • ext4, xfs and inodes
  • Case: the volume filled up at night
P Security Lock the server down and see who tried to get in. 128 - 134
7 steps
  • Harden sshd
  • fail2ban
  • sudoers and least privilege
  • unattended-upgrades
  • AppArmor
  • auditd
  • Case: audit a server you did not set up
Q Automation: Ansible Many servers, one command. 135 - 141
7 steps
  • Inventory and ad-hoc commands
  • A playbook
  • Templates, variables, handlers
  • Roles and idempotency
  • ansible-vault
  • --check and --diff
  • Case: a server from zero in one command
R Observability Know about a problem before users do. 142 - 147
6 steps
  • node_exporter and Prometheus
  • Grafana
  • Alertmanager
  • Logs in one place with Loki
  • Runbooks and postmortems
  • Case: find the incident on the graphs
S Delivery and Kubernetes Ship without downtime, run on k3s. 148 - 156
9 steps
  • Multi-stage images
  • Deploy from GitHub Actions over ssh
  • Blue/green deploy
  • Roll back in one command
  • k3s: pods and deployments
  • Services and ingress
  • ConfigMaps, Secrets, probes
  • Debug a crashing pod
  • Final project: an on-call week

A script checks every task.

Each task ends with a check script. It reads the state of the machine: the file, its owner, the mode bits, the exit code of your script. Reset puts the machine back to the start of the task.

In some vim lessons the editor also logs your keystrokes, so the check sees that you used dd or ciw and did not retype the line.

check, step 01
. /usr/local/lib/lp-check.sh
d=/home/learner/shop
r="$d/releases/2026-10-29"
lp_check "inspected is in the failed release" test -d "$r/inspected"
lp_check "no inspected anywhere else" bash -c "test \"\$(find '$d' -name inspected | wc -l)\" -eq 1"
lp_check "you own it, not root" bash -c "test \"\$(stat -c %U '$r/inspected')\" = learner"
lp_check "the .failed marker is still there" test -f "$r/.failed"

Every step has the same ten parts.

Here is step 01, pwd, ls and cd, part by part.

  1. 1

    A familiar moment

    You type cd var/log and get No such file or directory. The path is right; you are in a different directory than you think.

  2. 2

    In plain words

    The shell always stands in one directory of the tree, the working directory.

  3. 3

    How it works

    A diagram of the tree from / down to shop, with pwd, ls and cd drawn on it.

  4. 4

    The command and its flags

    ls -a, ls -l, ls -lt, cd .., cd -, and when you reach for each.

  5. 5

    Worked example

    A full session in ~/shop, with the output the terminal prints.

  6. 6

    Common mistakes

    -bash: cd..: command not found. cd and .. need a space between them.

  7. 7

    Practice

    Find the failed release and create a directory named inspected inside it.

  8. 8

    Real case

    You log in to a Debian server to read why nginx returns errors.

  9. 9

    Prove it

    Say aloud, without notes, why ls did not show .failed. Then do the task again with no hints.

  10. 10

    Cheat sheet

    cd - back to the previous directory, and eight more lines.

Hints open one at a time, on a ladder from 0 to 5. Practice comes in three tiers: build from an empty prompt, fix something broken, extend a working script.

Questions before you join.

Do I need to install anything?

Not for part 1. Steps 0-70 run in a desktop browser. Part 2 needs a server: a small VPS, or a VM on your own machine with UTM, VirtualBox or WSL. Step 71 walks you through both options.

What level will I reach?

Steps 0-108 make you a solid junior: you run your own server and deploy to it. Steps 109-156 take you to middle: you find why a server is slow, harden it, manage machines with Ansible, set up monitoring and alerts, and run apps on k3s. Steps 157-170 teach defence with Kali Linux: you audit your own server, catch an intrusion and respond to it. There are no attacks on other systems in the course. Parts 3 and 4 need a VPS with 4 GB of memory and a second machine for Ansible, plus a Kali VM for part 4.

What is free?

Steps 0-20, blocks A and B: from your first command to files, find, links, tar and disk usage. The rest opens with a paid plan.

How will it be priced?

An annual subscription or a one-time lifetime plan. Prices will be announced at launch.

How do you check a server I own?

The step gives you one command to run on your server. It fetches a check script, runs it, and prints a signed token tied to your account and the step. The site accepts the token and marks the step done.

Can I do it on a phone?

You can read every step on a phone. The terminal needs a keyboard, so practice is off there.

I already know some commands. Is it too basic for me?

Block A starts from zero, and blocks A and B are free. Try them and decide before you pay.

What language is it in?

English and Russian. Both versions have the same steps and the same sections.

When does it launch?

It is in progress, with no date yet. Join the waitlist and we will email you when it opens.

Hear first when LinuxPath opens.

Leave your email and we will send one message at launch. Steps 0-20 will be free.

Sign up at launch