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

相关推荐

  • vim浅谈

            在Linux的世界里,绝大部分的配置文件都是以ASCII的纯文本形式存在的,所以作为一名优秀的Geek,熟练掌握一种文本编辑辑器是非常重要的。         Linux世界中的文本编辑器有很多…

    Linux干货 2015-04-27
  • 任务计划

    所谓计划任务就是指某一个时间系统自动做一件事情如输入指令或者保存文件等等 计划任务分两种:一次性计划任务命令(at)和周期性计划任务命令(crontab)at的用法:如果当前时间为2017年6月6日 at 18:00 2017-06-6 w > /root/who.txt init 0 (输入ctrl+d结束编辑…

    Linux干货 2017-06-07
  • Linux进程与作业1

    Linux进程与作业 操作系统的组成部分:硬件,kernel,lib, 系统调用–>调用kernel lib调用–> 库调用,kernel调用 运行用户代码–>用户模式–>用户空间; 运行kernel–>内核模式–>内核空间; 内核的功用:进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能 C…

    Linux干货 2016-08-02
  • 初探SElinux

    SELinux介绍: SELinux: Secure Enhanced Linux(安全强化的linux),是美国国家安全局(NSA=The National Security Agency)和 SCC(Secure Computing Corporation)开发的Linux的一个强制访问控制的安全模块。2000年以GNU GPL发布,Linux内核2.6…

    Linux干货 2016-10-09
  • N21天天第十五周课程练习

    1、总结sed和awk的详细用法; sed Sed本质上是一个编辑器,但是它是非交互式的;同时它又是面向字符流的,输入的字符流经过sed的处理后输出。 Sed本身是一个管道命令,可以分析standard input的,主要是用来分析关键字的使用、统计等,此外还可以将数据进行替换、删除、   选取特定行等功能 格式:sed&nbs…

    Linux干货 2016-12-05
  • 快速运用NFS共享web页面

    环境:centos7.3最小化三台,前期准备关闭防火墙和selinux 目的:通过文件共享,使客户端访问web服务器时是同样的页面。 拓扑图: 优势:减少WEB服务器的压力。 一、安装软件 NFS、WEB1、WEB2: #yum install nfs-utils -y WEB1、WEB2: #yum install httpd -y 二、配置 NFS: #…

    2017-04-27

评论列表(3条)

  • stanley
    stanley 2015-06-24 10:01

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

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

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

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

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