现在的位置: 首页 > 综合 > 正文

POSIX约定与GNU长选项

2012年09月21日 ⁄ 综合 ⁄ 共 1152字 ⁄ 字号 评论关闭
POSIX 标准钟关于程序名、选项和参数方面的约定

  1. 程序名不应该少于 2 个字符,且不多于 9 个字符
  2. 程序名应该只包含小写字母和阿拉伯数字
  3. 选项名应该是单字母或单数字的字符,多数字选项应该是不允许的。 -W 选项为专指供应商而预留
  4. 所有选项应该以 '-' 开始
  5. 对于那些不需要参数的选项来说,将多个 '-' 后面的选项聚合在一起应该是可以的(例如,'foo-a-b-c' 和 'foo-abc' 应该同样处理)
  6. 当选项确实需要参数的时候,参数与选项之间应该用空格分隔开(例如,'fgrep -f patfile' )。然而,POSIX 标准考虑到过去的实践,有时选项和操作数可以在同一个字符串中:'fgrep -fpatfile'。实际上,getopt() 和 getopt_long() 函数将 '-fpatfile' 解释称 '-f patfile' ,而不是 '-f-p-a-t...'
  7. 选项参数不应该是可选的
  8. 如果选项接受的参数有多个值,那么程序应该将参数作为一个字符串接收进来,字符串中的这些值用逗号或空白符分隔开。如:myprog -u "arnold,joe,jane" ( 以逗号分隔开 );myprog -u "arnold joe jane" (以空白字符分隔开)
  9. 选项应该在操作数之前出现在命令行上。Unix 版本的 getopt() 强迫选项遵守这个约定,GNU 版本的 getopt() 默认没有这个约定,不过你可以告诉它这么做
  10. 特殊参数 '--'  指明所有参数都结束了。命令行中后面的任何参数都被认为是操作数,即使它们以 '-' 开始
  11. 选项如何排列没有关系。然而,对于相互排斥的选项,当一个选项覆盖其他选项的设置时,那么(可以说)最后一个选项起作用。如果带参数的选项出现重复,那么程序应该按顺序处理这些选项参数。例如,'myprog -u arnold -u jane' 和 'myprog -u "arnold,jane"‘ 是相同的(你必须自己处理这些参数,getopt() 不能处理这种情况)。
  12. 允许操作数的顺序影响程序的行为。但这些程序应该用文档来说明这些情况。
  13. 读写指定文件的程序应该将单个的参数 ’-‘ 作为有意义的标准输入或标准输出来对待(或者作为一个适合于该程序的参数来对待)。

GNU长选项

GNU鼓励程序员使用--help、--verbose等形式的长选项。这些选项不仅不与POSIX约定冲突,而且容易记忆,另外也提供了在所有GNU工具之间保持一致性的机会。GNU长选项有自己的约定:

  对于已经遵循POSIX约定的GNU程序,每个短选项都有一个对应的长选项。

  额外针对GNU的长选项不需要对应的短选项,仅仅推荐要有。

  长选项可以缩写成保持惟一性的最短的字串。

  选项参数与长选项之间或通过空白字符或通过一个'='来分隔。

  选项参数是可选的(只对短选项有效)。

  长选项允许以一个短横线为前缀。


抱歉!评论已关闭.