为什么命令行标志--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
在要求使用两个破折号之前,带有一个破折号的标志最多可以包含多少个字符?
如果使用上面描述的功能,那么短选项只能有一个字符。