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

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

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


当前回答

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

其他回答

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

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.

我使用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

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

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


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

看一下docopt。它是用于记录(和自动解析)命令行参数的正式标准。

例如……

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>...

没有标准,但是http://docopt.org/已经创建了他们版本的命令行工具的帮助文本规范。