什么是标准用法参数样式?

时间:2013-02-14 05:27:27

标签: command-line-arguments

我正在为我正在进行的一些研究制作一些命令行工具。我希望这些工具能够遵循Unix中关于命令行程序的常用惯例。

我应该使用标志还是仅列出参数?

program one two three
program -a one -b two -c three
  • 输入文件通常在命令列表中的位置,或者<它更适合程序?
  • 输出文件名怎么样?
  • 我应该为输出格式指定文件扩展名,还是让我的程序自动将正确的扩展名设置为?
  • 当用户输入无效命令时,是否有原型“正确用法”消息?
  • 是否需要“--help”或“-h”?

此外,是否有某种头文件我可以包含哪些有助于管理这些?

2 个答案:

答案 0 :(得分:1)

如果您正在寻找“标准”,那么您可能会比查看GNU's Standards for Command Line Interfaces更糟糕。其他标准可用。

就此编码而言,请查看boost::program_options。这不仅可以节省您自己编写的代码,而且还可以很好地格式化用户呈现的选项(您要求的原型“正确用法”消息)。

回答您的具体问题:

  
      
  • 输入文件通常在命令列表中的位置,或者是否更好?它进入程序?
  •   

我希望这些在命令行的末尾出现。就像在GNU grep中一样。如果您只处理一个文件并希望stdin可用作输入源,那么大多数用户都不会感到惊讶。

如果您的命令处理大量文件,那么必须在文件名之前指定一个开关。想想cat

  
      
  • 输出文件名怎么样?
  •   

-o--output选项相当常见。如果您的文件只有一个输入和一个输出,那么program inputfile outputfile不会让很多用户感到惊讶。如果没有指定输出文件,也许你会输出到stdout;这不会是异常行为,并允许您的用户通过其他命令(例如grepless等... )管道输出,他们也可以重定向使用>将文件标准输出到文件。

  
      
  • 我应该为输出格式指定文件扩展名,还是让我的程序自动将正确的扩展名设置为?
  •   

这可能是一个争论的问题。如果我指定了输出文件名,我希望在没有程序更改名称的情况下找到该文件(或在提示之后替换)。

  
      
  • 当用户输入无效命令时,是否有原型“正确用法”消息?
  •   

再次使用GNU grep作为示例:

grep: unrecognized option '--incorrect'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

这不会让太多用户感到惊讶,并且如果他们输入了一个拼写错误而没有用信息淹没他们,那么他们就会指向正确的方向。

  
      
  • 是否需要“--help”或“-h”?
  •   

这取决于您的客户!当这个选项不可用时,我觉得很沮丧。

答案 1 :(得分:0)

通常说,标志用于提供选项,参数用于传递信息。如果你有输入,输出文件作为命令行参数,使用像-i -o这样的标志,所以顺序无关紧要。如果您想(并且需要)提供文档,则需要-h。