04 · Mental model
理解 CLI 的通用机制
这些概念同样适用于 Git、Docker、kubectl 和绝大多数工程命令行工具。
命令、参数与选项
| 片段 | 角色 | 例子 |
|---|---|---|
| blog | 主命令/可执行文件 | 类似 git、docker、kubectl |
| post update | 子命令路径 | 先选资源,再选动作 |
| 42 article.md | 位置参数 | 顺序和必填性由帮助定义 |
| --note "说明" | 带值选项 | 名称明确,顺序通常可调整 |
| --dry-run | 布尔选项 | 改变执行模式,不是另一个资源 |
stdout、stderr 与退出码
正常结果进入 stdout,诊断和错误进入 stderr;成功通常退出 0,参数、配置、认证、冲突或网络错误使用非零码。脚本不应该靠中文句子猜成功,而应检查退出码,并在需要时解析 --json。
环境变量与配置文件
配置文件是持久状态,环境变量是进程继承的临时覆盖。config set 采用临时文件加原子 rename,尽可能设置为仅当前用户读写。config list --show-origin 显示最终值来自哪里,避免“文件明明改了却没生效”的黑盒感。
本地快照、revision 与状态机
pull 生成本地快照;diff 比较;update 通过 revision 做条件写入。如果远端 revision 已变化,服务端返回 409,后写者必须重新拉取和合并。文章状态通过 publish、unpublish、trash、restore 转换,不能用任意字段更新绕过状态机。