开发Linux命令行实用程序[2]

[入库:2005年9月19日] [更新:2007年3月24日]

本文简介:

  但是使用标准错误重定向,也可以将错误重定向至文件。例如:
  
  
  $ command 2>error_file
  
  在这个例子中,command 的正常输出在屏幕显示,而任何错误消息都被写至 error_file。
  
  可以将标准输出和标准错误都重定向至不同的文件,如下所示:
  
  
  $ command >output_file 2>error_file
  
  这里,将标准输出写至 output_file,而将所有写至标准错误的内容都写至 error_file。
  
  如果已将标准输出重定向至某一位置,也可以将标准错误重定向至同一位置。例如:
  
  
  $ command 2>&1
  
  在这个例子中,符号“2>&1”表示“将标准错误发送至标准输出被重定向的任何位置”,因此错误和正常的消息都将在屏幕上显示。当然,这是多余的,因为下面简单的调用
  
  
  $ command
  
  将做同样的事。在标准输出已被重定向至其它源,而您希望在同一命令行上将标准错误也写至同一目的地时,该特性就非常有用。例如:
  
  
  $ command >output_file 2>&1
  
  在这个例子中,已首先将标准输出重定向至 output_file;因此“2>&1”将使标准错误也被重定向至 output_file。
  
  准则 4. 执行
  程序应该有可能既独立运行,也可以作为管道的一部分运行,如上面的示例所示。该特性可以重新叙述如下:不管程序的输入源(文件、管道或终端)和输出目的地是什么,程序都应该以同样的方式工作。这使得在如何使用它方面有最大的灵活性。
  
  准则 5. 命令行参数
  如果程序可以根据其输入或用户的首选参数有不同的行为,则应将它编写为接受名为选项的命令行参数,这些参数允许用户指定什么行为将用于这个调用。
  
  作为选项的命令行参数由前缀“-”(连字符)标识。另一类参数是那些不是选项的参数,也就是说,它们并不真正更改程序的行为,而更象是数据名称。通常,这类参数代表程序要处理的文件名,但也并非一定如此;参数也可以代表其它东西,如打印目的地或作业标识(有关的示例,请参阅“man cancel”)。
  
  可能代表文件名或其它任何东西的非选项参数(那些没有连字符作为前缀的)如果出现的话,应该在命令的最后出现。
  
  通常,如果指定了文件名参数,则程序把它作为输入。否则程序从标准输入进行读取。
  
  所有选项都应以“-”(连字符)开头。选项可以附加参数。
  
  Linux 实用程序语法图看起来如下:
  
  
  $ command mandatory_opts [ optional_opts ] [ other_args ]
  
  其中:
  
  command 是命令本身的名称。
  mandatory_opts 是为使命令正常工作必须出现的选项列表。
  optional_opts 是可指定也可不指定的选项列表,这由用户来选择;但是,其中一些参数可能是互斥的,如同 selpg 的“-f”和“-l”选项的情况(详情见下文)。
  other_args 是命令要处理的其它参数的列表;这可以是任何东西,而不仅仅是文件名。
  在以上定义中,术语“选项列表”是指由空格、跳格或二者的结合所分隔的一系列选项。
  
  以上在方括号中显示的语法部分可以省去(在此情况下,必须将括号也省去)。
  
  各个选项看起来可能与下面相似:
  
  
  -f (单个选项)
  -s20 (带附加参数的选项)
  -e30 (带附加参数的选项)
  -l66 (带附加参数的选项)
  
  有些实用程序对带参数的选项采取略微不同的格式,其中参数与选项由空格分隔 — 例如,“-s 20” — 但我没有选择这么做,因为它会使编码复杂化;这样做的唯一好处是使命令易读一些。
  
  以上是 selpg 支持的实际选项。
  
  selpg 程序逻辑
  如前面所说的那样,selpg 是从文本输入选择页范围的实用程序。该输入可以来自作为最后一个命令行参数指定的文件,在没有给出文件名参数时也可以来自标准输入。
  
  selpg 首先处理所有的命令行参数。在扫描了所有的选项参数(也就是那些以连字符为前缀的参数)后,如果 selpg 发现还有一个参数,则它会接受该参数为输入文件的名称并尝试打开它以进行读取。如果没有其它参数,则 selpg 假定输入来自标准输入。
  
  参数处理
  
  

本文关键:开发Linux命令行实用程序
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top