作为良好做法,我是否应该按字母顺序排列命令中的标志?

作为良好做法,我是否应该按字母顺序排列命令中的标志?

我知道这两个命令做同样的事情:

ls -la
ls -al

但我想知道它们之间是否有任何偏好。以某种方式对它们进行排序是否是更好的做法?

答案1

除非命令明确提及,否则这并不重要*。我遇到过任何参考资料,提供如何将选项一个接一个地放置的指南。所以我认为为了便于阅读,可以按字母顺序排列选项。

*有一个非常非常重要的警告,那就是如果任何选项需要文件名或在其后紧接着的任何其他输入,则需要相应地输入它。

例如,-f选项grep将文件作为输入,以便从输入文件中获取要查找的模式。您需要给出以下命令:

grep -cf input.txt file.txt 

如果你像这样使用它:

grep -fc input.txt file.txt 

它将会失败,因为它将用作c文件名。

答案2

POSIX惯例定义在实用程序语法指南中的第 11 条和第 12 条该命令不应该有关系“除非该实用程序本身没有记录。

GNU C 库参考手册也遵守 POSIX 约定25.1.1 程序参数语法约定

但请注意,有几种实用程序在某些情况下会给出如何执行参数的严格命令(例如 find)。从查找手册页

测试在测试-name之前进行-type,以避免必须调用stat(2)每个文件。

有时公用事业会对订购提出抱怨。

答案3

使用 ls,选项的排序几乎不会出错。

但请注意,其他命令可能根据顺序对选项有不同的响应。

例如 find 命令。您将得到不同的结果,例如:

  find . -ls -mtime -1 

  find . -mtime -1 -ls

答案4

就像其他人回答的那样,这并不重要(除非另有记录或选项参数需要进一步的参数)。

但按字母顺序排列选项是否更好仍有争议。

就我个人而言,我发现助记符比严格的字母顺序更有价值。当一组选项形成一个令人难忘的单词时,更容易记住它们,例如,考虑:

netstat -tan
# alphabetic is good (by chance) in this case
netstat -ant

与:

netstat -atn
netstat -nta

因此,如果您发现自己重复了某个命令的某个选项组合,您可能需要尝试将字母重新排列成最容易记住的顺序。

相关内容