如何解释bash命令的“用法”语法?


11

您必须如何准确地解释命令“使用”输出的输出,例如bash。

例如,在我的OS X,cp给我

usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
  • 嵌套选项(例如-R中的-H)表示什么?
  • 大写和小写有什么意义吗?
  • 参数何时是可选的,是必需的?

我需要对我的程序实施telnet命令行,我想弄清楚这一点。

Answers:


15

对于任何想了解用法输出含义的人,最好的方法是man man

认真地:-)花点时间学习惯例,真的很有帮助。

   The following conventions apply to the SYNOPSIS section and can be used
   as a guide in other sections.

   bold text          type exactly as shown.
   italic text        replace with appropriate argument.
   [-abc]             any or all arguments within [ ] are optional.
   -a|-b              options delimited by | cannot be used together.
   argument ...       argument is repeatable.
   [expression] ...   entire expression within [ ] is repeatable.

+1删除我的帖子,将其视为多余。
华纳2010年

man man在CentOS 6.6上没有此部分。man man在Mac OS X 10.7.4上也不是。在哪里可以找到它?
通配符

man man-pages在CentOS和man manpagesMac OS X(使用BSD命令)中找到了它。
通配符

这个答案以及man man命令似乎都没有涵盖输入必须是枚举项之一的情况。例如<env> - must be one of [dev | test | uat | perf | prod]
Addison

2

首先,虽然有一些通用约定,但并没有统一地应用它们。

  • 在这种情况下,它是说,如果你使用的-R(表示“递归”),那么你就可以使用-H-L-P。如果您不使用-R,则这些选项不相关。
  • 是的,案例几乎总是很重要。所以通常-h-H做完全不同的事情。
  • 方括号通常表示选项或参数为“可选”。(前面带有连字符的东西是“选项”,没有连字符的单词是自变量。)没有括号的情况下,通常需要选项或自变量​​。在您的示例中,“ source_file”和“ target_directory”都是必需的。“ ...”表示可以重复前面的参数。

其他值得注意的地方:

  • 竖线表示“或”。因此[-fi | -n]表示您可以将-f和和/或-i但不能与结合使用-n
  • 方括号中的分组选项表示可以使用它们中的任何一个。因此[-apvX]表示您可以使用这些选项的任意组合。他们甚至不需要被砸在一起。因此-a -v -p将是有效的组合。
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.