重定向

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磁盘管理

    面对一块硬盘,我们该如何使用它呢?本文从机械硬盘结构,分区,格式化,和挂载四个层次进行介绍。 一、机械硬盘结构 现在服务器使用机械式硬盘是主流,因为其造价低,容量大,和固态硬盘相比读写性能要差很多。机械硬盘主要由以下几个部件构成:转轴Spindle,盘片Platter,机械臂Boom,磁头Head。工作机制是马达带动盘片高速旋转,磁头对盘片进行擦写数据或读取…

    Linux干货 2016-09-01
  • 运维必备技能之磁盘管理

    磁盘分区的三个工具 1、fdisk交互式工具         fdisk /dev/sdb进入交互界面         交互式界面的几个常用命令        …

    Linux干货 2017-03-14
  • Linux文件类型及颜色标识整理

    Linux文件类型及颜色标识整理 M21陆东贵 使用工具: ls命令     ls –l:以常格式显示文件及目录的详细信息     例如:-rw-r–r–  1 root root       0 10月 …

    Linux干货 2016-10-18
  • 创建yum源及httpd源码编译

    创建yum源及源码编译httpd yum本身相比于rpm来说,能够将有依赖的包文件一次性的安装完成,是相当的方便的。 yum的服务器支持的几种格式: http、https、ftp、file 1、yum基础命令 1、yum命令 yum [options] [command] [package …] [options]: 基本不用 [command]: re…

    Linux干货 2017-08-08
  • 重定向及tr命令详解及其在管道中的使用简述

    一、标准输入和输出及其重定向         1.标准输入指的是来自键盘的输入,通常用0来表示;标注输出是默认输出到当前终端窗口,用1来表示;标准错误输出同样默认输出到当前终端窗口,用2来表示。除标准输出之外,我们还可以通过重定向来更改默认的输入和输出方式。   &nb…

    Linux干货 2016-08-11
  • 磁盘分区

    磁盘分区 一、分区方式两种 MBR分区不能超过2个T按柱面分区主引导记录存放在,0磁道0扇区 512bytes前446字节存放bootloader (软件程序)64字节:分区表16个字节表示一个有效的分区 故只能分4个主分区。大于4个需要创建扩展分区,并在其中创建逻辑分区。2字节 55AABPT分区GPT:GUID(Globals Unique Identi…

    Linux干货 2016-08-29