zoukankan      html  css  js  c++  java
  • POSIX约定与GNU长选项

    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的长选项不需要对应的短选项,仅仅推荐要有。

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

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

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

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



  • 相关阅读:
    利用js读出xml制作地区联动下拉框
    用EXTJS做一个右下角的泡泡窗口(一)
    用Json.net 解析 QQ城市达人中的地址列表
    用httpwebrequest访问跨域网站时对CookieContainer的处理
    asp.net 中PDF模式下省略水晶报表自己的预览
    asp.net 取得URL信息
    利用WebClient 制作调试Http的post 和 get 工具
    超级网银就是一砣 SHI
    SAP R/3 Testing[2]
    [1.1]用WebService返回歌曲的曲目信息.借鉴[星集工作室 张麟 Dephi版]
  • 原文地址:https://www.cnblogs.com/johnpher/p/2570605.html
Copyright © 2011-2022 走看看