Linux getopt_long vs getopt_long_only
要创建一个合适的Linux/unix风格的应用程序,最好的选择是什么(例如,afaik ls使用getopt_long,但例如仅使用ffmpeg getopt_long_)。 你推荐哪一个Linux getopt_long vs getopt_long_only,linux,unix,getopt,getopt-long,Linux,Unix,Getopt,Getopt Long,要创建一个合适的Linux/unix风格的应用程序,最好的选择是什么(例如,afaik ls使用getopt_long,但例如仅使用ffmpeg getopt_long_)。 你推荐哪一个 干杯,都不是。用户argp\u parse或libpopt。我从来没有只使用过getopt\u long\u,但它似乎必须进行更多的查找,因为如果未知标志以单个-开头,它必须同时查看长选项和短选项: 如果选项以“-”开头(不是 “--”)与长选项不匹配,但 与短期权匹配,是吗 改为解析为短选项 --mange
干杯,都不是。用户argp\u parse或libpopt。我从来没有只使用过getopt\u long\u,但它似乎必须进行更多的查找,因为如果未知标志以单个
-
开头,它必须同时查看长选项和短选项:
如果选项以“-”开头(不是
“--”)与长选项不匹配,但
与短期权匹配,是吗
改为解析为短选项
--
mangetopt_long_only
我想说,为了“正确的gnu/linux风格”,您应该使用getopt_long(),并为大多数选项提供长选项(有时只提供长选项)。大多数命令行界面都遵循这一点。在我看来,以下情况通常是正确的:
- 用户喜欢长而自然的语言选项,因为它们易于记忆
- 编写脚本包装具有数百个选项的程序的用户喜欢短选项
- 使用类似的方法从模板中为您编写代码
- 只使用长选项(通常是个坏主意)
- 试着把你的程序减少到52个选项(a-z a-z)(通常是个坏主意)
- 当短选项变成不带参数的开关时,实现选项,对带参数的开关使用长选项
- 一系列其他方法对您来说非常有意义,但对用户来说却毫无意义
无论如何,为了结束我冗长的回答,通常最好尽可能保持compat getopt()行为。从用户那里获取指令的代码只是做生意的成本,因此,如果可能的话,您应该完全关注如何获得更好的用户体验。argp_parse比getopt_long有什么优势?我快速查看了gengetopt,我只会在有很多选项的程序中使用它。。