我读过几个关于双破折号的问题:
-
单字符选项用单破折号,--
单词用双破折号?
--
(双破折号)是什么意思? (也称为“裸双破折号”)
然而,我记得四年前一位老师告诉我,这--
是处理长开关(如--help
or )的 posix 方式--color=
。
今天,我使用的很多命令根本不遵守这条规则,我能想到的最好的例子是,find
即使非常烦人的AIX find
.
我的老师错了吗?或者规则是否从那时起发生了变化(这似乎不太可能)?
最后,关于选项 and orposix
的长度有什么规则吗?-
--
答案1
我认为POSIX 没有定义长选项:
准则 3:每个选项名称应该是可移植字符集中的单个字母数字字符(alnum字符分类)。 -W(大写-W)选项应保留给供应商选项。不应允许多位数选项。
双破折号是 GNU 约定。
在里面POSIX 查找的定义带有单破折号的“长开关”不是选项的一部分,而是作为操作数给出的表达式。
答案2
find
似乎是规则的例外。实际上find
起源于 Unix 的初始实用程序开发人员群体之外,因此它使用“长”选项的方式不符合规范。
通常,只有在短期期权和长期期权的使用成为普遍做法之后,标准化才会发生。最多程序,部分原因是某些例程或库可用于执行选项解析(从而强制执行一些非显式标准)。但当然那时改变已经太晚了现存的程序,例如find
,以不会破坏脚本的方式。 POSIX 合规性(带有双破折号)比不破坏这些脚本更重要。
tar
例如,向后兼容性也是为什么可以使用或不使用破折号来指定短选项的原因。