【发布时间】:2012-02-15 22:50:40
【问题描述】:
这更多是关于程序的调用,而不是任何语言或解析器(尽管我确信解析器库的选择取决于此)。看,我使用了很多 Linux 命令行实用程序。并且有一些明显的模式; '-' 在短选项的单个字母之前,不带参数的多个选项可以组合,'--' 在选项的长版本之前,等等。
但是,在某些情况下,大写用于反转选项。因此,“-d”可能意味着作为守护程序运行,但“-D”将不作为守护程序运行。 (如果您不想要它,为什么不直接省略选项?这一直不清楚,但它实际上很常见,所以我认为一定有一些原因。)但是在某些程序中,大写字母是一个完全不相关的选项。如果“-d”作为守护进程运行,“-D”可能是启用调试模式。这背后是否有某种总体原则,哪个是最好的选择?还是我们只是在处理“任何有效的”?
还有一些命令,除了(或代替)带参数的选项之外,只接受单独的参数。 cp 就是一个很好的例子;除了几个很少使用的切换之外,它接收的最后一个参数被假定为目标,并且选项列表和目标之间的任何参数都被假定为源。当“可以”依赖这样的顺序而不是使用带有参数的显式选项标志时,是否有经验法则?
【问题讨论】:
-
没有通用的命令行选项标准,尽管
getopt约定是一个很好的起点。要回答您关于反转选项的问题,默认值通常在配置文件中指定,因此您需要强制启用和强制禁用切换。 -
另一个很好的参考:Perl 长选项处理:Getopt::Long.
标签: linux coding-style command-line-interface