Skip to content

devopshobbies/linuxmissions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LinuxMissions

platform shell python

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


Features

  • 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:
    • 158 beginner
    • 174 intermediate
    • 160 advanced
    • 8 expert

Quick Start

git clone <your-repo-url> linuxmissions
cd linuxmissions
./install.sh
./play.sh

To reset progress and start over from level 1:

./play.sh --reset

Prerequisites

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.json if needed

How To Play

  1. Run ./play.sh
  2. Read the mission briefing and objective
  3. Inspect the sandbox shown on screen
  4. Use normal shell commands to solve the task
  5. Let the game auto-validate after each command
  6. 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-dirs

That means you can safely experiment without touching the project repo itself.


Gameplay Commands

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.gz

Learning Path

LinuxMissions 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

Difficulty Breakdown

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.


Project Structure

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 And Saves

Progress is stored locally in:

progress.json

That 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.


Content Generation

The project now includes both handcrafted levels and generated curriculum.

Useful scripts:

python3 scripts/generate_expanded_curriculum.py
python3 scripts/generate_levels.py

Use these when:

  • regenerating the large module set
  • rebuilding levels.json
  • iterating on generated mission templates

Why This Project Exists

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

Contributing

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/.


License

Add your preferred license file here if you plan to publish the project.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors