美文网首页
Shell | 标准输入输出重定向

Shell | 标准输入输出重定向

作者: Ada54 | 来源:发表于2019-06-05 10:46 被阅读0次

    一、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

    相关文章

      网友评论

          本文标题:Shell | 标准输入输出重定向

          本文链接:https://www.haomeiwen.com/subject/lxcgtctx.html