这更多的是关于程序的调用,而不是任何语言或解析器(尽管我确信解析器库的选择可以取决于此)。看,我使用过很多 Linux 命令行实用程序。并且有一些明显的模式; '-' 位于短选项的单个字母之前,可以组合不带参数的多个选项,'--' 位于长版本选项之前,依此类推。
但是,在某些情况下,大写字母用于“反转”选项。因此,“-d”可能意味着作为守护进程运行,但“-D”则表示不作为守护进程运行。 (如果你不想要的话,为什么不直接忽略这个选项呢?这从来都不清楚,但它实际上很常见,所以我认为一定有一些原因。)但是在某些程序中,大写是一个完全不相关的选项;它是一个完全不相关的选项。如果“-d”作为守护进程运行,“-D”可能会启用调试模式。这背后是否有某种总体原则,以及哪个是最好的选择?或者我们只是在处理“任何有效的事情”? 还有一些命令,除了(或代替)带有参数的选项之外,只接受单独的参数。 cp 就是一个很好的例子;除了几个很少使用的切换之外,它接收的最后一个参数被假定为目标,并且选项列表和目标之间的任何参数都被假定为源。当“可以”依赖这样的顺序而不是使用带参数的显式选项标志时,是否有经验法则?
-a
全部(无参数)。如果有一个 GNU 风格的 --all 选项,那么 -a 不是它的同义词,那将是相当令人惊讶的。示例:fuser(1)、fetchmail(1)。http://catb.org/~esr/writings/taoup/html/ch10s05.html
追加,如 tar(1) 中所示。这通常与 -d 配对进行删除。-b
缓冲区或块大小(带参数)。设置临界缓冲区大小,或者(在与归档或管理存储有关的程序中) media)设置块大小。示例:du(1)、df(1)、tar(1)。
批量。如果程序是自然交互的,-b 可以用来 抑制提示或设置其他适合接受输入的选项 来自文件而不是人类操作员。示例:flex(1)。-c
命令(带参数)。如果程序是一个通常从标准输入获取命令的解释器,则预计 -c 参数的选项将作为单行传递给它 输入。这个约定对于 shell 和 类似 shell 的解释器。示例:sh(1)、ash(1)、bsh(1)、ksh(1)、 蟒蛇(1)。比较下面的-e。
检查(不带参数)。检查文件的正确性 命令的参数,但实际上并没有正常执行 加工。经常被程序用作语法检查选项 解释命令文件。示例:getty(1)、perl(1)。请参阅完整列表:
BSD:没有破折号
GNU:双破折号 --