aboutsummaryrefslogtreecommitdiff
path: root/course/chapters/03-commands.json
diff options
context:
space:
mode:
authorAgando <roduccomm@gmail.com>2026-10-18 15:00:25 +0200
committerAgando <roduccomm@gmail.com>2026-10-18 15:00:25 +0200
commitbc199e350ea4ab000df03c9e732bf3478c9c43b6 (patch)
treedd75d59ec1acfeac2eae40de8f860ffcb34220f5 /course/chapters/03-commands.json
parent3966a870b13ab0896e6cfa7fb3bca2003846b7e5 (diff)
course: fix P0 content errors + completion/mobile/keyboard UX (review A)
Diffstat (limited to 'course/chapters/03-commands.json')
-rw-r--r--course/chapters/03-commands.json28
1 files changed, 16 insertions, 12 deletions
diff --git a/course/chapters/03-commands.json b/course/chapters/03-commands.json
index 10807cb..40fa2ad 100644
--- a/course/chapters/03-commands.json
+++ b/course/chapters/03-commands.json
@@ -7,16 +7,17 @@
{
"id": "3.1",
"title": "Find any command fast",
- "objective": "Use help, commands and check to discover what exists before guessing.",
+ "objective": "Use help, doctor and status to discover what exists before guessing.",
"minutes": 7,
"commands": [
"help",
+ "doctor",
"status"
],
"blocks": [
{
"type": "text",
- "text": "`help` groups all 344 commands by the module that owns them."
+ "text": "`help` groups every registered command by the module that owns them."
},
{
"type": "cmd",
@@ -28,18 +29,20 @@
},
{
"type": "tip",
- "text": "`check` shows module requirements — the fastest way to explain a command that is listed but not working."
+ "text": "`doctor` shows module requirements — the fastest way to explain a command that is listed but not working."
}
],
"exercise": {
- "instruction": "Open the help for `webdav-push`.",
+ "instruction": "Run `doctor` and read its severity ranking.",
"accept": [
- "help webdav-push"
+ "doctor",
+ "help",
+ "status"
],
"check": {
"type": "command"
},
- "hint": "Type: help webdav-push"
+ "hint": "Type: doctor"
},
"quiz": {
"q": "Which command shows usage for one command?",
@@ -74,11 +77,11 @@
},
{
"type": "cmd",
- "text": "ls | grep txt"
+ "text": "grep hello hello.txt"
},
{
"type": "warn",
- "text": "`sed s/x/y/` substitutes the first match per LINE, not per file. `sed -i` is flagged destructive and needs confirmation."
+ "text": "`sed s/x/y/` substitutes the first match per LINE, not per file. `sed -i` overwrites the file immediately — checkpoint first (`checkpoint before-sed`). Pipes are partial in this build: `ls | grep x` may print the unfiltered listing; use `grep pattern file`."
},
{
"type": "text",
@@ -90,15 +93,16 @@
}
],
"exercise": {
- "instruction": "Search the current listing for `txt`.",
+ "instruction": "Search a file for a word (create `hello.txt` with `edit` if needed).",
"accept": [
- "ls | grep txt",
- "grep txt"
+ "grep hello hello.txt",
+ "grep * hello.txt",
+ "grep hello *"
],
"check": {
"type": "command"
},
- "hint": "Type: ls | grep txt"
+ "hint": "Type: grep hello hello.txt"
},
"quiz": {
"q": "`sed s/a/b/` replaces…",