为什么命令行选项会有长短之选?


23

大多数unixoid命令为命令行选项(如ls -als --all,或ls -A和)提供了短期和长期替代选择ls --almost-all。为什么存在这两种方式?一种是较短的类型,另一种则更易于阅读和理解。但是,每次编写shell脚本时,我都需要决定要使用哪个脚本。是否知道为什么存在这两种选择?哪个是第一个,为什么是另一个。例如,在DOS / Windows上,几乎只有不区分大小写的单字母选项。

Answers:


24

最初只有单字符选项。一些程序采用了多个字符的选项,但仍带有一个破折号。AFAIK双破折号多字符选项来自GNU;之所以引入它们,是因为它们更具可读性,而且通常更令人难忘(您可以拥有52个以上的对象)。现在,许多程序同时具有这两种功能:用于在命令行上键入并记住字符的短选项,用于脚本或在命令行上的长选项(如果您只记住较长的选项名)。


15
+1表示长选项对脚本更好,因为它们可以帮助记录内容
Norman Gray 2010年

5
至于“其中只有52”:尝试ls -BartSimpsonIsJustCool(或者Great,如果你是在Solaris。
亚伦Digulla

1
@AaronDigulla这是复活节彩蛋吗?
user712092 2012年

5
@ user712092不,这是一个把戏。在Linux下,后面的所有内容都是I-I选项的参数,因此只有sJustCool在当前目录中有一个名为的文件时,它才有所不同。该-BartSimpson部分可以被重新排序,不同之处在于S(按大小排序)已经留后t(按日期排序)。mno存在时也无效。因此,该命令等效于ls -BSainopsr,如果我什么都没错过,就不能删除另一个字母来获得相同的输出,并且可以自由地对这些字母重新排序。
吉尔(Gilles)'所以

2
@吉尔斯:为了尽可能准确,可能有62个不同的短选项(包括数字),而不是52个gzip -9 filename。例如,考虑一下。
Radko Dinev 2014年

1

您可能会猜到这只是一个口味问题。在命令行上键入时,短选项可能是首选,尤其是在run-together-options的情况下(例如ls -AL)。长选项可以更好地传达意图,因此阅读时无需查阅手册页ls --almost-all --dereference

自然,随着经验的积累,您可能会了解到-A-L简短选项都已广为人知,并且不需要这些额外的文档。特别是在复杂的命令中,它可能以有趣的方式将多个命令与评估,重定向等结合在一起。在这种情况下,您可能更喜欢简洁而不是文档。


1

我可以看到用不同的方式指定参数(短和长)的另一个目的是,在键入时,Unix / Linux命令行用户喜欢使用尽可能短的命令。但是,这些脚本可能会变得晦涩难懂,并且如果使用这些简短版本编写脚本,则可能难以理解。使用长版本可以使的人谁是不一样的命令更易于阅读和理解这个命令的大师,特别是如果这个命令实际上是相对于一个知名的命令在本地编写的脚本。

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.