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

相关推荐

  • 抓包获取QQ好友IP地址

    作者:网海过客 原文连接:https://www.chinasa.net/archives/326.html 原理:通过抓包软件,抓取QQ进程,向QQ好向发送UDP数据包,获取QQ好友IP地址 抓包软件:科来网络分析系统 步骤: 1、打开抓包软件,选择网卡,本地进程分析。 2、向QQ好友发起语音通话 3、在抓包软件里,找到QQ进程,数据包,过滤UDP协议,在…

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

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

    Linux干货 2015-04-04
  • 模块化的php编译amp和fpm化的php编译amp;

    编译安装amp 一,编译环境前准备工作 (1) 系统环境:CentOS 6,7     CentOS 6:apr, apr-util的版本为1.3.9,不适用于httpd-2.4;     CentOS 7:apr, a…

    Linux干货 2016-10-17
  • CentOS 更改改网卡名称

    1 查看你的CentOS7网卡名字叫什么(通常第一个网卡叫做eno16777736) ip addr 2 编辑配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 把配置文件里面所有eno16777736改为eth0 3 把网卡配置文件名字也修改一下 cd /etc/sysconfig/networ…

    2018-01-18
  • 学习linux命令和帮助

    一、初级命令: 命令的语法通用格式:  #COMMAND OPTIONS ARGUMRNTS OPTIONS:制定命令的运行特性 选项有两种表现形式:    段选项: -c    短选项:–word 例如 –help –human-readable ARGUM…

    Linux干货 2016-10-30
  • 马哥教育网络19期+第十五周课程练习

    1、总结sed和awk的详细用法;   a).sed命令 sed可以实现grep的大部分功能,而且还可以查找替换 [root@localhost ~]# sed '10'p -n 1.txt [root@localhost ~]# sed &#039…

    Linux干货 2016-08-22

评论列表(3条)

  • stanley
    stanley 2015-06-24 10:01

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

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

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

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

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