Linux命令行开关和参数是否有标准?

这是关于一个程序的调用,而不是任何语言或parsing器(尽pipe我确定parsing器库的select可以依赖于此)。 看,我已经使用了很多Linux命令行工具。 还有一些明显的模式。 ' – '在单个字母前面有短期选项,多个不带参数的选项可以组合,' – '在长期版本的选项之前,等等。

但是,在某些情况下,大写字母用于反转选项。 所以,'-d'可能意味着作为守护进程运行,但是'-D'将作为守护进程运行。 (如果你不想要的话,为什么不省略这个选项呢?这个问题从来不清楚,但实际上是相当普遍的,所以我认为必须有一些原因。)但是在某些程序中,资本是一个完全不相关的select。 如果“-d”作为守护进程运行,则“-D”可能会启用debugging模式。 这背后有什么总的原则,哪个最好选? 或者我们只是在处理“无论什么作品”?

除了(或者不是)带参数的选项之外,还有一些命令只采用单独的参数。 cp就是一个很好的例子。 除了几个很less使用的切换之外,它接收到的最后一个参数被假定为目标,并且选项列表和目的地之间的任何参数被假定为源。 有没有一个经验法则,当依赖于这样的顺序是“好的”,而不是使用明确的选项标志与参数?

Solutions Collecting From Web of "Linux命令行开关和参数是否有标准?"

一般来说,是的。

  • IEEE
  • GNU getopt

ESR在他的“UNIX编程艺术”一书中收集了大量有关这方面的信息。 这是一个片段。

-一个
全部(没有参数)。 如果有一个GNU风格的所有选项,对于一个只是它的同义词的人来说是相当令人惊讶的。 例如:fuser(1),fetchmail(1)。

追加,如焦油(1)。 这通常与-d删除。

-b
缓冲区或块大小(带参数)。 设置关键缓冲区大小,或(在与存档或管理存储介质有关的程序中)设置块大小。 例如:du(1),df(1),tar(1)。

批量。 如果程序本质上是交互式的,则可以使用-b来禁止提示或设置适合于接受来自文件而不是人类操作员的输入的其他选项。 例如:flex(1)。

-C
命令(带参数)。 如果程序是一个通常从标准输入接受命令的解释器,则预期将-c参数的选项作为一行输入传递给它。 这个惯例对于炮弹和炮弹般的口译员来说特别强大。 例子:sh(1),ash(1),bsh(1),ksh(1),python(1)。 比较下面的-e。

检查(不带参数)。 检查文件参数对命令的正确性,但实际上不执行正常处理。 通常用作解释命令文件的程序的语法检查选项。 例子:getty(1),perl(1)。

http://catb.org/~esr/writings/taoup/html/ch10s05.html查看完整列表

Linux / GNU命令行界面遵循POSIX标准。 GNU在其标准中提到了这一点: http : //www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html 。

命令行语法也是单一Unix规范的一部分,但–long-options是一个GNU创新IIRC。

请参阅: http : //pubs.opengroup.org/onlinepubs/7908799/xbd/utilconv.html

但是,是的,这个标准是作为getopt实现的。