基于Linux的数据流重定向

1、Linux默认提供了标准输入(stdin)、标准输出(stdout)、标准错误(stderr),三个特殊设备,也是三个数据流,用于终端的显示和和输出
2、三个文件描述符分别是:0,1,2,默认表现位置都指向了终端,多以打开仁义程序的时候,文件描述符至少是3,因为0,1,2已经被占用
3、

输出重定向:

      >      输出重定向到一个文件或设备 覆盖原来的文件
      >!     输出重定向到一个文件或设备 强制覆盖原来的文件
      >>    输出重定向到一个文件或设备 追加原来的文件
      <      输入重定向到一个程序
例如:ls ~ >1.txt #将输出的内容保存到1.txt中,文件不存在则创建,存在则清空
           ls / >>1.txt #将输出的内容保存到1.txt中,文件不存在则创建,存在则追加
错误重定向:
          2>      将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
          2>>    将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
          2>&1  将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
          >&      将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 c-shell
          |&       将一个标准错误 管道 输送 到另一个命令作为输入
例如:ls xxx 2> 1.txt #将错误内容保存到1.txt中
           ls xxx / &>1.txt #将标准输出和错误信息同时保存到1.txt中
输入重定向:
例如:cat>1.txt ,回车,输入内容,退出用ctrl + d,然后cat 1.txt
           #将标准输入重定向到1.txt中
/dev/nul/ :相当于一个黑洞,可以写入任何数据
/dev/zero: 可以从该文件中读取内容,永远都是0
4、在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
           1》标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
           2》标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
           3》错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>
5、为什么使用命令输出重定向:
          1》当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
          2》背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
          3》一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
          4》一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
          5》错误信息与正确信息需要分别输出时。

posted @ 2019-03-29 14:59  LJCHSYM  阅读(171)  评论(0编辑  收藏  举报