The hands-on course that takes you from whoami to deploying a production server.
The companion repository for the Linux for DevOps course on YouTube by @devopsbymuh.
Watch the videos to learn, then use this repo as your reference: concept notes, command tables, diagrams, cheat sheets, and copy-paste-ready scripts for every lesson.
📺 Full playlist: link coming soon
- Who this is for
- Why Linux?
- What you'll learn
- Course content
- Module maps
- What every command name means
- Getting started
- Practice online — no install
- How to use this repo
- Prerequisites
- Roadmap
- Contributing
- Developers whose code works on their laptop but breaks the moment it lands on a server.
- Aspiring DevOps / SRE / Cloud engineers who need Linux as a foundation.
- Anyone who wants to truly understand the server they are working on.
No prior Linux experience required — we start from the very first ssh and build up.
Because in DevOps, everything you touch is a Linux box:
flowchart LR
VM[Cloud VMs<br/>AWS · Azure · GCP] --> L((Linux))
CT[Every Docker<br/>container] --> L
CI[Every CI/CD<br/>runner] --> L
K8[Every Kubernetes<br/>node] --> L
L --> YOU[You, over SSH<br/>with a terminal]
More than 9 out of 10 cloud servers run Linux. It won because it is free (no license fee per server), scriptable (everything can be automated from the command line), stable (servers run for years without a restart), and the same everywhere (the commands you learn here work on any cloud).
Docker, Kubernetes, CI/CD, AWS — all of them assume you can already drive Linux. That is why this course comes first. Full story in Lesson 01.
- Navigate and manage a Linux system from the command line with confidence
- Handle users, groups, permissions, processes, services, and logs
- Configure networking and troubleshoot connectivity like a sysadmin
- Write real Bash scripts to automate the boring, repetitive work
- Deploy, secure, and monitor a production Linux server end-to-end
5 modules · 18 lessons, beginner → production-ready. Each lesson has its own folder with a README.md (concepts + commands + cheat sheet) and, where useful, runnable scripts/.
1 · Linux Basics · 01-linux-basics
| # | Lesson | |
|---|---|---|
| 01 | Why Every DevOps Engineer Needs Linux | → |
| 02 | Linux File System & Navigation | → |
| 03 | Working with Files | → |
| 04 | Text Processing | → |
2 · Linux Administration · 02-linux-administration
| # | Lesson | |
|---|---|---|
| 05 | Users & Groups | → |
| 06 | Linux Permissions | → |
| 07 | Process Management | → |
| 08 | Services & Logs | → |
| 09 | Package Management | → |
3 · Networking · 03-networking
| # | Lesson | |
|---|---|---|
| 10 | Linux Networking | → |
| 11 | Network Troubleshooting | → |
| 12 | SSH & Remote Servers | → |
4 · Bash Scripting · 04-bash-scripting
| # | Lesson | |
|---|---|---|
| 13 | Bash Basics | → |
| 14 | Advanced Bash | → |
| 15 | Automation Scripts | → |
5 · Linux for DevOps · 05-linux-for-devops
| # | Lesson | |
|---|---|---|
| 16 | Linux in Real DevOps | → |
| 17 | Production Linux Tasks | → |
| 18 | 🏁 Capstone: Deploy a Production Linux Server | → |
The final lesson is a capstone: deploy a secured, monitored, application-serving Linux server from scratch.
Each module comes with a one-page visual — lesson cards plus the key concepts drawn out. Browse them all in diagrams/, or preview Module 1 below:
Maps are editable Excalidraw files — open any
.excalidrawin the browser or the VS Code Excalidraw extension to remix or export your own.
Linux commands look cryptic, but almost all of them are short forms of English words. Read the full words once and the commands become easy to remember — usermod is not magic, it is just "user modify". The whole course dictionary:
📖 Open the full dictionary (50+ names)
| Command / word | Stands for |
|---|---|
pwd |
print working directory |
ls |
list |
cd |
change directory |
mkdir |
make directory |
cp / mv / rm |
copy / move / remove |
cat |
concatenate — joins files; also prints one |
less |
a joke on the older pager more — "less is more" |
grep |
global regular expression print |
wc |
word count |
uniq |
unique |
sed |
stream editor |
awk |
its creators' initials: Aho, Weinberger, Kernighan |
vim |
Vi improved |
uname |
Unix name |
whoami |
literally "who am I" |
sudo |
superuser do |
useradd / usermod |
user add / user modify |
passwd |
password |
id |
identity |
chmod |
change mode (the permission set) |
chown / chgrp |
change owner / group |
rwx |
read · write · execute |
| SUID / SGID | Set User / Group ID |
ps |
process status |
top / htop |
table of processes / Hisham's top |
| PID | process ID |
bg / fg |
background / foreground |
| SIGTERM / SIGKILL | signal terminate / signal kill |
| daemon | a program that runs in the background |
systemd / systemctl |
system daemon / system control |
journalctl |
journal control — systemd's log book |
apt |
Advanced Package Tool |
dpkg / rpm |
Debian package / Red Hat Package Manager |
yum / dnf |
Yellowdog Updater, Modified / Dandified YUM |
| IP / DNS | Internet Protocol / Domain Name System |
ping |
named after the submarine sonar "ping" sound |
curl / wget |
client for URLs / web get |
ss / netstat |
socket statistics / network statistics |
dig / nslookup |
domain information groper / name server lookup |
nc |
netcat — like cat, but over the network |
ssh |
Secure Shell |
scp / sftp |
secure copy / SSH File Transfer Protocol |
bash |
Bourne Again SHell — a pun on the original shell by Steve Bourne |
shebang #! |
"sharp" (#) + "bang" (!) |
cron / crontab |
Greek chronos = time / cron table |
df / du |
disk free / disk usage |
tar |
tape archive — from the days of tape backups |
gzip |
GNU zip |
wsl |
Windows Subsystem for Linux |
/etc /var /usr /tmp /bin |
et cetera (config) · variable data · Unix system resources · temporary · binaries |
Every lesson repeats the names it uses — both in the command comments and in its own small "What the names mean" table.
# 1. Clone the repo
git clone https://github.com/codewithmuh/linux-course.git
cd linux-course
# 2. Open the lesson for the video you're watching
cd 01-linux-basics/01-why-devops-needs-linux
# 3. Read the lesson and run the scripts
cat README.md
bash scripts/server-info.shNo Linux machine yet? Start with a free local install — no cloud account needed:
- Windows → open PowerShell as Administrator, run
wsl --install -d Ubuntu, restart — this one command installs WSL and Ubuntu together - macOS →
brew install --cask multipass, thenmultipass launch --name devopsandmultipass shell devops— a real Ubuntu VM in three commands - Linux desktop → open your terminal, you are ready
Optional, for later: a free-tier cloud VM (AWS EC2, DigitalOcean, etc.) gives you a public server on the internet. Nice to have — but every lesson in this course, including the capstone, also works on the free local VM.
⚠️ The macOS Terminal looks similar, but macOS is not Linux — commands likeaptandsystemctldo not exist there. For this course, work inside Ubuntu: WSL, Multipass, or a cloud VM.
Don't want to touch your own computer yet? Practice Linux in the browser:
| Option | What you get |
|---|---|
| GitHub Codespaces — on this repo, click Code → Codespaces → Create codespace | A real Ubuntu terminal in the browser, with all course files already in it. Free monthly hours on every GitHub account. |
| Killercoda Ubuntu playground | A fresh Ubuntu machine for 1 hour, with root access — services and systemctl work here too. |
| Google Cloud Shell | A free Linux shell with 5 GB of storage (needs only a Google account). |
| OverTheWire: Bandit | A free game you play over SSH — perfect extra practice for Modules 1 and 3. |
Honest limit: browser terminals are great for Modules 1–4 (commands, files, text, Bash). For the services lesson and the capstone you want a real VM — the free local install above is enough.
- Open the module → lesson folder for the video you're watching.
- Follow along with the commands in the lesson
README.md. - Grab the cheat sheet and any
scripts/you want to keep. - Try the practice challenge at the end of each lesson.
- Any computer with a terminal
- A Linux environment (WSL, a VM, or a cloud server — see Getting started)
- No prior Linux, sysadmin, or DevOps experience needed
Linux is the first tool in a larger DevOps journey. Coming next on the channel:
Git & GitHub → Docker → Docker Compose → GitHub Actions → AWS → Kubernetes and beyond.
Spotted a typo or a better example? Issues and PRs are welcome. 🙌
If this course helped you, consider starring ⭐ the repo and subscribing on YouTube — it genuinely helps.
Built with 🐧 by @devopsbymuh
