我知道这两个命令做同样的事情:
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)上的每个文件。
有时实用程序会抱怨订购。
使用 ls 选项排序几乎不会出错。
但请注意,其他命令可能会根据顺序对选项有不同的响应。
一个例子是 find 命令。您将获得不同的结果,例如:
find . -ls -mtime -1
Run Code Online (Sandbox Code Playgroud)
和
find . -mtime -1 -ls
Run Code Online (Sandbox Code Playgroud)