长选项可以任意缩短吗?

长选项可以任意缩短吗?

长选项是否可以任意缩短为 GNU 选项约定的一部分,或其他一些约定/标准,或者只是由某些特殊的 C 函数提供?

例如,为什么行为pythonawk行为不同?

$ python --version
Python 2.7.12
$ python --versio
Unknown option: --
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Try `python -h' for more information.

$ awk --version
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
$ awk --versi
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)

谢谢。

答案1

这是 GNU libc 的一个功能,来自getopt_long 联机帮助页:

如果缩写是唯一的或者与某些定义的选项完全匹配,则可以缩写长选项名称。

类似地,GNU libc 的 Argp 接口也允许缩写选项(尽管如果程序确实关心的话,可以拒绝它们)。

如中所述xclip 命令行上的缩写长选项, xlib 做同样的事情,所以xclock -dig -bri与 相同xclock -digital -brief

我不建议在脚本中执行此操作:awk --ver如果他们添加了awk --verbose.

Python 大概已经编写了自己的参数解析器,可能可以移植到不使用 glibc 的系统。他们不能只是借用 glibc,因为他们没有使用 GNU GPL 许可证。

相关内容