如果没有,是否存在一个事实上的标准?基本上,我正在编写命令行帮助文本,如下所示:

usage: app_name [options] required_input required_input2
  options:
    -a, --argument     Does something
    -b required     Does something with "required"
    -c, --command required     Something else
    -d [optlistitem1 optlistitem 2 ... ]     Something with list

我基本上只是阅读了各种工具的帮助文本,但是否有指南列表或其他内容?例如,我是用方括号还是圆括号?如何使用空格?如果参数是一个列表呢?谢谢!


当前回答

我们运行的是Linux,一个基本符合posix的操作系统。它应该是POSIX标准:实用程序参数语法。

An option is a hyphen followed by a single alphanumeric character, like this: -o. An option may require an argument (which must appear immediately after the option); for example, -o argument or -oargument. Options that do not require arguments can be grouped after a hyphen, so, for example, -lst is equivalent to -t -l -s. Options can appear in any order; thus -lst is equivalent to -tls. Options can appear multiple times. Options precede other nonoption arguments: -lst nonoption. The -- argument terminates options. The - option is typically used to represent one of the standard input streams.

其他回答

我使用CSS形式符号表示。

Component values may be arranged into property values as follows: Several juxtaposed words mean that all of them must occur, in the given order. A bar (|) separates two or more alternatives: exactly one of them must occur. A double bar (||) separates two or more options: one or more of them must occur, in any order. A double ampersand (&&) separates two or more components, all of which must occur, in any order. Brackets ([ ]) are for grouping. Juxtaposition is stronger than the double ampersand, the double ampersand is stronger than the double bar, and the double bar is stronger than the bar. Thus, the following lines are equivalent: a b | c || d && e f [ a b ] | [ c || [ d && [ e f ]]] Every type, keyword, or bracketed group may be followed by one of the following modifiers: An asterisk (*) indicates that the preceding type, word, or group occurs zero or more times. A plus (+) indicates that the preceding type, word, or group occurs one or more times. A question mark (?) indicates that the preceding type, word, or group is optional. A pair of numbers in curly braces ({A,B}) indicates that the preceding type, word, or group occurs at least A and at most B times.

如果您需要示例,请参阅MDN上的正式定义部分;这里有一个字体:https://developer.mozilla.org/en-US/docs/Web/CSS/font#formal_syntax。

下面是我自己Pandoc小抄中的一个简单例子:

$ pandoc <input_file>.md --from [markdown|commonmark_x][-smart]? --to html --standalone --table-of-contents? --number-sections? [--css <style_sheet>.css]? --output <output_file>.html

我会以官方项目为例,比如tar。在我看来,帮助味精。需要尽可能的简单和描述性。使用的例子也很好。对“标准帮助”没有真正的需求。

是的,你的思路是对的。

是的,方括号是可选项目的常用指示符。

通常,正如您所勾勒的那样,在顶部有一个命令行摘要,后面是详细信息,理想情况下每个选项都有示例。(您的示例显示了每个选项描述之间的行,但我假设这是一个编辑问题,并且您的实际程序输出的是缩进的选项列表,中间没有空行。这将是在任何情况下都要遵循的标准。)

一个新的趋势(也许有一个POSIX规范可以解决这个问题?)是消除文档的手册页系统,并将手册页中的所有信息作为程序的一部分—帮助输出包括在内。这个额外的内容将包括更长的描述,解释的概念,使用示例,已知的限制和错误,如何报告错误,以及可能的相关命令的“参见”部分。

我希望这能有所帮助。

我们运行的是Linux,一个基本符合posix的操作系统。它应该是POSIX标准:实用程序参数语法。

An option is a hyphen followed by a single alphanumeric character, like this: -o. An option may require an argument (which must appear immediately after the option); for example, -o argument or -oargument. Options that do not require arguments can be grouped after a hyphen, so, for example, -lst is equivalent to -t -l -s. Options can appear in any order; thus -lst is equivalent to -tls. Options can appear multiple times. Options precede other nonoption arguments: -lst nonoption. The -- argument terminates options. The - option is typically used to represent one of the standard input streams.

GNU编码标准是一个很好的参考。本节处理——help的输出。在这种情况下,它不是很具体。打印一个表,显示短选项和长选项,并给出简洁的描述,可能不会出错。为了可读性,尽量让所有参数之间的间距合适。您可能希望为您的工具提供一个手册页(也可能是信息手册),以提供更详细的解释。