一,什么是重定向
- 将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中。
预备知识:当运行一个程序时通常会自动打开三个标准文件,分别是标准输入、标准输出、错误输出
标准输入,标准输出,错误输出图解
二,为何要使用重定向
标准输出重定向(每次都会覆盖文件)
#标准输出重定向, 先清空,后写入, 如果文件不存在则创建
[root@xuliangwei ~]# ifconfig eth0 > abc
标准输出重定向(会往文件的尾部添加内容)
#标准追加输出重定向, 向配置文件末尾追加内容
[xuliangwei@xuliangwei ~]$ echo "This is network conf" >> if
错误输出重定向
#正确输出以及错误输出重定向至一个文件
[root@xuliangwei ~]# useradd xuliangwei
[root@xuliangwei ~]# su - xuliangwei
#将标准输出和标准错误输出重定向到不同文件
[xuliangwei@xuliangwei ~]$ find /etc -name "*.conf" 1>a 2>b
正确和错误输出都到相同的位置
#将标准输出和标准错误输出重定向到同一个文件, 混合输出
[xuliangwei@xuliangwei ~]$ find /etc -name "*.conf" &>ab
#合并两个文件内容至一个文件
[xuliangwei@xuliangwei ~]$ cat a b > c
错误输出指到空设备
#将产生的任何数据放入黑洞设备,则视为丢弃。
[root@xuliangwei ~]# ls /root /error >ab 2>/dev/null
[root@xuliangwei ~]# ls /root /error >ab &>/dev/null
- 当屏幕输出的信息很重要,而且希望保存重要的信息的时候
- 后台执行中的程序,不希望他干扰屏幕正常的输出结果时
- 系统的例行命令,例如如定时任务的执行结果,希望可以保存下来
- 一些执行命令我们已经知道他可能出现错误信息,想将他直接丢弃掉的时候
- 错误日志与正确日志需要分别输出至不同的文件保存时
- < :输入重定向
- ;:cmd1;cmd2 前者命令执行成功还是失败,都执行后者命令
- &&:cmd1 && cmd2 前者命令执行成功,后者命令才会执行
- ||: cmd1 || cmd2 前者命令执行时失败,后者命令才会执行
- &: 将程序放入后台执行(screen)将程序放入后台
==============================================================
- 1.重定向? 将原本要输出到屏幕的数据信息,重新定向到某个指定的文 件中。
- 2.重定向使用场景?
- 3.标准输入\ 标准输出 错误输出?
程序运行起来后,变为进程, 会同时打开三个文件 标准输入标准输出错误输出.
标准输入 0 标准输出 1 错误输出 2 3+ - 4.标准输入输出 错误\ 与重定向之间有什么关系?
重定向就是用来改变标准输出 或者标准错误输出的一个指向.
1> 标准输出重定向 (覆盖)
1>> 标准输出重定向 (追加)
2> 标准错误输出重定向 (覆盖)
2>> 标准错误输出重定向 (追加)
&>/dev/null 混合输出 (覆盖) &>>/tmp/t.log 混合输出 (追加) - 5.输入重定向?
从文件中获取内容. < -
6.进程管道技术 |
将左边命令的标准输出 ---传递---> 右边命令的标准输入 ---> 标准输出| 错误输出
管道中的tee技术
tee 将左边命令的标准输出保存至文件或打印至终端, 但不影响管道数据的一个传递
xargs 用于将不支持管道的命令支持管道左边命令的输出作 为参数进行传递*