cli-tutor
Learn Unix command-line tools by typing real commands — not reading about them.
Pick a tool, read the intro, try the examples, then solve exercises in a live shell. Each command you type is actually executed and checked against the expected output.

Install
Homebrew (macOS/Linux)
Cargo
Pre-built binaries — grab the latest from Releases (macOS Intel/ARM, Linux, Windows).
# Homebrew
# Cargo
Requires a terminal at least 80×24.
Modules
| Tool | What it does | Exercises |
|---|---|---|
grep |
Search files for patterns | 12 |
awk |
Field-based text processing and transformation | 10 |
sed |
Stream editor — substitute, delete, insert lines | 10 |
find |
Locate files by name, type, size, permissions | 9 |
xargs |
Build and run commands from standard input | 6 |
cut |
Extract fields and columns from text | 5 |
sort |
Sort lines — alphabetically, numerically, by field | 6 |
uniq |
Remove or count duplicate adjacent lines | 4 |
tr |
Translate or delete individual characters | 4 |
wc |
Count lines, words, and bytes in files | 6 |
tar |
Create, list, and extract archive files | 5 |
chmod |
Change file permissions | 6 |
git |
Version control — init, commit, branch, stash, diff | 10 |
jq |
Query and transform JSON from the command line | 8 |
make |
Automate build steps and tasks with Makefiles | 5 |
106 exercises — beginner to advanced. Progress is saved automatically.
Keys
Browsing (Intro / Examples views)
| Key | Action |
|---|---|
↑ ↓ |
Switch module |
Tab |
Cycle views: Intro → Examples → Exercise → Free Practice |
PgUp PgDn |
Scroll content |
/ |
Fuzzy search modules |
d |
Cycle difficulty filter (All → Beginner → Intermediate → Advanced) |
P |
Progress summary |
q |
Quit |
Exercise view
| Key | Action |
|---|---|
Enter |
Submit command |
↑ ↓ |
Browse command history |
PgUp PgDn |
Scroll output |
← → |
Move cursor |
Ctrl+← Ctrl+→ |
Jump by word |
Ctrl+N Ctrl+P |
Next / previous exercise |
Ctrl+T |
Reveal next hint |
Ctrl+S |
Show / hide solution |
Ctrl+F |
Toggle file viewer |
Ctrl+R |
Reset exercise |
Ctrl+L |
Clear output |
Esc |
Back to browse |
Free Practice view
| Key | Action |
|---|---|
Enter |
Run command |
↑ ↓ |
Browse command history |
PgUp PgDn |
Scroll output |
Ctrl+L |
Clear output |
Esc |
Back to browse |
Anywhere
| Key | Action |
|---|---|
Shift+P |
Toggle progress overlay |
? |
Toggle help |
Ctrl+C |
Quit |
CLI flags
| |
# bash
# zsh
# fish
Config
Optional config at ~/.config/cli-tutor/config.toml (respects $XDG_CONFIG_HOME):
= false # disable all colour styling
= false # show solve time and personal best on correct answers
= false # auto-skip already-solved exercises during navigation
= "grep" # open on this module instead of the first in the list
A missing or corrupt config file is silently ignored — defaults apply.
Stack
Rust + Ratatui + Crossterm. Single binary, no runtime dependencies.