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

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

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


当前回答

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

This document is focused at developers of command line utilities. Collectively, our goal is to present a consistent, composable command line user experience. Achieving that allows a user to learn a core set of concepts (syntax, naming, behaviors, etc) and then be able to translate that knowledge into working with a large set of commands. Those commands should be able to output standardized streams of data in a standardized format to allow easy composition without the burden of parsing streams of output text. This document is written to be independent of any specific implementation of a shell, set of utilities or command creation technologies; however, Appendix J - Using Windows Powershell to implement the Microsoft Command Line Standard shows how using Windows PowerShell will provide implementation of many of these guidelines for free.

其他回答

这可能有点离题,但我曾经写过两个小工具,使创建和维护命令行工具帮助页面更有效:

MAIN DOCLET,它通过处理源代码中的Javadoc注释,为Java程序的主方法生成HTML文档 HTML2TXT工具,将HTML文档格式化为纯文本(这是我们想要的帮助文本)

我将这两个工具集成到程序的MAVEN构建过程中,以便它们在每次构建时自动执行。

例如:

我的ZZFIND工具的相关源文件 构建项目的POM文件(并运行上面提到的两个工具) 使用——help命令行选项运行ZZFIND时的示例输出

希望这对其他人有用!?

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

是的,你的思路是对的。

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

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

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

我希望这能有所帮助。

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

我认为命令行使用没有标准的语法,但大多数人都使用这样的约定:

微软命令行语法,IBM有类似的命令行语法


没有括号或大括号的文本 必须按所示输入的项 <尖括号内的文本> 必须为其提供值的占位符 [方括号内的文本] 可选项目 {括号内的文本} 一套必需的项目;选择一个 竖条{a|b} 互斥项的分隔符;选择一个 <file>… 可以重复的项目