我是一名学生,作为诅咒的一部分,我必须重新编码ls命令并尽可能重现其行为。

在Mac(El Capitan 10.11.6)上,使用终端机iTerm 2(zsh),我得到:

user> ls . -R
ls: -R: No such file or directory

在Arch(最新版本)上,使用默认的文本界面(bash),我得到:
user> ls . -R
<current directory content>

尽管我宁愿信任Arch,但在指定目录后ls拒绝其选择是否正确?并且是否有任何文档声明参数的顺序?

最佳答案

参见POSIX utility syntax guidelines,条目#9:

因此,POSIX保证将支持的用法是ls -R .,因为-R是一个选项,而.是一个操作数。
GNU工具通常不会强制执行该准则(这就是Arch允许您以相反顺序放置参数的原因),但是为了获得最大的可移植性,假设您要强制执行该软件,则是明智的选择。
如果要确定,即-R将被视为操作数而不是参数,则无论您使用哪种平台,都可以使用--区分这两个类别:ls -l -- -R-l视为选项,将-R视为操作数,因此将查找名为-R的文件或目录,并提供长格式列表;这是由POSIX实用程序语法准则#10定义的。

关于bash - 'ls'参数有确定的顺序吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45337340/

10-10 13:56
查看更多