I/O即输入输出,在linux中标准的输入输出设备为键盘和显示器,当我们执行一条命令时,默认的输出结果会显示在屏幕上,如果我们不想让它显示在屏幕上时,就需要使用输出重定向来让它显示在其他设备或保存在某个文件中。
重定向即修改默认的输入输出设备为其他设备或文件;
命令执行过程的数据传输情况
当我们执行一个命令的时候,会由文件读取数据,经过处理后,再将结果输出到屏幕;Standard Output和Standard Output Error分别代表标准输出和标准错误输出;
在linux系统中,所有的操作都是对文件进行操作,而对文件的操作是利用文件描述符(File Descriptor、FD)来实现的;I/O重定向通常与FD有关,shell的FD通常有10个0~9;常用的FD有三个:
0:表示Stdin(标准输入)
1:表示Stdout (标准输出)
2:表示 Stderr(标准错误输出)
标准输出是命令执行成功后所返回的信息
>:以覆盖方式将标准输出重定向输出到其他设备或文件
>>:以追加方式将标准输出重定向输入到其他设备或文件
标准错误输出是命令执行失败后所返回的信息
2>:以覆盖方式将标准错误输出重定向到其他设备或文件
2>>:以追加方式将标准错误输出重定向到其他设备或文件
标准输入是由键盘所输入的数据
<:将原本有键盘输入的数据改为由文件内容来取代
<<:意为此处文档,当输入遇到<<后面跟的内容是会终止输入
当使用一条命令处理一个文件时,还要将处理的结果继续进行后续处理,就可以使用管道来实现将上一条命令的结果交给下一条命令执行;
管道(pipe):操作符 | ,仅能处理上一条命令的标准输出信息,对标准错误输出没有处理能力
注意:
1、管道命令只能处理上一条命令的STDOUT信息,不能处理STDERR信息
2、管道右边命令必须是能够接受标准输入流命令
管道和I/O重定向