重定向

Linux下定义了三种I/O设备:

标准输入(STDIN):用0表示,默认的标准输入设备是键盘;

标准输出(STDOUT):用1表示,默认的标准输出设备是当前终端;

标准错误(STDERR):用2表示,默认的标准错误输出设备是当前终端;

I/O重定向即改变默认的位置

1 标准输出重定向

(1)将标准输出重定向到其他终端

重定向

重定向

/dev/pts/1代表伪终端1,在伪终端1执行hostname命令(查看主机名),并将其重定向至伪终端2。

(2)将标准输出重定向到文件

重定向

cal命令用于查看日历,cal 2017 > /app/cal.log 将2017年的日历重定向到app目录下的cal.log文件。

总结: hostname与cal 2017 都是可正确执行的命令,若不重定向,会产生标准输出,即将两命令执行的结果输出到当前终端,所以a、b中实际上都省略了1,即写成hostname 1> /dev/pts2或cal 2017 1> /app/cal.log 也可以,因为1代表标准输出,>是重定向符号。

2 标准错误重定向

重定向

在根目录下不存在err文件或目录,所以ls  /err的结果是标准错误:

若不重定向,会将其结果输出至当前终端,如(1)所示;ls  /err 1>/app/err.log 中的1>表示将标准输出重定向至/app/err.log,但是ls /err执行的结果只有标准错误,没有标准输出,由于未对标准错误重定向,所以仍然将标准错误重定向至当前终端,如(2)所示;

ls  /err 2>/app/err.log中的2表示标准错误,该命令实现了将标准错误重定向至/app/log文件,所以没有在当前终端打印错误提示,而是将错误提示保存到/app/log文件中,如(3)所示。

3 既有标准输出, 又有标准错误,将二者重定向至同一文件

重定向

ls /boot的执行结果是正确的,若不重定向,会将其结果输出至当前终端,如(1)所示;

ls /err的执行结果是错误的,若不重定向,也会将其结果输出至当前终端,如(2)所示;

重定向

(1)ls /boot /err > /app/all.log 2>&1中的2>&1表示将标准错误转化为标准输出,然后>将转化后所得的标准输出重定向到/app下的all1.log文件,如(1)所示;

(ls /boot /err 2>&1) > /app/all1.log 与ls /boot /err > /app/all.log 2>&1等价,如(2)所示。

重定向

(2)ls /boot /err 2> /app/all3.log 1>&2 中的1>&2表示将标准输出转化为标准错误,然后2>将转化后所得的标准错误重定向到/app下的all3.log文件,如(1)所示;

(ls /boot /err 1>&2) 2> /app/all4.log与ls /boot /err 2> /app/all3.log 1>&2等价,如(2)所示。

重定向

(3) ls /boot /err &> /app/all5.log中的&>表示将标准输出和标准错误合并为同一个数据流后再进行重定向,如(1)所示;

  ls /boot /err >& /app/all5.log /app/all5.log与 ls /boot /err &> /app/all5.log等价,如(2)所示。

4 标准输入重定向

重定向

cat命令用于查看文本文件,既有标准输入又有标准输出。输入cat并回车后光标会移至下一行等待接收来自键盘的标准输入,并将其输出至标准输出设备即当前终端。图中黄色线条标识部分即cat的标准输出。

重定向

cat  /etc/issue命令用于查看/etc/issue文件的内容,其中定义了系统登录成功后的提示信息。用/etc/issue文件代替键盘做标准输入,即cat从/etc/issue接收标准输入,然后输出至标准输出即当前终端。

重定向

用/etc/issue文件代替键盘做标准输入,即cat从/etc/issue接收标准输入,然后将标准输出重定向到/app/issue文件,所以 cat < /etc/issue > /app/issue执行完后当前终端不显示任何内容,用 cat  /app/issue 可查看重定向到该文件下的内容。

原创文章,作者:以梦为马,如若转载,请注明出处:http://www.178linux.com/83461

(1)
以梦为马以梦为马
上一篇 2017-07-31 07:40
下一篇 2017-07-31 08:54

相关推荐

  • 关于生命中出现的那个男人

    绝对真男人     一个人的一生,会遇到很多很多的男人,哦,也会遇到很多很多的女人,但是我们今天就谈谈男人吧.在这芸芸众生中对于我们这些志向于在linux求发展谋生存的人来说,有个男人会是所有linux爱好者的良师益友.这个男人就是man,这个男人是绝对的男人,因为他是在linux这个系统中无所不知的那个男人. &nb…

    Linux干货 2016-10-27
  • MairaDB之基于openssl的主从复制

    一、配置openssl   1、   在master server(node0)上根CA的搭建(及生成自签名证书) [root@node0 ~]# cd /etc/pki/CA/ [root@node0 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) Gen…

    2016-11-19
  • redis-cli的一些有趣也很有用的功能

    redis-cli我们最常用的三个参数就是-h、-p、-a选项,分配用来指定连接的redis-server的host、port和登录密码。 通过redis-cli –help发现,redis-cli还提供了其他很多的参数和功能。 1)-x-x选项从标准输入(stdin)读取最后一个参数。 比如从管道中读取输入: echo -en “chen.qun” | r…

    Linux干货 2015-03-16
  • 用shell脚本打等腰三角新

       *   ***  ***** *******   预览图形 发现图形由三个变量组成 行数n 每行的空格数a 和每行的符号数b 关系是    a=n-当前行数    b=2xn-1   并且空格都在符号前 根据关系编写脚本 #!/bin/bash read…

    Linux干货 2016-08-22
  • 设计模式(四)原型模式Prototype(创建型)

    1.   概述 我们都知道,创建型模式一般是用来创建一个新的对象,然后我们使用这个对象完成一些对象的操作,我们通过原型模式可以快速的创建一个对象而不需要提供专门的new()操作就可以快速完成对象的创建,这无疑是一种非常有效的方式,快速的创建一个新的对象。 例子1:孙悟空拔下一嘬猴毛,轻轻一吹就会变出好多的孙悟空来。 例子2:寄个快递下面是一个邮寄快…

    Linux干货 2015-06-25
  • lvs–各类型的原理及实现—(原理篇)

    前言:    LVS即是linux虚拟服务器,是一个虚拟的服务器集群系统,目的是使用集群技术和linux操作系统实现一个高性能、高可用的服务器。采用IP负载均衡技术和基于内容请求分发技术,将请求负载均衡地转移到不同的服务器上执行,从而将一组服务器构成一个高性能、高可用的虚拟服务器。此篇的内容只包含两种较为常用的LVS技术,分别是LVS-N…

    Linux干货 2016-10-27