首页 > 代码库 > 重定向
重定向
标准输入:STDIN,描述符:0,默认为键盘。
标准输出:STDOUT,描述符:1,默认为显示器。
标准错误输出:STDERR,描述符:2,默认为显示器。
输入重定向:< 输出重定向:> 错误输出重定向:2> 错误的像正确的一样输出:2>&1 错误的和正确的输出到同一个文件:&> >:会覆盖原来文件里面的内容。 >>:保留原来文件里面的内容。称为追加输出。 2>>:错误追加
所谓的输入、输出重定向,就是改变原本输入、输出数据的来源。
当我们使用输出重定向修改配置文件时,可能由于马虎或者是其他的一些原因导致应该使用“>>”的,而使用了“>”,覆盖了原有文件的内容,这时可以通过如下方法设置一个开关,禁止覆盖已经存在的文件里面的数据。这个就是set
开启开关:set -C 关闭开关:set +C
示例:
[root@Server3 ~]# set -C [root@Server3 ~]# echo frame > aa -bash: aa: cannot overwrite existing file [root@Server3 ~]# cat aa redhat [root@Server3 ~]# set +C [root@Server3 ~]# echo frame > aa [root@Server3 ~]# cat aa frame [root@Server3 ~]#
如果文件不存在,则可以重定向数据到不存在的文件里面:
[root@Server3 tmp]# ll total 0 [root@Server3 tmp]# set -C [root@Server3 tmp]# echo frame > aa [root@Server3 tmp]# cat aa frame [root@Server3 tmp]# echo frame > aa -bash: aa: cannot overwrite existing file [root@Server3 tmp]#
如果使用了set -C,并且在不使用set +C的情况下,非要往文件里面重定向数据的话,可以在“>”后面跟上一个“|”,如下所示:
[root@Server3 tmp]# ll total 4 -rw-r--r-- 1 root root 6 Jul 2 23:12 aa [root@Server3 tmp]# set -C [root@Server3 tmp]# cat aa frame [root@Server3 tmp]# echo "Test" > aa -bash: aa: cannot overwrite existing file [root@Server3 tmp]# echo "Test" >| aa [root@Server3 tmp]# cat aa Test [root@Server3 tmp]#
<<:称为Here Document,此处文档,意思是在此处生成一个文档。<<后面跟的是文档结束符,通常使用的是EOF或者是END
示例:
[root@Server3 tmp]# cat > ifconfig-eth0 << EOF DEVICE=eth0 HWADDR=00:0C:29:00:01:23 BOOTPROTO=none ONBOOT=yes IPADDR=172.16.1.1 NETMASK=255.255.255.0 GATEWAY=172.16.1.1 USERCTL=no IPV6INIT=yes EOF [root@Server3 tmp]# cat ifconfig-eth0 DEVICE=eth0 HWADDR=00:0C:29:00:01:23 BOOTPROTO=none ONBOOT=yes IPADDR=172.16.1.1 NETMASK=255.255.255.0 GATEWAY=172.16.1.1 USERCTL=no IPV6INIT=yes [root@Server3 tmp]# 说明:这种方式常用于在脚本中生成一个文件。
如果既想输出到标准输出,又想保存到文件的话,则可以使用tee命令。
示例:
[root@Server3 tmp]# ifconfig bond0 | tee /tmp/aa bond0 Link encap:Ethernet HWaddr 00:0C:29:B5:49:97 inet addr:172.17.100.252 Bcast:172.17.100.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:feb5:4997/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:8533 errors:0 dropped:0 overruns:0 frame:0 TX packets:5832 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:923523 (901.8 KiB) TX bytes:669092 (653.4 KiB) [root@Server3 tmp]# cat /tmp/aa bond0 Link encap:Ethernet HWaddr 00:0C:29:B5:49:97 inet addr:172.17.100.252 Bcast:172.17.100.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:feb5:4997/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:8533 errors:0 dropped:0 overruns:0 frame:0 TX packets:5832 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:923523 (901.8 KiB) TX bytes:669092 (653.4 KiB) [root@Server3 tmp]#
本文出自 “HeZhang” 博客,请务必保留此出处http://hezhang.blog.51cto.com/1347601/1434036
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。