是否有记录命令行界面的最佳实践?

bla*_*man 2 shell command-line command-line-interface

我设计了一些具有 CLI 的程序,并希望尽可能标准地记录它们。是否有关于最佳方法的协议?

一个例子:

假设该程序是“sayHello”,它接受一些参数:名称和消息。所以一个标准的调用看起来像这样:

> sayHello "Bob" "You look great" 
Run Code Online (Sandbox Code Playgroud)

好的,我的命令用法如下所示:

sayHello [name] [message]
Run Code Online (Sandbox Code Playgroud)

如果括号在使用命令中具有特定含义,那么这可能已经是一个错误。但让我们更进一步说“消息”是可选的:

sayHello [name] [message (optional)]
Run Code Online (Sandbox Code Playgroud)

然后还有一个问题,如果我们想要表示一个默认值怎么办:

sayHello [name] [message (optional: default 'you look good')]
Run Code Online (Sandbox Code Playgroud)

我意识到这个用法声明在这一点上看起来有点迟钝。我真的想问关于如何编写这些内容是否有一些商定的标准。我偷偷怀疑括号和方括号都有特定的含义。

koj*_*iro 6

虽然我不知道有任何官方标准,但已经做出了一些努力来提供按框架进行的约定。Docopt就是这样的框架之一,可能适合您的需求。用他们自己的话说:

docopt 可以帮助您:

  • 为您的命令行应用程序定义接口,以及
  • 自动为其生成解析器。

许多编程语言都有实现,包括shell