此时是否有一个 '03 注册的 UNIX 无法执行 rm -- -foo 操作?

此时是否有一个 '03 注册的 UNIX 无法执行 rm -- -foo 操作?

我正在努力消除这个不确定我有关于使用双破折号(两个连字符,--)作为选项分隔符的结束(而不是长选项前缀)。当有人读到长期权是一种GNU约定和长选项以 开头--。但这只是与选项结束分隔符

其使用完全符合IEEE Std 1003.1,2013 实用语法指南 10:

第一个不是选项参数的 -- 参数应该被接受作为指示选项结束的分隔符。任何后续参数都应被视为操作数,即使它们以“-”字符开头。

所以人们可以查看rm手册页操作系统X(或者自由BSD),AIX,索拉里斯高性能用户体验系统- 众所周知的 UNIX '03 注册的 Unices:

  • OSX、AIX 和 Solaris 1--逐字引用分隔符男人 rm
  • HPUX 中没有讨论它男人 rm但还有其他允许使用上述分隔符的命令(例如touch

有没有单一的UNIX 03 注册产品今天哪个不能做rm -- -foo?是 Solaris...HPUX 吗?即使他们没有记录下来,他们也能做到吗?我们现在可以将其推广到这些平台上的所有命令吗?


1. Solaris 11 手册在最后的注释中说: 如果 - - 和 - 都出现在同一命令行上,则第二个被解释为文件。前两个连字符之间有一个空格。它只是连字符还是在这种情况下以连字符开头的任何东西都会被解释为文件?

答案1

从 Solaris 10 开始:

~ touch testfile
~ rm -- testfile
~ ls testfile
testfile: No such file or directory
~ touch testfile
~ rm -- -f testfile
-f: No such file or directory
~ ls testfile
testfile: No such file or directory
~ rm - - -f testfile
-: No such file or directory
-f: No such file or directory
testfile: No such file or directory
~

因此,为了回答您的问题,在 Solaris 10 中,如果第二个实例以连字符开头,则它将被视为文件。

相关内容