Linux学习之数据重定向

大纲:

一、数据重定向定义

二、数据重定向分类

三、数据重定向作用

四、示例


一、数据重定向:命令的运行的结果默认输出在监视器上,重定向就是把这个结果输出到其它地方或其它文件。

二、数据重定向分类:

1.标准输出: (standard output,简称stdout,代码为 1 ,使用 > 或 >>):命令执行成功输出的正确提示信息。

2.标准错误输出 (standarp error output,简称stderr,代码为 2 ,使用 2> 或 2>> ):命令执行失败输出的错误提示信息。

3.标准输入(standard input,简称stdin,代码为 0 ,使用 < 或 << ):键盘键入值。

三、作用:

1.保存屏幕输出信息。

2.后台运行的程序,不希望它显示(例如:任务计划中监控程序每个时间段采集数据命令,可以直接重定向为/dev/null)。

3.正确信息与错误信息分别输出。

四、示例:

1.标准输出: (standard output,简称stdout,代码为 1 ,使用 > 或 >>):命令执行成功输出的正确提示信息。

例1:查看/etc/inittab内容并重定向输出至/tmp/inittab.test.

[root@localhost ~]# cat /etc/inittab > /tmp/inittab.test

通过ls命令查看,发现/tmp目录下创建了inittab.test文件,且内容与/etc/inittab完全一致;由此可知,重定向输出指定的文件如果不存在,则创建此文件。

[root@localhost ~]# ll /tmp/ | grep init
 
-rw-r--r--. 1 root root 884 Jun 19 23:52 inittab.test

例2:查看/etc/issue文件内容并把结果重定向至已存在的/tmp/inittab.test,你再次查看inittab.test,会发现文件内容已改变;由此可知:重定向输出指定的位置如果已存在,则覆盖。

[root@localhost ~]# cat /etc/issue > /tmp/inittab.test 
[root@localhost ~]# cat /tmp/inittab.test
CentOS release 6.5 (Final)
Kernel \r on an \m

例3:内容追加;查看/etc/inittab并把结果重定向追加至/tmp/inittab.test中,另外如果目标位置文件不存在,则创建。

[root@localhost ~]# cat /etc/issue > /tmp/inittab.test 
[root@localhost ~]# cat /tmp/inittab.test CentOS release 6.5 (Final) Kernel \r on an \m
.
.
.
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

2.标准错误输出 (standarp error output,简称stderr,代码为 2 ,使用 2> 或 2>> ):命令执行失败输出的错误提示信息。

例4:据例3可知,/tmp/inittab.test文件里面是有内容的,如下图,我们再次把/etc/inittab重定向输出/tmp/inittab.test,当我们不小心把命令敲错了,把cat敲成了catt;cat一下,你会发现inittab.test里面没有任何内容了;由此可知,如果输出指定的文件已存在,

即使命令执行错误,也会清空目标文件内容。

[root@localhost ~]# catt /etc/inittab > /tmp/inittab.test 
-bash: catt: command not found 
[root@localhost ~]# cat /tmp/inittab.test 
[root@localhost ~]#
[root@localhost tmp]# sh hardcheck.sh &> out_file                 stdout、stderr合并输出至out_file

例5:合并重定向;如下两例,&表示合并的意思。

[root@localhost tmp]# sh hardcheck.sh > out_file 2> &1         stdout输出至out_file,std_err输出至stdout
[root@localhost tmp]# sh hardcheck.sh > /tmp/out_right 2>/tmp/out_err   
[root@localhost tmp]# cat /tmp/out_right 
model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz 
model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz 
MemTotal: 1012352 kB 
[root@localhost tmp]# cat out_err 
hardcheck.sh: line 7: cd: /abd: No such file or directory 
[root@localhost tmp]#

例6:分别重定向:执行脚本,标准输出重定向至/tmp/out_right;标准错误输出重定向至/tmp/out_err;执行完成后,你会发现stdout、stderr已分别保存至/tmp/out_right、/tmp/out_err文件。

黑洞/dev/null,黑洞,故名思义,可以吞噬其范围内的任何东西;如果我们把输出指向/dev/null,自然而然,输出会被吞噬。

