这是 GNU 编码标准的一部分,因此所有 GNU(以及许多非 GNU)软件都遵循它。然而,这绝不是一个绝对的标准;还有其他实现方式,例如:
-Wlong-option
: 源自 C 编译器,并在 POSIX 中如此指定。-long-option
(即,单破折号):大多数没有任何短选项的应用程序(通常作为双破折号版本的替代品)支持。+long-option
:这已经过时了,但是有一些旧的软件包为短选项保留了破折号,为长选项保留了加号。今天用得不多,主要是因为大多数 getopt() 实现不支持它long-option
:不幸的是,也有一些应用程序将选项与参数混淆。我相信 MegaCLI 是那里的犯罪者之一(无论如何,它几乎在所有其他方面都是犯罪者)。该--long-opt
方法是 1990 年左右发起的 GNU 主义。
Multics
使用-long
带有单个破折号的选项,Multics 项目始于 1960 年代。
UNOS
是第一个UNIX
克隆(由一群前 AT&T 员工于 1980 年发起)并于 1982 年 4 月UNOS
引入了通用选项解析器(UNIX
世界上第一个)。该选项解析器支持-long
带有单个破折号的选项。
AT&T
getopt()
在 1983 年和 1984 年之间引入,但getopt()
在 1989 年为 Bourne Shell 的内置getopts
.
POSIX
使用一个破折号实现看起来像长选项的操作数test
和find
AT&T UNIX
-long
在 1983 年左右引入了使用单个破折号的选项,同时允许例如kill -INT <pid>
.
tar
并且ar
根本没有option
在他们的文档中使用这个词,而是使用了这个词keyletter
。后来,实现者添加了-
对被忽略的密钥字母的支持,给人的印象是 y CLI 可能看起来像其他 UNIX 命令。
dd
使用自己的期权模型,但该期权模型与长期权模型兼容,该模型UNOS
将长期权定义为以下形式:
-long
-long arg
long=arg
-long=arg
long= arg
-long= arg
该UNOS
选项解析器优于GNU longopt实现,因为它使用一个格式字符串,允许自动转换整数和布尔参数,并因为它允许在需要时实现回调函数ENY选项。由于回调函数接口,不需要重新排序参数列表。
getopt()
自 2004 年以来,Solaris实现支持长选项作为短选项的别名,但并未真正记录它,即使它自引入以来可被Bourne Shell
通孔使用getopts(1)
。
该Schily Bourne Shell
文档记录了此功能,此外还引入了进一步的getopt()
增强功能,允许长选项不仅仅是短选项的别名,还允许单破折号长选项。
请参阅内置命令部分中的http://schillix.sourceforge.net/man/man1/bosh.1.htmlgetopts.
基于选项解析器思想的现代化和增强的UNOS
选项解析器位于 schily-tools 中libschily/getargs.c
http://sourceforge.net/projects/schilytools/files/
它用于不基于 AT&T 代码的 schily 工具程序中,并且会减少不满意定义的选项名称的问题,例如 mkisofs
归档时间: |
|
查看次数: |
4435 次 |
最近记录: |