explain 逐步展示 CC Safety Net 如何分析一条命令。用它弄清命令为何被阻止或允许,或者某条自定义规则是怎样生效的。
explain 选项
--json 的 schema、ExplainResult 字段和每个 TraceStep 变体见 Explain 跟踪参考。
解释以短横线开头的命令
-- 结束选项解析,其后的所有内容都属于命令。因此 explain -- --help 解释的是字面命令 --help,而不是打印帮助。把命令加引号作为一个参数传入,|、&& 这类 shell 操作符才会保留在命令中。
explain 退出码
无论结果是阻止还是允许,explain 都退出 0,因此请读取 result 字段,而不是看退出码。遇到选项错误(例如未知选项,或 --cwd 指向不存在的路径),以及遇到拒绝分析的命令时,它退出 1。
explain 拒绝分析的命令
命令超出 CC Safety Net 的分析上限,或语法被解析器拒绝(例如echo ${)时,explain 拒绝分析,打印一行错误并退出 1。加上 --json 时,stdout 中只有一个错误对象: