关于在选项周围使用花括号的约定/标准


10

“ Arch Linux 提要”部分中tar的手册页开头为:

tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG...]

我完全理解,在这种情况下,这意味着必须给出花括号中的一个选项,因为它在手册页中说得很紧。在互斥选项列表附近使用{}是否有某种标准或约定?

我所能找到的只是1998年的一个用户小组教程man,内容是:

某些选项的选择列表有限。选项列表将用逗号分隔并放在大括号之间。

{choice1,choice2} {是,否}

似乎每种约定(例如Open Group的约定)或手册页仅描述方括号([)或垂直线(|)。


1
通常,我认为<>这是强制性的,但我认为这是保留给参数而不是选项的。计数器:Ubuntu的GNU tar 手册页(manpages.ubuntu.com/manpages/trusty/en/man1/tar.1.html,其中一个)不使用这种形式,linux.die.net / man / 1 / tarDebian。我认为您可能正在查看BSD tar的联机帮助页,因此,如果存在约定,则可能是BSD的事情。
大师

拱形手册页的上游是man7.org,tar页是完全相同的man7.org/linux/man-pages/man1/tar.1.html
umbasa 2015年

2
我一直以为命令行语法是从ENBF中产生的,但是ENBF中的 {}表示相反的意思(重复参数而不是像tar情况那样可能的选择)。我尝试将{}语法用于Windows,似乎{}在Windows上很常见,甚至在technet上都有描述。叹气,也许我正在努力寻找真相。
umbasa 2015年

Answers:


5

这是一个很大的问题(并且在几年后仍然开放)。我认为答案已在此Google文档中正式得到了回答:

  • 必填项:无括号
  • 可选的互斥项目:方括号,定界符
  • 必需的互斥项目:大括号,定界符

1

在互斥选项列表附近使用{}是否有某种标准或约定?

当我遇到您的问题时,我正在研究大括号({})中指定的选项与方括号([])中指定的选项的含义的重要性。这是我发现对寻求理解有用的唯一信息来源,即为什么用花括号表示选项。

如您所写:

我完全理解在这种情况下,这意味着必须给它们中的一个。

阅读netstat的手册页后,我了解到,这些选项是可用于命令的选项,这些命令必须在使用该命令可能列出的任何其他选项之前使用/声明,并且仅列出的选项之一可以使用竖线分隔。

上面的示例可以在netstat命令的手册页中找到:

netstat {--route | -r} [address_family_options] [--extend | -e [-extend | -e]] [--verbose | -v] [--numeric | -n] [--numeric-hosts ] [-数字端口] [-数字端口] [-连续| -c] [延迟]

来源:netstat(8)| Linux手册页

本质上,可以使用--route或-r(它们表示相同的意思)之一,但是该选项必须位于其他列出的选项之前。

我只是花时间回答您的问题,因为该问题似乎仍未解决,但在我看来,您回答了自己的问题:)

约定只是广泛建立的惯例。不管是否明确声明,以这种格式定期查找手册文档的事实表明该约定(假设我在上面正确指出)已被牢固确立。

有没有“标准”?对我而言,这取决于您要对“标准”采用什么定义。对我而言,就我们在这里使用术语而言,约定和标准一词的含义之间几乎没有区别。从这个意义上说,我认为这两个词的含义是“相互同意,使用和接受为准则的事物”。

感谢您抽出宝贵的时间来帮助我了解此约定/标准。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.