为什么长字符串的选项带有双破折号?

为什么长字符串的选项带有双破折号?

为什么命令行标志--recursive有两个破折号而不是只有-recursive

我知道缩写版本只是-r

为什么这些标志使用两个连字符而不是一个连字符?

在要求使用两个破折号之前,带有一个破折号的标志最多可以包含多少个字符?

答案1

问题是,您可以这样说ls -laR;它相当于ls -l -a -R。因此-recursive将被解释为-r -e -c -u -r -s -i -v -e

答案2

对于使用单破折号或双破折号作为程序选项,没有确切的规则。如果一个人决定自己处理选项,他可以实现任何他想要的。但如果程序员不想找麻烦,而是想让程序使用常见的、易于识别的方式,那么他可以使用标准函数来getopt/getopt_long处理长选项(如您所问的长字符串)作为双破折号,短选项(单个字符)以单破折号为前缀。该函数getopt是 C 语言的一部分。在基于 Unix 的系统上,可以在利用解析单破折号和双破折号(长)选项<unistd.h>的标准 shell 中使用相同的函数。man getopt 1

在要求使用两个破折号之前,带有一个破折号的标志最多可以包含多少个字符?

如果使用上面描述的功能,那么短选项只能有一个字符。

相关内容