unix-stdin/stdout/stderr

标准输入和输出重定向

外壳和许多UNIX命令采取其输入标准输入( stdin ),写输出到标准输出  stdout ),写错误输出到标准错误  stderr )。 默认情况下,标准输入连接到终端键盘和标准输出和错误到终端屏幕。

的,显示方式结束的终端文件在默认的标准输入,通常是<Ctrl-d>。

本人重定向的输入/输出,例如一个文件,是通过指定的目的地的目的地所需的命令行使用重定向元字符后跟。

C Shell的家庭

为C shell的重定向形式家庭的有:

字符

行动

>

重定向标准输出

>&

重定向标准输出和标准错误

<

重定向标准输入

>!

重定向标准输出;覆盖文件,如果它存在

>&!

重定向标准输出和标准错误;覆盖文件,如果它存在

|

标准输出重定向到另一个命令(管)

>>

附加标准输出

>>&

附加标准输出和标准错误

一个标准的输入和输出重定向命令的形式是:

命令 - [ 参数 ] [ 选项 ] < 输入文件 >“ 输出文件

如果你正在使用csh和没有noclobber变量设置,使用>>&重定向输出将覆盖任何现有文件的名称。 设置noclobber可防止这种情况。 >!>&!总是势力文件被覆盖。 使用>>>>&输出追加到现有文件。

重定向可能失败在某些情况下:1)如果您有变量noclobber设置和您尝试将输出重定向到一个现有的文件,而不强迫一个覆盖,2)如果您重定向输出到一个文件,你没有写访问,并3)如果您将输出重定向到一个目录。

例子:

% who > names

标准输出重定向到文件名为names

% (pwd; ls -l) > out

这两个命令的输出重定向到文件名为out

% pwd; ls -l > out

重定向输出ls命令只对文件名为一out

输入重定向可以是有用的,例如,如果你写一个Fortran程式,它期望从终端输入,但你希望它从文件中读取。 在下面的例子, myprog ,这是写标准输入读取和写入标准输出重定向到读myin和写入myout 

 %myprog <myin> myout 

您可以取消发送到空设备重定向输出和/或错误导致的, /dev/null  这个例子显示了两个输出和错误重定向:

 %谁“&/ dev / null的 

要重定向标准错误和输出到不同的文件,您可以使用分组:

 %(猫myfile的> myout)“&myerror 

Bourne Shell的家庭

Bourne shell的重定向使用一个不同的格式,其中包括数字。 这些数字指的是文件描述符数字(0标准输入,1标准输出,2标准错误)。 例如, 2>重定向文件描述符2,或标准错误。 & n是文件语法重定向到一个特定的开放。 例如2>&1重定向2(标准误差)到1(标准输出),如果一已被重定向到一个文件,二去那里了。 其他文件描述符号码顺序分配给其他打开的文件,也可以在shell脚本中明确地引用。 为Bourne shell的家庭重定向形式有:

字符

行动

>

重定向标准输出

2>

重定向标准错误

2>&1

标准错误重定向到标准输出

<

重定向标准输入

|

管另一个命令的标准输出

>>

附加到标准输出

2>&1|

管标准输出和标准错误到另一个命令

请注意, <>假设标准输入和输出,分别为默认,所以关闭数字0和1可离开。 一个标准的输入和输出重定向命令的形式是:

 $ 命令 - [ 选项 ] [ 参数 ] < 输入文件 >“ 输出文件

重定向可能失败在某些情况下:1)如果您有变量noclobber设置和您尝试将输出重定向到一个现有的文件,而不强迫一个覆盖,2)如果您重定向输出到一个文件,你没有写访问,并3)如果您将输出重定向到一个目录。

例子:

$ who > names

直接输出到文件的标准命名的names

$ (pwd; ls -l) > out

这两个命令直接输出到文件名为out

$ pwd; ls -l > out

直接输出ls命令只对文件名为一out

输入重定向可以有用的,如果你写一个程序,它期望从终端输入你想提供的文件中。 在下面的例子, myprog ,这是写标准输入读取和写入标准输出重定向到读myin和写入myout 

 $ myprog <myin> myout 

您可以取消发送到空设备重定向输出和/或错误, /dev/null  这个例子显示了错误的唯一标准的重定向:

谁$ 2“/ dev / null的 

要重定向标准错误和输出(注意,分组在Bourne shell没有必要)不同的文件:

 $猫myfile的> myout 2> myerror
posted @ 2011-01-10 15:23  kelin1314  阅读(1189)  评论(0编辑  收藏  举报