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

Tim*_*Tim 14 command-line

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

ls -la
ls -al
Run Code Online (Sandbox Code Playgroud)

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

hee*_*ayl 15

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

*有一个非常重要的注意事项,即如果任何选项需要文件名或任何其他输入,您需要相应地放置它。

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

grep -cf input.txt file.txt 
Run Code Online (Sandbox Code Playgroud)

如果你像这样使用它:

grep -fc input.txt file.txt 
Run Code Online (Sandbox Code Playgroud)

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


cha*_*aos 12

POSIX约定在界定准则11和实用程序语法准则12的命令“要不要紧”,除非它不记录的实用程序本身。

GNU C库参考手册也是荣誉的POSIX约定25.1.1程序参数语法约定

但是请注意,有几个实用程序在某些情况下给出了如何执行参数的严格命令(例如 find)。从查找联机帮助页

-name测试而来的前-type测试,以避免调用stat(2)上的每个文件。

有时实用程序会抱怨订购。

  • 严格来说,`find`只有几个选项,[POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html#tag_20_47_04)只定义了`-H`和`-两个选项L`。Ubuntu 中的 GNU `find` 有更多选项,但 `-type` 和 `-name` 等被视为 *operators*,而不是 *options*。对于运营商来说,顺序通常很重要。 (3认同)

use*_*570 5

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

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

一个例子是 find 命令。您将获得不同的结果,例如:

  find . -ls -mtime -1 
Run Code Online (Sandbox Code Playgroud)

  find . -mtime -1 -ls
Run Code Online (Sandbox Code Playgroud)