7.5 数据流重导向
7.5.1 什么是数据流重导向
n 标准输入 (stdin) :代码为 0 ,使用 < 或 << ;
n 标准输出 (stdout):代码为 1 ,使用 > 或 >> ;
n 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;
设备 | 设备名 | 文件描述符 | 类型 |
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
u 1> :以覆盖的方法将『正确的数据』输出到指定的档案或装置上;
u 1>>:以累加的方法将『正确的数据』输出到指定的档案或装置上;
u 2> :以覆盖的方法将『错误的数据』输出到指定的档案或装置上;
u 2>>:以累加的方法将『错误的数据』输出到指定的档案或装置上;
通俗的讲,重定向输出就是把要输出的文件信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏)。
[root@localhost ~]# cat stdout #有stdout文件,内容为stdout
[root@localhost ~]# echo "aaa" #标准输出
[root@localhost ~]# echo "aaa">stdout #以>重定向输出
[root@localhost ~]# cat stdout #stdout文件内容被覆盖
[root@localhost ~]# echo "bbb">>stdout #以>>重定向输出
[root@localhost ~]# cat stdout #stdout文件内容被追加
[root@localhost ~]# tty #查看tty
[root@localhost ~]# echo "aaa">/dev/pts/1 #发送信息
[root@localhost ~]# echo >passwd
[root@localhost ~]# cat passwd >passwd.bak
[root@localhost ~]# set -C #设置禁止>覆盖
[root@localhost ~]# echo "aaa">aaa #覆盖失败
bash: aaa: cannot overwrite existing file
[root@localhost ~]# echo "aaa">>aaa #>>不受影响
[root@localhost ~]# echo "bbbbbbbb" >|aaa
[root@localhost ~]# cat calf #标准错误输出
cat: calf: No such file or directory
[root@localhost ~]# cat calf 2>stderr #以>重定向错误输出
[root@localhost ~]# cat stderr #查看stderr内容
cat: calf: No such file or directory
[root@localhost ~]# cat aaa #标准错误输出
cat: aaa: No such file or directory
[root@localhost ~]# cat aaa 2>>stderr #以>>重定向错误输出
[root@localhost ~]# cat stderr #查看stderr内容
cat: calf: No such file or directory
cat: aaa: No such file or directory
输入重定向:是指不使用系统提供的标准输入端口,而进行重新的指定。换言之,输入重定向就是不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备。
[root@localhost ~]# cat stdout #标准输入
[root@localhost ~]# cat <stdout #以<重定向输入
[root@localhost ~]# cat <<"eof" #以<<重定向输入
[root@localhost tmp]# cat aaa bbb
cat: bbb: No such file or directory #标准错误输出
[root@localhost tmp]# cat aaa bbb >stdout 2>stderr
[root@localhost tmp]# cat stdout
[root@localhost tmp]# cat stderr
cat: bbb: No such file or directory
[root@localhost tmp]# cat aaa bbb >stdout 2>&1
[root@localhost tmp]# cat stdout
cat: bbb: No such file or directory
[root@localhost tmp]# cat aaa bbb >stdout 2>>stdout
[root@localhost tmp]# cat stdout
cat: bbb: No such file or directory
[root@localhost tmp]# echo >stdout #清空stdout
[root@localhost tmp]# cat aaa bbb >stdout 2>stdout
[root@localhost tmp]# cat stdout
cat: bbb: No such file or directory
[root@localhost tmp]# echo >stdout
[root@localhost tmp]# cat aaa bbb &>stdout
#[root@localhost tmp]# cat aaa bbb >&stdout 亦可
[root@localhost tmp]# cat stdout
cat: bbb: No such file or directory
[root@localhost tmp]# echo >stdout
[root@localhost tmp]# cat aaa bbb &>>stdout
[root@localhost tmp]# cat stdout
cat: bbb: No such file or directory
本章同步视频:https://edu.51cto.com/sd/e4874