命令行/ shell帮助文本是否有“标准”格式?

如果不是,是否有事实上的标准? 基本上我正在写一个像这样的命令行帮助文本:

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 

我从基本上只是阅读各种工具的帮助文本,但有没有一个指导方针或什么的列表? 例如,我使用方括号还是括号? 如何使用间距? 如果参数是一个列表呢? 谢谢!

通常,您的帮助输出应该包括:

  • 应用程序的描述
  • 用法语法,其中:
    • 使用[options]指示选项的位置
    • arg_name是必需的,单数arg
    • [arg_name]是一个可选的单数arg
    • arg_name…对于一个必需的参数可以有很多(这是很less见的)
    • [arg_name…]可以提供任何数字的arg
    • 请注意, arg_name应该是一个描述性的短名称,在较低的情况下
  • 一个很好的格式化选项列表,每个选项:
    • 有一个简短的描述
    • 显示默认值,如果有的话
    • 显示可能的值,如果适用)
    • 请注意,如果一个选项可以接受一个简短forms(例如-l )或一个长forms(例如--list ),将它们一起包含在同一行中,因为它们的描述是相同的
  • 可能是命令行参数源的configuration文件或环境variables位置的简短指示符,例如GREP_OPTS
  • 如果有一个手册页,则可以这样表示,否则就可以find更详细的帮助信息

进一步注意,接受-h--help来触发这个消息是很好的forms,如果用户弄乱命令行语法,例如省略必需的参数,你应该显示这个消息。

看看docopt 。 这是logging(和自动parsing)命令行参数的正式标准。

例如…

 Usage: my_program command --option <argument> my_program [<optional-argument>] my_program --another-option=<with-argument> my_program (--either-that-option | <or-this-argument>) my_program <repeating-argument> <repeating-argument>... 

GNU编码标准是这样的事情的一个很好的参考。 本部分处理--help的输出。 在这种情况下,它不是很具体。 打印表格显示短期和长期期权以及简要说明的表格可能不会出错。 试着让所有参数之间的间隔正确的可读性。 您可能希望为您的工具提供手册页(可能还有info手册)以提供更详细的解释。

我们正在运行Linux …一个主要POSIX兼容的操作系统。

Posix的标准应该是。 检查左侧“基本定义”中的“公用程序”。 [实用参数语法的Posix标准] [1] [1]: http : //pubs.opengroup.org/onlinepubs/9699919799/

(我知道这是一个旧的职位)

微软有自己的命令行标准规范 :

本文档重点介绍命令行实用程序的开发人员。 总而言之,我们的目标是提供一致的,可组合的命令行用户体验。 通过实现这一function,用户可以学习一组核心的概念(语法,命名,行为等),然后将这些知识转化为一系列大量的命令。 这些命令应该能够以标准化的格式输出标准化的数据stream,以便于在没有parsing输出文本stream的负担的情况下进行组合。 本文档的编写独立于任何shell,一组实用程序或命令创build技术的具体实现; 但是,附录J – 使用Windows Powershell实施Microsoft Command Line Standard显示了如何使用Windows PowerShell免费提供许多这些准则的实现。

是的,你在正确的轨道上。

是的,方括号是可选项目的通常指标。

通常情况下,您已经勾画出了顶部的命令行摘要,其次是详细信息,最好是每个选项的样本。 (您的示例显示了每个选项描述之间的行,但是我认为这是一个编辑问题,而且您的真实程序会输出缩进的选项列表,并且两者之间没有空行,这将成为任何情况下遵循的标准。

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

我希望这有帮助。

我会按照焦油这样的官方项目为例。 在我看来,帮助味精。 需要尽可能简单和描述性。 使用的例子也很好。 没有真正需要“标准帮助”。

微软有一个命令行语法

  • 没有括号或括号的文本

    您必须input的项目如图所示

  • <尖括号内的文字>

    您必须为其提供价值的占位符

  • [方括号内的文字]

    可选项目

  • {大括号内的文字}

    一套所需的物品; 选一个

  • 垂直条(|)

    互斥项目的分隔符; 选一个

  • 省略号(…)

    可以重复的项目