我是一名学生,作为诅咒的一部分,我必须重新编码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/