linux shell 标准输出,bash标准输出、错误输出、重定向标准输出2>&1

应该允许输入来自以下两种方式:

在命令行上指定的文件名。例如:

$ command input_file

在这个例子中,command 应该读取文件 input_file。

标准输入(stdin),缺省情况下为终端(也就是用户的键盘)。例如:

$ command

这里,用户输入 Control-D(文件结束指示符)前输入的所有内容都成为 command 的输入。

但是,使用 shell

操作符“

$ command < input_file

这里,command 会读它的标准输入,不过 shell/内核已将其重定向,所以标准输入来自 input_file。

使用 shell 操作符“|”(pipe)也可以使标准输入来自另一个程序的标准输出,如下所示:

$ other_command | command

这里,other_command 的标准输出(stdout)被 shell/内核透明地传递至 command

的标准输入。

输出应该被写至标准输出,缺省情况下标准输出同样也是终端(也就是用户的屏幕):

$ command

在这个例子中,command 的输出出现在屏幕上。

同样,使用 shell 操作符“>”(重定向标准输出)可以将标准输出重定向至文件。

$ command > output_file

这里,command 仍然写至它的标准输出,不过 shell/内核将其重定向,所以输出写至 output_file。

或者,还是使用“|”操作符,command 的输出可以成为另一个程序的标准输入,如下所示:

$ command | other_command

在这个例子中,shell/内核安排 command 的输出成为 other_command 的输入。

错误输出应该被写至标准错误(stderr),缺省情况下标准错误同样也是终端(也就是用户的屏幕):

$ command

这里,运行 command 时出现的任何错误消息都将被写至屏幕。

但是使用标准错误重定向,也可以将错误重定向至文件。例如:

$ 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。

程序应该有可能既独立运行,也可以作为管道的一部分运行,如上面的示例所示。该特性可以重新叙述如下:不管程序的输入源(文件、管道或终端)和输出目的地是什么,程序都应该以同样的方式工作。这使得在如何使用它方面有最大的灵活性。

如果程序可以根据其输入或用户的首选参数有不同的行为,则应将它编写为接受名为

选项的命令行参数,这些参数允许用户指定什么行为将用于这个调用。

作为选项的命令行参数由前缀“-”(连字符)标识。另一类参数是那些不是选项的参数,也就是说,它们并不真正更改程序的行为,而更象是数据名称。通

常,这类参数代表程序要处理的文件名,但也并非一定如此;参数也可以代表其它东西,如打印目的地或作业标识(有关的示例,请参阅“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” ―

但我没有选择这么做,因为它会使编码复杂化;这样做的唯一好处是使命令易读一些。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值