例7:把std指向out_right,stderr指向/dev/null;就会发现stderr会部被丢弃了。

[root@localhost tmp]# sh hardcheck.sh > out_right 2> /dev/null 
[root@localhost tmp]# cat out_right 
model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz 
model name  : Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz 
MemTotal: 1012352 kB 
[root@localhost tmp]#

3.标准输入(standard input,简称stdin,代码为 0 ,使用 < 或 << ):键盘键入值。

例8:把键盘输入值保存到/tmp/in_file。

[root@localhost ~]# cat > /tmp/in_file   ==>in_file存在则覆盖,不存在则新建
this is test file.                                        ==>键盘输入值保存值in_file
hello.world! 
==>输出完成后,可以通过快捷键Ctrl+d中止输入信号。
[root@localhost ~]# cat /tmp/in_file      ==>查看保存后信息
this is test file. 
hello.world!

例9:<<表示结束输入字符,在stdin时,输入紧跟<<的字符表示结束输入的意思。

[root@localhost ~]# cat > in_file <<end   ==><<后代表结束输入字符
> hao are you! 
> Welcome! 
> end                                                       ==>输入end回车离开
[root@localhost ~]# cat in_file                  ==>查看in_file,只有输入的前两行
hao are you! 
Welcome!


原创文章,作者:老鼠上了猫,如若转载,请注明出处:http://www.178linux.com/5593

(0)
老鼠上了猫老鼠上了猫
上一篇 2015-06-24 09:39
下一篇 2015-06-24 10:02

相关推荐

  • zabbix表分区(适用于zabbix2.0.x,zabbix2.2.x和zabbix2.4.x)

    本文主要介绍了zabbix进行数据库表分区的方法:         在系统监控中,zabbix已经代替了nagios+cacti,zabbix以其良好的图形展示和高度自定义赢得了很多运维人员的喜爱。但是由于在工作中,zabbix跑的时间过长(我们公司跑了将近3年),web页面经常卡顿,监控…

    Linux干货 2015-10-27
  • HAProxy初探及简单案例_Net21_第二周

    前言 随着互联网业务的迅猛发展,大型电商平台和门户网站对系统的可用性和可靠性的要求越来越高,高可用集群、负载均衡集群成为一种热门的系统架构解决方案。在众多的负载均衡解决方案中,有基于硬件的负载均衡设备,例如F5、Big-IP等,也有基于软件的负载均衡产品,如LVS、Nginx以及本文介绍的HAProxy等。在软件的负载均衡产品中,又分为两种实现方式,分别是基…

    Linux干货 2016-07-22
  • man帮助

                                        正确使用 man帮助      在生产过程中,我们会遇到不同的技术故…

    2017-05-30
  • N25-第11周博客作业

    1、详细描述一次加密通讯的过程,结合图示最佳。 第一步:他们需要实现协商好对称加密算法,单向加密算法,公钥加密算法,交换公钥等。 第二步:B用户想要将数据传给A,首先需要使用单向加密算法取出数据的特征码,并用自己的私钥对这段特征码进行加密(数字签名),B用户生成临时对称密钥,并用对称密钥加密整段数据,B用户使用 A用户的公钥加密一次性对称密钥,附加在整段数据…

    Linux干货 2017-05-21
  • Linux基础学习总结(三)

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次: [leexide@leeblog ~]$who | cut -d" " -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。 last -n&nbs…

    Linux干货 2016-10-03
  • 8.1_Linux习题和作业

    7.28 作业 1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中 1 # cat /etc/issue | tr 'a-z' 'A-Z'whoi > /tmp/issue.out 2、将当前系…

    Linux干货 2016-08-04

评论列表(3条)

  • stanley
    stanley 2015-06-24 10:01

    修改了部分样式看起来更美观,添加了标签可以增加seo搜索命中

    • 老鼠上了猫
      老鼠上了猫 2015-06-24 13:51

      @stanley很赞,效果完全不一样了,非常感谢!

    • 老鼠上了猫
      老鼠上了猫 2015-06-24 13:54

      @stanley审核之后不能得新编辑了吗,我想把例5、例6调整下?