我不认为历史 Unix中的shell /实用程序或4.4BSD之类的 “最新”东西都不支持使用双破折号(或两个连续的连字符)作为选项定界符的结尾。使用FreeBSD,您可以看到例如在2.2.1发行版(1997)的rm
手册页中引入的注释。但这只是一个命令的文档。
查看我能找到的最旧的GNU fileutils 更改日志,我看到此1(稍作更改):
Tue Aug 28 18:05:24 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* touch.c (main): Don't interpret first non-option arg as a <---
time if `--' is given (POSIX-required kludge).
* touch.c: Add long-named options.
* Many files: Include <getopt.h> instead of "getopt.h" since
getopt.h will be in the GNU /usr/include.
* install.c: Declare some functions.
* touch.c, getdate.y, posixtime.y, mktime.c: New files, from bin-src.
* posixtime.y: Move year from before time to after it (but
before the seconds), for 1003.2 draft 10.
这早于Linux。显然要考虑到以下事实:您可能想要创建一个文件名,该文件名包含与时间规范相同的位数(八位或十位十进制数字),而不是为现有文件指定时间戳。
- posix.1是不是在Unix shell中引入了双破折号(
--
)作为选项定界符的结尾? - 这是不是因为某些人想在
touch
90年代初期使用文件名中的数字,然后才以零碎的方式一次使用一个实用程序十年而开始了? - 变更日志中关于什么的热烈评论是什么?
- POSIX Utility语法何时引入了准则10(参数–应该作为表示选项结束的定界符。[...])?
1.与此相反,即在全局范围内记录所有命令用法中的长选项,这是无关的。在另一方面,你可以看到参考定界符出现在像GNU rm.c于2000年作为一个评论,之前被暴露给最终用户在2005年(该diagnose_leading_hyphen功能)。但这一切都在以后,并且涉及一个非常特定的用例。
getopt
是在1980年代初编写时首次被记录的。如果有人可以从Uniforum '85获得getopt论文,那可能会提供一些历史。
--
。
getopt
支持的--
。