BashQuest 🐧
An interactive terminal game that teaches Linux and Bash from the ground up. Each challenge explains how a command works and why you’d use it — not just the syntax.
What Is BashQuest?
BashQuest is a single Bash script that turns your terminal into a Linux training ground. You create an account, log in, and work through 28 progressive levels — from basic navigation all the way to systemd services and shell scripting best practices.
Every challenge:
- Describes what you need to do in plain English
- Explains why the command exists and when you’d reach for it
- Accepts your answer, validates it, and gives immediate feedback
- Has a hint available if you’re stuck
Quick Start
# Download
curl -o bashquest.sh https://raw.githubusercontent.com/hardlygospel/bashquest/main/bashquest.sh
# Make executable
chmod +x bashquest.sh
# Run
bash bashquest.sh
No dependencies. No installation. Pure Bash.
Features
| Feature | Detail |
|---|---|
| 28 levels | Beginner → expert, each with 5–8 challenges |
| Pseudo login | Register/login with hashed passwords, saved per user |
| Lives & XP | 3 lives, earn XP per correct answer, save progress |
| Leaderboard | Ranked across all players on the machine |
| Hints | Type hint for a clue on any challenge |
| Skip | Type skip to pass a challenge (costs 1 life) |
| Level select | Replay any unlocked level |
| Command reference | In-game cheat sheet covering all 28 level topics |
| Colorful TUI | ANSI colour, ASCII banners, status bar |
| Cross-platform | Linux and macOS (bash 3.2+) |
Level Overview
| # | Level | Commands |
|---|---|---|
| 1 | Navigation & Basics | ls cd pwd mkdir rmdir |
| 2 | File Operations | cat touch cp mv rm tar |
| 3 | Text & Search | grep find wc sort uniq |
| 4 | Permissions | chmod chown whoami id |
| 5 | Processes | ps kill jobs bg fg |
| 6 | Text Processing | awk sed cut tr head tail |
| 7 | Networking | curl wget ping ssh ss |
| 8 | Shell Scripting | variables, loops, if/else, functions |
| 9 | Advanced Piping | \| chains, tee, sort\|uniq -c |
| 10 | I/O Redirection | > >> < 2> 2>&1 /dev/null |
| 11 | Regular Expressions | ^ $ . * + ? [] \| |
| 12 | Advanced grep | -n -l -c -A/B/C -o --include |
| 13 | Advanced sed | s///g -i address ranges, /d |
| 14 | Advanced awk | NR NF BEGIN END printf |
| 15 | xargs & find | -exec xargs -I{} -size -mtime |
| 16 | Disk & Storage | df du lsblk findmnt |
| 17 | System Info | uname lscpu free uptime lsof |
| 18 | User Management | useradd usermod -aG passwd su |
| 19 | SSH & Keys | ssh-keygen ssh-copy-id -i -L |
| 20 | Environment | PATH export alias source PS1 |
| 21 | Cron & Scheduling | crontab syntax, at |
| 22 | Logs & Monitoring | tail -f journalctl logger |
| 23 | Package Management | apt dnf brew |
| 24 | Compression | gzip bzip2 xz zip zcat |
| 25 | String Processing | ${#v} ${v:0:n} ${v//f/r} printf |
| 26 | Arrays | indexed arrays, loops, associative |
| 27 | Functions & Errors | set -euo pipefail trap $? |
| 28 | Systemd | systemctl journalctl -fu unit files |
License
GPL-3.0 — Copyright © 2026 Tony Hosaroygard