CLI way to learn the top 50 commands any Linux sysadmin needs to run and maintain a server. Lessons are driven by data/commands.json, and progress is stored locally in ~/.cli-learn/progress.json.
cli learn <cmd>: Show key flags, example, demo, and a short quizcli random: Random command lessoncli quiz [n]: Quiz on N commands (default 5)cli list: Print all commands grouped by categorycli search <term>: Find commands by keywordcli progress: Show learned commands and earned badges--safe: Demo only (no execution)--verbose: Show a brief--helpexcerpt when available
python cli.py list
python cli.py search log
python cli.py learn tail
python cli.py learn rsync --safe
python cli.py random
python cli.py quiz 5
python cli.py progress$ python cli.py learn tail
Command: tail
Category: Logs
Key Flags: -f, -n
Example: tail -f /var/log/apache2/access.log
Safe Demo: echo "tail -f /var/log/apache2/access.log"
Safe Demo: echo "Manila time: 2026-03-16 14:36:00"
Why Junior Needs: Follow logs in real time to debug issues.
Run `cli learn tail` for interactive lesson
Quiz: What's a common flag for tail? f
Correct!
data/commands.json should be a list of objects like:
[
{
"name": "tail",
"category": "Logs",
"desc": "Follow logs in real time to debug issues.",
"flags": ["-f", "-n"],
"examples": ["tail -f /var/log/apache2/access.log"]
}
]Optional field:
warning:truemarks commands that should strongly suggest--safe.
Progress is stored at ~/.cli-learn/progress.json. Badges currently awarded:
First Steps(first correct quiz answer)Command Cadet(80%+ score onquiz)Log Ninja(learn any command in categoryLogs)Rsync Rebel(learnrsync)
explainhints/
├── cli.py
├── data/
│ └── commands.json
└── README.md