Day13-重定向,管道技术

一,什么是重定向

  • 将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中。
    预备知识:当运行一个程序时通常会自动打开三个标准文件,分别是标准输入、标准输出、错误输出

    标准输入,标准输出,错误输出图解

二,为何要使用重定向

标准输出重定向(每次都会覆盖文件)


#标准输出重定向, 先清空,后写入, 如果文件不存在则创建
[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
  1. 当屏幕输出的信息很重要,而且希望保存重要的信息的时候
  2. 后台执行中的程序,不希望他干扰屏幕正常的输出结果时
  3. 系统的例行命令,例如如定时任务的执行结果,希望可以保存下来
  4. 一些执行命令我们已经知道他可能出现错误信息,想将他直接丢弃掉的时候
  5. 错误日志与正确日志需要分别输出至不同的文件保存时
  • < :输入重定向
  • ;: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 用于将不支持管道的命令支持管道左边命令的输出作 为参数进行传递*

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容