CLI 工具帮助要求

概览

命令行帮助(通常通过 --help 提供)是获取 与用户的通信它提供了一种简写形式,用于提供更详细的 文档和功能发现。

指南

帮助文档必须包含: * 用法 * 说明

帮助文档可能会额外包含以下部分(如果需要):

示例

本文档后面部分将详细介绍该示例的各个部分。 (请注意,blast 不是真实工具)。

Usage: blast [-f] [-s <scribble>] <command> [<args>]

Destroy the contents of <file>.

Options:
  -f                force, ignore minor errors. This description
                    is so long that it wraps to the next line.
  -s <scribble>     write <scribble> repeatedly
  -v, --verbose     say more. Defaults to $BLAST_VERBOSE.

Commands:
  blow-up         explosively separate
  grind           make smaller by many small cuts
  help            get help on other commands e.g. `blast help grind`

Examples:
  Scribble 'abc' and then run |grind|.
  $ blast -s 'abc' grind old.txt taxes.cp

Notes:
  Use `blast help <command>` for details on [<args>] for a subcommand.

Error codes:
  2 The blade is too dull.
  3 Out of fuel.

常规布局和样式

如需了解符合这些要求的示例,请参阅上文。

有几个部分需要英语散文。也就是说,以适当的方式 使用美式英语拼写的英语语法的句子(与英式英语不同) 英语或其他)。在句子之间添加一个空格,并遵循“牛津” 英文逗号”样式。例如:“说明、示例和备注部分用英语撰写 散文。”

布局

  • 每个部分由一个空白行分隔。
  • 部分内容缩进两个空格。
  • 单行内容将与标签在同一行上,以 1 用于分隔冒号和命令名称的空格。例如:“Usage: blast <file>”。
  • 多行部分将紧跟在标签之后(没有 空白行)。标签后面的每一行都会缩进两个空格。
  • 除了选项、命令和命令外,所有输出均为单列文本 和错误代码,即两个列表。
  • 使用空格进行缩进或对齐。不输出 Tab 字符。
  • 设置 80 列文本换行。封装选项或命令说明时,请确保对齐 以说明开头的行(例如,大约 20 字符)。

样式

  • 版块标题采用词首字母大写形式:第一个单词和最后一个单词的首字母大写。全部 除了冠词(a、an、the)、 连词(如、and、 But、or)和介词(如 on、in、with)。
  • 简短说明片段(选项或命令中的第二列)从 包含小写字母,不一定是完整的句子。任何文本 简短说明之后,应该是完整的句子,在 fragment。
  • 尽量确保每个部分的内容简洁明了。如有更多信息,请将用户引导至 在运行 --help 时使用 --verbose,或将其定向到完整版 文档。
  • 描述性文本(段落)中允许使用 Unicode (UTF-8) 字符。通过 命令名称和用法文本将仅包含可移植的 ASCII 字符 (不含 Unicode)。

用法

必须提供,其中包含“Usage:”标头。

Usage: blast [-f] [-s <scribble>] <command> [<args>]

用法通常是单行,但多行可用于 阐明各选项何时相互排斥。如果所需的行数 呈现所有相互排斥的情况都变得过多,限制 一些常见情况,并会在完整的文档中提供更多详细信息。如果有很多 可以考虑创建子命令或单独的工具, 降低复杂性。

用法语法

首先列出命令名称。命令名称不是硬编码的,而是 从命令名称(即 argv[0] 上的最后一个元素)动态拉取的 路径。这使得单个二进制文件可以作为多个不同的工具运行。

名称和用法文本将仅包含可移植的 ASCII 字符。全部长视频 form 命令完全小写,即绝不能全部使用大写或大小写混合。单个 字母开关应首选小写形式,但允许使用大写。

对选项和占位符使用有意义的字词。避免使用缩写。首选 单个字词。如果使用了多个字词,请用连字符分隔各个字词 (-),即不要使用下划线、驼峰式大小写,或将字词组合在一起。

除了命令名称之外,还有多种参数(如 Fuchsia 工具要求部分)。

  • 确切文本
  • 参数
  • 选项(开关和按键)
  • 键控选项
  • 选项分隔符
确切文本语法

确切文本按原样在用法行中书写。在示例“Usage: copy <from> to <destination>”中,to 一词需要完全匹配。如果是确切文本 是可选项,在用法行中用方括号 ([]) 括起来:“Usage: copy <from> [to] <destination>”。

参数语法

参数用尖括号 (<>) 括起来,以便与 显式文本。在示例 Usage: copy <from> <destination> 中,<from><destination> 是参数。如果参数是可选的,则其为 用方括号 ([]) 括起来,例如 Usage: copy <from> [<destination>]。请参阅 选项分隔符

相互排斥的选项语法

在说明互斥选项时,有几个选项可供选择。

如果提供了多个用法行,每个用法行都会显示一个互斥集合 命令的组合。例如:

Usage:
  swizzle [-z] <file>
  swizzle --reset

表示 --reset<file> 的使用是互斥的 选项。

