Learn Linux by fixing real terminal problems, one mission at a time.
LinuxMissions is a fully local, game-based Linux training platform with a rich terminal interface. Each level drops you into a sandbox with something broken, incomplete, or messy. Your job is to inspect it, fix it, and validate your solution using real shell commands.
500 progressive challenges across 26 modules — from basic navigation to Linux war games.
No cloud bill. No VM farm. No disposable lab account.
Design and implementation by: Jalil Abdollahi
Email: jalil.abdollahi@gmail.com
- 500 levels across 26 modules covering core and advanced Linux topics
- Campaign progression that starts from module 1 and auto-resumes where you left off
- Rich terminal UI with mission briefings, progress panels, and level-complete interstitials
- Progressive hints with up to 3 hints per level
- Post-level debriefs that explain the concept you just practiced
- XP and progression tracking saved locally in
progress.json - In-game Tab autocomplete for commands and sandbox file names
- Sandboxed missions under
/tmp/linuxmissions/...so practice stays isolated - Resettable levels when you want a clean try
- Module certificates when you finish a full module
- 500-level curriculum breakdown:
158beginner174intermediate160advanced8expert
git clone <your-repo-url> linuxmissions
cd linuxmissions
./install.sh
./play.shTo reset progress and start over from level 1:
./play.sh --reset| Tool | Install |
|---|---|
Python 3.9+ |
Ubuntu/Debian: sudo apt install python3 python3-venv |
| bash | Preinstalled on most Linux/macOS systems |
install.sh will:
- create a local virtual environment
- install Python dependencies from
requirements.txt - generate
levels.json - initialize
progress.jsonif needed
- Run
./play.sh - Read the mission briefing and objective
- Inspect the sandbox shown on screen
- Use normal shell commands to solve the task
- Let the game auto-validate after each command
- Read the debrief, press Enter, and continue to the next level
Every mission runs in a sandbox like:
/tmp/linuxmissions/module-1-filesystem/level-2-create-dirsThat means you can safely experiment without touching the project repo itself.
These are available directly inside the game:
| Command | Description |
|---|---|
hint |
Reveal the next hint for the current level |
help |
Show the full command list |
status |
Show progress and XP |
objective |
Re-display the current objective |
reset |
Rebuild the current level sandbox |
skip |
Skip the current level with no XP |
quit / exit |
Save progress and leave the game |
Tab |
Autocomplete commands and sandbox file names |
<any shell cmd> |
Run a real command inside the current sandbox |
Examples:
ls -la
cat README
grep ERROR app.log > alerts.txt
find . -name '*.tmp' -delete
tar -xzf backup.tar.gzLinuxMissions now includes 26 modules:
| # | Module | Levels | Focus |
|---|---|---|---|
| 1 | Filesystem | 10 | navigation, directories, copy/move, archives, links |
| 2 | Text Processing | 8 | head, tail, grep, wc, sort, sed |
| 3 | Permissions | 8 | chmod, chown, file modes, access control basics |
| 4 | Processes | 6 | ps, kill, jobs, nice, signals, zombies |
| 5 | Scripting | 8 | variables, conditionals, loops, functions, heredocs |
| 6 | Networking | 8 | ip, ping, DNS, ports, curl |
| 7 | Sysadmin | 8 | services, logs, users, disk usage, environment |
| 8 | Advanced Text | 6 | deeper awk, sed, joins, pipelines |
| 9 | Shell Environment | 24 | shell behavior, redirection, globbing, environment |
| 10 | Archives & Compression | 24 | tarballs, extraction, backups, compression workflows |
| 11 | Find & Pipelines | 24 | find, grep, cut, awk, pipeline composition |
| 12 | Users & Groups | 24 | identity, ownership, account layout, access review |
| 13 | Services & Logs | 24 | service inspection, journal reading, log triage |
| 14 | Storage & Backups | 24 | mounts, backups, restore drills, data layout |
| 15 | Scheduling & Jobs | 24 | cron, timers, background jobs, recurring automation |
| 16 | Security Auditing | 24 | permission hardening, secrets hygiene, audit tasks |
| 17 | Monitoring & Performance | 24 | process inspection, resource hotspots, system health |
| 18 | Configuration Editing | 24 | config cleanup, text edits, review and rewrite flows |
| 19 | Network Troubleshooting | 24 | routing, DNS, HTTP checks, connectivity analysis |
| 20 | Package & Release Ops | 24 | package inspection, versions, release handling |
| 21 | Shell Automation | 24 | reusable shell scripts, loops, traps, safety flags |
| 22 | Data Processing | 24 | reports, CSV handling, summaries, transformations |
| 23 | Boot & Recovery | 24 | recovery notes, boot failures, restore workflows |
| 24 | System Inspection | 24 | kernel, OS, hardware, process and system inventory |
| 25 | Linux Toolbelt | 24 | small but powerful Unix tools for daily ops |
| 26 | Linux War Games | 30 | multi-step incident scenarios and integrated drills |
From the current registry in levels.json:
| Difficulty | Levels |
|---|---|
| Beginner | 158 |
| Intermediate | 174 |
| Advanced | 160 |
| Expert | 8 |
This gives the project a broad slope from first-day Linux commands to longer, multi-step troubleshooting missions.
linuxmissions/
├── README.md
├── SPEC.md
├── play.sh
├── install.sh
├── requirements.txt
├── progress.json
├── levels.json
├── engine/
│ ├── engine.py
│ ├── ui.py
│ ├── player.py
│ ├── reset.py
│ ├── safety.py
│ └── certificate.py
├── scripts/
│ ├── generate_levels.py
│ ├── generate_expanded_curriculum.py
│ └── generated_level_runtime.py
└── modules/
├── module-1-filesystem/
├── module-2-text/
├── ...
└── module-26-linux-wargames/
Each level directory contains:
level-N-name/
├── mission.yaml
├── setup.sh
├── validate.sh
├── hint-1.txt
├── hint-2.txt
├── hint-3.txt
└── debrief.md
Some generated levels also include a level.json file used by the shared setup/validation runtime.
Progress is stored locally in:
progress.jsonThat file tracks:
- player name
- total XP
- completed levels
- current module and current level
- module certificates
- time per level
The game auto-saves as you play.
The project now includes both handcrafted levels and generated curriculum.
Useful scripts:
python3 scripts/generate_expanded_curriculum.py
python3 scripts/generate_levels.pyUse these when:
- regenerating the large module set
- rebuilding
levels.json - iterating on generated mission templates
LinuxMissions is designed to make Linux practice feel active instead of passive. Instead of just reading command references, you solve focused tasks in a safe sandbox, get feedback immediately, and build muscle memory through repetition.
It works well for:
- beginners learning the shell
- developers who want stronger Linux fluency
- DevOps and SRE learners building troubleshooting habits
- interview prep for practical Linux command work
If you want to improve the game:
- add handcrafted levels
- refine generated templates
- improve validators and debriefs
- tighten the UI and mission flow
Start with SPEC.md, then inspect modules/, engine/, and scripts/.
Add your preferred license file here if you plan to publish the project.