“-h”和“--help”有什么区别?

“-h”和“--help”有什么区别?

有时我看到的-h是应用程序的手册,有时我看到的是--help在手册中找到的。

它们有什么区别?有什么历史/故事吗?

答案1

有关 unix 命令的文档的标准位置是 unix 手册(又称“man 页”)(第 1 和第 8 节),通过man命令访问。例如,要获取命令的文档grep,您可以使用man grep

一些命令-h如果使用或 之类的选项运行,则提供一些内置文档--help。这几乎不是标准,并且如何提供以及是否提供这一点在命令之间有很大差异。至于-h和之间的区别--help,这主要是历史原因。几十年来,unix 中命令选项的“标准”已经发生了很大变化。

当 unix 刚刚“诞生”时,不同的命令采用完全不同格式的选项;这种早期的混乱仍然存在于一些命令中,例如tar(它倾向于假设它的第一个参数是选项,无论它是否以 开头-)和dd(它将其所有参数视为不带 的长选项--)。

但没过多久,某种标准就出现了:选项以单个破折号开头,由单个字母或其他字符组成,并且必须位于任何位置(非选项)参数之前。这是在许多命令包含任何内置帮助之前,因此这个时代的命令通常用于-h帮助以外的其他用途(例如,grep -h不打印文件名grep)。

最近,该“标准”又增加了几项内容:以双破折号开头的长选项(例如--help),允许选项位于位置参数之后或之中,以及使用--指示选项的结束(因此,即使以破折号开头,之后的所有内容都是位置参数)。有些命令使用这些新的选项样式,有些则不使用。

最近,一些命令还包含/添加了内置帮助。如何调用它基本上取决于命令开发人员的想法,以及是否-h已经具有其他含义(例如 的情况grep)。因此,有些命令需要-h帮助,有些需要--help,有些两者兼而有之,有些则两者都不需要。

讽刺的是,要了解如何获取命令的内置帮助(如果存在),最好的方法是阅读其手册页。以下是摘录自man grep

 -H      Always print filename headers with output lines.

 -h, --no-filename
         Never print filename headers (i.e. filenames) with output lines.

 --help  Print a brief help message.

答案2

通常--help是使用的,但如果-h也能用,开发人员可能已经将其包括在内以使其输入速度更快。

然而,它不是标准的,并且非常依赖于命令 -vim例如使用两者,并且bash仅使用--help

因此,如果您使用 Linux,man command通常是权威的帮助指南。

您可能还喜欢阅读这个答案有关命令行参数的更多信息。

答案3

-h短属性旨在节省用户输入命令的时间,有时命令很长;

--help属性适用于 bash 脚本(许多用户应该很容易理解)。在这个例子中-h很明显,但有时有很多属性-j,所以-i -g在 bash 脚本中使用 是正确的 - bash 脚本将正确执行,但你的同事可能会杀了你 :)

答案4

这确实取决于具体程序。它们之间可能没有区别。 --help 可能比 -h 提供更详细的文本。

相关内容