指定互斥选项的另一种方法是使用竖线(“|”) 。请注意,当使用竖线指示数据流时 称为“管道”。用于分隔选项时, 读作“Or”

例如:

Usage: froth [-y|-z] <file>

表示可以使用-y -z开关(或者两者均不可使用,因为它们 是可选的,但同时使用这两个功能却毫无意义(它们 专有选项)。如需指明必须使用任一值,但不能同时使用两个值, 用括号括住选项,例如“Usage: froth (-a|-b) <file>”意味着 必须传递 -a -b

请注意,--version--help 导致其他参数 并且很少被列为此类对象。请将它们作为单独的用法行列出 这说明没有必要。

分组(隐式)选项

启用某个选项时,没有具体的语法可指明 影响另一个选项。如果某个选项暗示其他选项已启用,或者 请在“选项”中指定该信息例如:“passing -e implies -f”意味着 如果启用了 -e,则 -f 将启用,就像是在命令中传递的一样 行(无论是否已显式传递 -f)。冗余传递 所有隐含值都无害(不是错误)。

记录主开关的影响。例如:如果-x implies -c and -p 将该备注放在 -x 的说明中,但不放在 -c-p 中。这是为了 使 --help 输出保持简洁(在完整的上下文中,可以放宽此规则 文档)。

可选键

要使用可选键创建键控选项的外观,请创建可选键。 文本格式,后跟一个参数。例如“Usage: copy [from] <from> [to] <destination>”。在此示例中,以下所有内容均有效:“copy a b”“copy from a b”“copy from a to b”“copy a to b”。

重复选项

如果相同的位置参数可以重复,请用省略号表示 (“...”)。不要使用 Unicode 省略号,请使用三个连续句点。对于 示例:“Usage: copy <from> [<from>...] <to>”表示最后一个参数是 始终解释为 <to>,而前面的值是多个 <from> 个条目。请注意,“<from> [<from>...]”表示有一个或多个 <from> 个条目,而“Usage: copy [<from>...] <to>”指零个或更多个 已接受 <from> 个参评申请。

对于可能重复的键值对,请用方括号将其分组(如果 可选)或括号(如果对应的成对不是可选),并在末尾添加省略号 群组,例如[--input <file>]...(--input <file>)...

括号

尖括号 (<>)、大括号 ([]) 和圆括号 (()) 不具有 空格。

[from] # correct
<to> # correct
(-a|-b) # correct

[ from ] # incorrect
< to > # incorrect
( -a|-b ) # incorrect

英文尖括号 (<>) 用于封装参数或键值。

方括号 ([]) 用于封装可选元素。使用嵌套的尖括号,例如 [<file>]<file> 解释为可选参数。嵌套的 “[<”不是单独的括号样式,而是“[”包含“<”。 嵌套时,方括号 ([) 将位于最外层(不要使用 <[file]>)。

圆括号 (()) 用于对元素进行分组。使用括号改进字词 例如,使用所需的互斥选项。

大括号 ({}) 留待将来使用。本指南特意保持开放状态 在未来的修订版中,大括号可能具有特殊含义 文档。

说明

必须提供说明,且不包含标题。例如,说明 区域未标记为“说明”。例如:

Destroy the contents of <file>.

说明采用美式英语散文(使用美式英语的完整句子) 英语语法、拼写和标点符号)。

每种工具都应告诉您它的作用,本部分将介绍如何执行此类操作。

“说明”部分应

  • 工具的用途(必填)
  • 使用的平台配置
  • 架构、数据格式或使用的协议
  • 黄金工作流(关键开发者历程)
  • 文档内容较宽泛的网址(例如,fuchsia.com/docs 或类似网址,应避免 容易过时的链接)

“说明”部分还可包含“另请参阅”指的是其他工具 指定名称(避免使用网址)。

不应在“说明”部分填写的内容

  • 使用的环境变量(选项中已列出的变量除外) (请在“选项”或“备注”中提供此信息)
  • 安全危害(在“备注”部分中说明)
  • 错误代码(将其放在“错误代码”部分)
  • 版权(请勿在--help中包含此信息)
  • author(请勿在 --help 中包含此信息)
  • 如何获取有关子命令的帮助(将以下内容添加到 help 子命令)
  • 如何更新该工具(应该在该工具的相关文档中说明) 包,如果适用)
  • 版本说明(使用单独的文件)

选项

如果程序接受参数,则必须包含“选项”部分。例如:

Options:
  -f              force, ignore minor errors
  -s <scribble>   write <scribble> repeatedly. Defaults to $BLAST_SCRIBBLE.

列出的选项适用于工具本身,而不适用于子命令。选项 系统会在您请求相应子命令的帮助时列出各个子命令,例如 使用 blast help grindblast grind --help 时。

尽量使用单个完整字词的选项。如果需要两个字词, 以连字符 (-) 分隔。避免使用不常见的缩写。

按字母顺序显示选项列表。

选项将分别在各行中列出每个参数、开关和键控选项, 同时具有短格式和长格式的参数除外。如果参数 都有短格式和长格式,它们会在同一行上列出,短格式 开头,并用 ,(逗号)分隔,例如-f, --force

“选项”部分不会列出确切的文本参数。已显示 选择“使用折扣”

将按原样输入的文本不会用括号括起来,而变量条目 以尖括号 (<>) 显示,可选条目显示在方括号中 ([])。列出选项时,键从来都不是可选的。例如:

  -a                   a good example
  [-b]                 a bad example, to use -b it must be typed as-is

每个选项后面都配有简短的说明。没有 而且要简明扼要尝试在整体工具中提供更多详细信息 说明、示例或备注,而不必创建冗长的选项 说明。

说明内容

  • 简要提醒用户此选项的含义,例如ignore minor errors
  • 如果该选项覆盖了其他选项,例如-x implies -c and -p
  • 默认值,例如defaults to $BLAST_SCRIBBLE

说明句子片段的起始列可能会因情况而异 对工具的需求进行改进。如果没问题的话,请使用左边 20 个字符。 然后根据实际情况进行调整

如果有大量选项,请考虑显示有用的子集并 解释如何获取更多帮助来查看所有问题,例如方法是将 --verbose--help

命令

如果程序包含子命令,则必须提供命令部分。如果显示 将标记为“命令:”。例如:

Commands:
  blow-up         explosively separate
  grind           make smaller by many small cuts
  help            get help on other commands e.g. `blast help grind`

如果程序没有子命令,则命令部分不会 存在。

如果工具有子命令,还会提供一个 help 命令,供您进一步 子命令的帮助,即 blast help grind

尽量将子命令控制在单个完整的字词中。如果需要两个字词, 以连字符 (-) 分隔。避免使用不常见的缩写。现在 命令列表(按字母顺序)。

每个命令名称都与简短说明分开显示。对于 命令说明越长,用户就越需要 该命令。此说明是对命令和 来协助发现命令

如果有大量命令,请考虑显示有用的子集并 解释如何获取更多帮助来查看所有问题,例如方法是将 --verbose--help

示例

“示例”部分为可选内容。如果包含,则会被标记为“示例:”。 例如:

Examples:
  Scribble 'abc' and then run |grind|.
  $ blast -s 'abc' grind old.txt taxes.cp

每个示例都将采用美式英语散文(即使用美式英语的完整句子) 英语语法、拼写和标点)来描述示例,后跟 示例命令行。需在命令行中输入的每一行 字面上将带有“$”前缀来模拟命令提示符

如需将过长的示例换行,请用“\”结束上一行和 后续行以“”开头(空格)用于表示接续行。

  This example wraps onto multiple lines.
  $ blast -s 2332 some/long/path/cats.o \
    more/long/path/dogs.o more/long/path/bears.o \
    more/long/path/deer.o

如果显示示例命令的部分输出内容很有帮助,可以编写 输出。

请用一个空白行分隔各个示例。

如果“示例”部分太长,请将示例移至帮助文档中。 互动式帮助示例用于快速参考和提高曝光度 而不是详尽的文档

备注

注释是可选的,以“注释:”开头标头。例如:

Notes:
  Use `blast help <command>` for details on [<args>] for a subcommand.

笔记采用美式英语散文(即使用美式英语的完整句子) 英语语法、拼写和标点符号)。

