Shell | 标准输入输出重定向

2019-06-05  本文已影响0人  Ada54

一、Linux 标准输入输出

二、标准输入输出重定向

1. 标准输入输出重定向是什么?

2. 标准输入输出重定向的命令


一、Linux 标准输入输出

Linux运行程序时,通常会从键盘获取输入,然后运行后将结果返回到终端上,这就是标准的输入输出。标准输入输出的数据流动方向,标准输入:数据流动方向从键盘到程序;标准输出:数据流动方向从程序到终端。

在Linux 中,标准输入设备(键盘)和标准输出设备(终端)在内的计算机硬件都是文件。而且为了表示和区分已经打开的文件,每个文件Linux都会分配一个 ID,称为文件描述符(File Descriptor)。标准输入输出过程,会涉及到三个文件:

二、标准输入输出重定向

1. 标准输入输出重定向是什么?

标准输入输出重定向就是为了改变数据流动的方向。很多时候,我们需要从某文件中读取出内容作为输入;或者将结果存到一个文件中。这时,数据输入方向:从文件到程序;数据输出方向:从程序到文件。

接下来我们看看如何使用标准输入输出重定向。

2. 标准输入输出重定向的命令

注: 

(1) > 和 1> ,> 和 2> 的区别?

>  是  1> 的简写,习惯会将 1 省去,直接写成 > ; > 或者 1> 都表示将正确信息输出。

> 是将正确信息输出;2> 是将错误信息输出;1 和 2  对应了文件描述符。

(2)> 和 >> 的区别?

> 以覆盖的方式输出; >> 以追加的方式输出。

(3)在书写 2> 或者 2>> 时,数字和符号中间不能有空格。

(4) 2>&1

【例1】理解 > 和 2> 

[oracle@orcl temp]$ ll

total 4

-rw-r--r-- 1 oracle oinstall 14 Jun  5 10:02 test.out

[oracle@orcl temp]$ ll test.out test.err

ls: test.err: No such file or directory

-rw-r--r-- 1 oracle oinstall 14 Jun  5 10:02 test.out

在当前目录下有 test.out 文件,木有 test.err 文件;当我执行 ll test.out test.err 操作时,终端显示出 ls: test.err: No such file or directory 是错误信息,显示出 -rw-r--r-- 1 oracle oinstall 14 Jun  5 10:02 test.out 是正确信息

[oracle@orcl temp]$ ll test.out test.err > file.out 2> file.err   #重定向

[oracle@orcl temp]$ cat file.out     #查看文件内容

-rw-r--r-- 1 oracle oinstall 14 Jun 5 10:02 test.out

[oracle@orcl temp]$ cat file.err

ls: test.err: No such file or directory

执行 ll test.out test.err > file.out 2> file.err 可以看到终端中没有显示出任何信息,而是将返回的信息重定向了。将正确信息输出到了 file.out 文件,将错误信息输出到了 file.err 文件。分别查看文件的内容,可以看到对应的输出信息。

【例2】理解  2>&1  和 1>&2

2>&1 将错误返回值传递给1输出通道, &1表示1输出通道;

1>&2 将正确返回值传递给2输出通道,&2表示2输出通道。

将正确和错误返回值都重定向输出到 file.out 文件中

[oracle@orcl temp]$ ll test.out test.err > file.out 2>&1

[oracle@orcl temp]$ cat file.out

ls: test.err: No such file or directory

-rw-r--r-- 1 oracle oinstall 14 Jun  5 10:02 test.out

参考链接:https://blog.csdn.net/evsqiezi/article/details/54943737

                  http://c.biancheng.net/view/942.html

上一篇下一篇

猜你喜欢

热点阅读