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
下一篇 2015-06-24

相关推荐

  • LVS NAT模型演示

    LVS NAT模型演示 这里我们刻意将两个RS的web页面文件,提供为不同的内容(实际应用中,每个RS页面的内容要完全相同) 基本配置 [root@web1 ~]# route add default gw 192.168.110.130  –> web1服务器…

    2016-10-29
  • python第二周

    #python数据结构(list) ## 分类 数值型:int、float、complex、bool 序列对象:字符串 str   列表  list   元组  tuple 键值对: 集合 set   字典 dict   ## 数字的处理函数 math.e  math.pi: 自如常数和π round():  四舍六入五去偶 floor():  取…

    Linux干货 2017-09-23
  • 与正则表达式的第一次亲密接触

    Linux文本处理三剑客 grep:文本过滤(模式:psttern)工具 grep,egrep,fgrep (不支持正则表达式搜索) sed:stream editor,文本编辑工具 awk:Linux上的实现gawk,文本报告生成器 下面就先谈一谈:grep及正则表达式;egrep及扩展的正则表达式 grep grep:Goobal search REgu…

    Linux干货 2017-04-06
  • shell脚本练习

    习题1:打印99乘法表 #!/bin/bash # for ((j=1;j<=9;j++)) do for ((i=1;i<=j;i++)) do echo -e -n “${i}x${j}=$[${i}*${j}]\t” done echo done 习题2:写一个脚本(1)创建目录/tmp/dir-当前日期时间;例如/tmp/dir-2015…

    Linux干货 2017-05-22
  • Http协议中的各种长度限制总结

    HTTP1.0的格式 request(HTTP请求消息)结构:一个请求行.部分消息头,以及实体内容,其中的一些消息内容都是可选择的.消息头和实体内容之间要用空行分开. GET /index.html HTTP/1.1 //请求头,下面都是消息头.Accept: */*Accept-Languang:en-usConnection:keep-aliveHost…

    Linux干货 2015-04-04
  • linux用户管理实战

     1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登陆多次,则只显示一次即可。 [root@localhost ~]# who |cut -d ‘ ‘ -f1 |sort -u  2、取出最后登陆到当前系统的用户的相关信息。 [root@localhost ~]# who |tail -1  3、取出当前系统上被用户当做…

    2018-02-08

评论列表(3条)

  • stanley
    stanley 2015-06-24 10:01

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

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

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

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

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