我们知道,执行一个shell命令行时通常会执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件。那么若想将信息的输出方式进行转换则可以进行输入输出重定向。
1、输入重定向
cat > test.txt
进行键盘输入
结束ctrl+d
[root@mmmm ~]# cat >test.txt
hhhddddkkkkvvveeeeekkkksss
[root@mmmm ~]# cat test.txt
hhhddddkkkkvvveeeeekkkksss
重定向到多个目标(tee)
命令1 | tee[-a ] 文件名| 命令2
把命令1的STDOUT保存在文件中,做为命令2的输入
-a 追加
•
使用:
–
保存不同阶段的输出
–
复杂管道的故障排除
–
同时查看和记录输出
[root@localhost ~]# echo 1.5+3 |tee ha.txt |bc
4.5
[root@localhost ~]# echo 1.5+3 |tee ha.txt
2、输出重定向
> 或 1> 表示正确输出重定向
> 若文件不存在,则创建,若文件已存在,则覆盖
>> 若文件不存在,则创建,若文件已存在,则追加
[root@localhost ~]# echo 1.5+3 |tee ha.txt
1.5+3
[root@localhost ~]# echo 'hello' >wsy.txt
[root@localhost ~]# echo 'hello' >ha.txt
[root@localhost ~]# cat wsy.txt
hello
[root@localhost ~]# cat wsy.txt
hello
[root@localhost ~]# echo 'i am fine' >>ha.txt
[root@localhost ~]# cat ha.txt
hello
i am fine
2> 表示错误输出重定向
2> 若文件不存在,则创建,若文件已存在,则覆盖
2>> 若文件不存在,则创建,若文件已存在,则追加
&> 表示全部输出重定向(正确错误都定向)
&> 若文件不存在,则创建,若文件已存在,则覆盖
&>> 若文件不存在,则创建,若文件已存在,则追加
1>&2 表示将正确结果转换为错误结果
2>&1 表示将错误结果转换为正确结果