在shell中,咱们常常要将一些指令执行的结果进行保存,或者想让一些指令执行的错误信息不显示到屏幕上,那么咱们就须要用到数据流重定向功能。先介绍一下stdout, stderr, stdinshell
stdout和stderr的内容默认显示到屏幕,而stdin的内容默认从键盘输入。bash
标准输出重定向使用符号: >(1>) 和 >>(1>>)code
标准错误输出重定向使用的符号:2> 和 2>>file
标准输入重定向使用符号:< 和 <<数据
4. >是1>的简写,>>是1>>的简写。重定向
[aliao@localhost ~]$ echo "aliao" > aliao.txt > 将是stdout重定向到aliao.txt [aliao@localhost ~]$ ls -a >> dir.txt > 将是stdout重定向到dir.txt,以累加的方式
[aliao@localhost ~]$ cat > newfile < oldfile > 将stdin重定向到oldfile,将stdout重定向到newfile
[aliao@localhost ~]$ find /home > stdout.txt 2> stderr.txt > 将stdout重定向到stdout.txt 将stderr重定向到stderr.txt
[aliao@localhost ~]$ find /home .bashrc > stdout.txt 2>&1 > stdout重定向到stdout.txt,而后再将stderr重定向到stdout.txt [aliao@localhost ~]$ find /home .bashrc > stderr.txt 1>&2 > stderr向到stderr.txt, 再将stdout向到stderr.txt
cat > aliao.txt << EOF 键盘输入的内容 ... EOF
当从键盘输入内容直到EOF时,cat就中止读入数据了。EOF使用户自定义的一个终止符号(此处我是用的是EOF),两个EOF之间的内容会被读取。di
补充内容:关于/dev/null
/dev/null是一个黑洞设备,能够吃掉任何导入该设备的信息。若是用户想要将一些输出信息或者错误信息丢弃而不显示到屏幕或者导入到文件的话,那么能够直接导入到/dev/null将其丢弃。文件
[aliao@localhost ~]$ find /home .bashrc > userBash.txt 2> /dev/null > 将正确的结果保存到文件userBash.txt,将错误信息丢弃。