day13-重定向

什么是重定向

将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中。

为何要使用重定向

1.当屏幕输出的信息很重要,而且希望保存重要的信息时;
2.后台执行中的程序,不希望他干扰屏幕正常的输出结果时;
3.系统的例行命令,例如定时任务的执行结果,希望可以存下来时;
4.一些执行命令,我们已经知道他可能出现错误信息,想将它直接丢掉时;
5.错误日志与正确日志需要分别输出至不同的文件保存时;

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

当运行一个程序时通常会自动打开三个标准文件,分别是标准输入、标准输出、错误输出


image.png

进程将从标准输入中得到数据,将正常输出打印至屏幕终端,将错误的输出信息也打印至屏幕终端
PS:进程是使用文件描述符(file descriptors)来管理打开文件的


image.png

输出、输入重定向

输出重定向

重定向就是用来改变标准输出或者标准错误输出的一个指向

1>  标准输出重定向(覆盖) 
1>>标准输出重定向(追加)
2>  标准错误输出重定向(覆盖)
2>>标准错误输出重定向(追加)
&>/dev/null  混合输出(覆盖)
&>>/tmp/t.log  混合输出(追加)

案例1:标准输出重定向(每次都会覆盖文件之前的内容)


image.png
[root@oldboy ~]# ifconfig ens32 > 1.txt

案例2:标准输出重定向(在文件的尾部添加内容)


image.png
[root@oldboy ~]# echo "123" >> 1.txt

案例3:错误输出重定向


image.png
将错误输出重定向至一个文件
[xc@oldboy ~]$ find /etc/ 2>1.txt
将正确输出和标准输出重定向至不同的文件文件
[xc@oldboy ~]$ find /etc/ >1.txt 2>2.txt

案例4:正确和错误都输入到相同的位置


image.png
将标准输出和标准错误输出重定向到同一个文件,混合输出
[xc@oldboy ~]$ find /etc/ &>1.txt 
合并两个文件至一个文件
[xc@oldboy ~]$ cat 1.txt 2.txt >3.txt

案例5:正确和错误都输入到相同文件


image.png
[xc@oldboy ~]$ find /etc/ >1.txt 2>&1

案例6:重定向到空设备/dev/null


image.png
[root@oldboy ~]# ls /root /error >1.txt 2>/dev/null
[root@oldboy ~]# ls /root /error >1.txt &>/dev/null

案例7:脚本中使用重定向

[root@oldboy ~]# vim ping2.sh
ping 10.0.0.200 -c 1 -W 1 >/dev/null
if [ $? -eq 0 ];then
   echo "10.0.0.200 is up." >>up.txt
else
   echo "10.0.0.200 is down." >>down.txt
fi
[root@oldboy ~]# chmod +x ping2.sh
[root@oldboy ~]# ./ping2.sh
输入重定向

输入重定向,即原本从键盘等上获得的输入信息,重定向由命令的输出作为输入。
案例1:从文件中读入输入

没有改变输入的方向,默认键盘
[root@oldboy ~]# mail alice 
Subject: hello
1111 
2222
3333
.   #结束
EOT

检查是否收到邮件
[root@oldboy ~]# su - alice
[root@oldboyi ~]# mail

输入重定向,来自于文件
[root@oldboyi ~]# mail -s "test01" alice < /etc/hosts

案例2

[root@oldboy ~]# grep "root" </etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

案例3:

[root@oldboy ~]# dd if=/dev/zero of=/file1.txt bs=1M count=20
[root@oldboy ~]# dd </dev/zero >/file2.txt bs=1M count=20

案例4:脚本中打印菜单的一种使用方法

[root@oldboy ~]# vim vm.sh
cat <<-EOF
+------------------- --- ---- --- ---- --- --- ---- --- --+ ||
| ====================== | 
| 虚拟机基本管理 v5.0 |
| by xuliangwei |
| ====================== | 
| 1. 安装 KVM |
| 2. 安装或重置 CentOS-6.9 | 
| 3. 安装或重置 CentOS-7.4 | 
| 5. 安装或重置 Windows-7  | 
| 6. 删除所有虚拟机 |
| q. 退出管理程序 |
+------------------- --- ---- --- ---- --- --- ---- --- --+ 
EOF

进程管理技术

1.管道操作符号“|”,主要用来连接左右两个命令,将左侧的命令的标准输出,交给右侧的标准输入
PS:无法传递标准错误输出至后着命令


image.png

PS:管道命令符能进一步掌握命令之间的搭配使用方法,进一步提高命令输出值的处理效率
2.管道中的tee技术


image.png

选项:-a 追加
[root@oldboy ~]# ifconfig |grep "inet " |tee -a ip.txt |awk '{print $2}'
10.0.0.200
127.0.0.1
[root@oldboy ~]# cat ip.txt 
        inet 10.0.0.200  netmask 255.255.255.0  broadcast 10.0.0.255
        inet 127.0.0.1  netmask 255.0.0.0

3.xargs 参数传递,主要让一些不支持管道的命令可以使用管理技术

[root@oldboy ~]# which cat| xargs ls -l
-rwsr-xr-x. 1 xc root 54160 Oct 31  2018 /usr/bin/cat
[root@oldboy ~]# ls | xargs rm -fv
removed ‘1.txt’
removed ‘2.txt’
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、.什么是重定向 定义: 将原本要输出到屏幕的数据信息,重新定向到某个指定的文 件中。 二、为什么要使用重定向 ...
    矮寨坡的M3阅读 241评论 0赞 0
  • 一,什么是重定向 将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中。预备知识:当运行一个程序时通常会自动打...
    不大不小的小雯子阅读 395评论 0赞 0
  • day13 2019.8...
    丶向阳阅读 322评论 0赞 1
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,819评论 0赞 5
  • 1.什么是重定向 2.为何要使用重定向 3.标准输入与输出 进程将从标准输入中得到数据,将正常输出打印至屏幕终端,...
    江枍_a99e阅读 318评论 0赞 3

友情链接更多精彩内容