重定向

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
下一篇 2017-07-31

相关推荐

  • 计算机的组成及功能

    计算机的组成有中央处理器(包含逻辑运算器和控制器)、内存、输入设备、输出设备    逻辑运算器主要负责程序的运算和逻辑的判断、控制器是协调各组件与各单元的工作。 内存是与CPU进行沟通的桥梁,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。 输入设备是用户和计算机系统之间进行信息交换的主要装置之一。 输出设备是外…

    Linux干货 2017-07-02
  • Linux基础之权限管理(含SUID\SGID\STICKY和ACL)

    概述     Linux系统是一个多人多任务的操作系统,系统上同时可能有很多人登录,每个人都会利用系统上的各类资源完成一定的操作。那么如何合理的规范这些用户的行为,保证资源的合理分配,则就需要用到权限管理的相关内容了。权限管理是Linux系统上最基础,也是最重要的一部分内容,本章就简要说明下权限管理的相关内容。内容主要…

    Linux干货 2016-08-04
  • Linux命令格式、获取帮助、文件系统

    一、Linux的命令     (一)、概念和意义:             发起一个命令:请求内核将某个二进制程序运行为一个进程;      &nbs…

    Linux干货 2016-08-15
  • 你会用Python写洗脑神曲吗?

    Python实战班-学员学习成果展示 同样是周末,有些人是闲聊着度过,有些人是学习充电度过。 人与人最大的区别,是下班后的时间。看你怎么去利用。 周末时,马哥Python实战班的学员正在认真上课,他们中的不少人,月薪在10k以上,甚至月薪20k以上。 但他们没有虚度周末时光。 #最浪费时间的就是:思而不学+犹豫不决。# 马哥Python实战班二期的小伙伴们才…

    Linux干货 2016-07-05
  • python快速入门之数据类型

        Python 是 90 年代初由 Guido Van Rossum 为了打发圣诞节而创建的语言。如今它已是当前最流行的程序语言之一.     Python的关键要素有以下几点:1.基本数据类型;2.对象引用;3.组合数据类型;4.逻辑操作符;5.控制流语句;6.算数操作符…

    Python干货 2015-12-10
  • AWK

    GNU awk 全称:Aho,Weiberger,Kernighan,是三个作者的名字,所以简称为awk awk:报告生成器,主要用来格式化文本输出的,它能够实现在处理文本文件时对文档中的字段有条件的显示,而且将显示的结果用非常美观的文本形式给予输出。我们所用的awk其实就是gawk,他是一个符号链接指向gawk的。 gawk – pattern…

    Linux干货 2016-09-23