有时我看到的-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 提供更详细的文本。