备注内容

  • 除“选项”中已列出的变量以外(针对 默认值)
  • 安全隐患
  • 提醒来帮助用户

不应在备注中填写的内容

  • 错误代码(将其放在“错误代码”部分)
  • 版权(请勿在--help中包含此信息)
  • author(请勿在 --help 中包含此信息)
  • 如何获取有关子命令的帮助(将以下内容添加到 help 子命令)
  • 如何更新该工具(应该在该工具的相关文档中说明) 包,如果适用)
  • 版本说明(使用单独的文件)

错误代码

如果代码不是 01,则必须在“错误代码”部分查看 。例如:

Error codes:
  2  The blade is too dull.
  3  Out of fuel.

如果程序仅生成 01 结果,则省略此部分。

错误代码 0 始终被视为“无错误”错误代码 1 始终为 “general error”[一般错误]--help 输出中均未记录这两者。每个错误代码 (由工具生成的 01 除外)必须记录在案。

平台详细信息

某些平台(如 DOS)会使用不同的选项前缀(如 /)或可能允许 不区分大小写。工具将使用短划线前缀 (-),并且区分大小写 所有平台和选项也就是说,该工具的文档 通常无需考虑所使用的平台。

--help 输出中不可包含的内容

请勿使用等号 (=) 显示键值对,例如--scribble=abc。 键和值使用空格作为分隔符 (--scribble abc) 进行解析。 在帮助中显示等于号可能会让用户感到困惑。

不要实现分页器(类似于会暂停输出的 more 程序) )。

不包含

  • 帮助输出中的版权(将版权置于法律指定的位置)。
  • 版本说明(将其放在版本说明中)。
  • 完整文档(将其放在 Markdown 文档中)。
  • 版本信息(--version 的输出)。
  • 关于结果代码 01 的文档(放入 .md 文档中)。
  • 特定于 Shell 的帮助(例如,如何将输出或管道重定向到分页器)。