有些命令和程序用来-h
显示帮助,有些则使用--help
,还有一些则同时识别两者。这让我很抓狂。有什么规则可以选择正确的吗?
答案1
恐怕没有规则:责怪历史。
最初 DOS 及其前身使用/?
,而 Unix 则使用 来-
作为选项指示符,因为/
是目录分隔符;由于 shell 可以-?
通过文件名扩展来扩展为不同的字符串,因此-h
成为了常态。
到目前为止,一切都比较简单。
在cmd
许多命令中保留了/?
约定,但是从 Unix/Linux 转录的命令可能使用-h
,/h
或/help
。
与此同时,在 Linux 中,一些命令变得如此包罗万象,以至于大多数字母都用于选项,因此--
选项使用更冗长的 ,而保留单个-
作为更常见选项的替代。这就是冲突开始的地方:在命令中ls
,du
人们认为-h
最好用作冗长的 的同义词--human-readable
,因为它可能比 help 更频繁地被调用。
更复杂的是,一些程序的本地语言版本已经翻译了参数,因此在法语中,帮助选项变成-a
了援助者或者助手, 例如。
经常起作用的一件事是--
:这几乎总是一个无效的选项,程序通常会报告错误,然后提供完整的帮助或告诉您帮助选项是什么。
最终,用户还是要听从程序员的指令:Windows 和 Linux 都拥有由大量不同的人编写的实用程序,而我们都在他们的掌控之中。
我希望它有所不同,但最终我们必须利用现有资源,或者花一生的时间维护我们自己的版本。
答案2
这是由于以下原因:
首先,大多数Linux命令通过使用以下功能来支持参数:
getopt() 和 getopt_long()。
getopt() 支持用“-”字符来区分各种选项
长选项,即 getopt_long()(例如:--help)是一个 GNU 扩展,它提供了更高的可读性,也有助于理解参数的含义。
getopt_long() 支持短参数类型和长参数类型,这就是为什么许多命令可以同时支持这两种参数类型。
人们希望支持这两个参数的另一个原因是:保持向后兼容性。
韓國語:http://en.wikipedia.org/wiki/Getopt
希望以上能有所帮助。