Linux下的I/O重定向与管道

一、I/O设备

    Linux中,对系统进行操作时,就需要I/O设备与系统产生交互,同时会产生三种数据,标准输入(0)、标准输出(1)、标准错误(2)。其中标准输入(stdin)默认接受来自键盘的输入,标准输出(stdout)和标准错误(stderr)默认向终端窗口输出,改变默认输出和出入的位置,就是I/O重定向。

二、输出重定向到文件

>:把标准输出重定向到文件中

    blob.png

2>:把标准错误重定向到文件中

    blob.png

&>:把所有输出重定向到文件中,或:COMMAND > /path/to/file.out 2> &1(注意命令顺序)

    blob.png

“>”会使原来的文件中所有的内容被覆盖,使用“set -C”可以禁止覆盖已有的文件,如果想强制覆盖,可以使用“>|”选项。使用“set +C”可以解锁禁止覆盖。

>>:在原有的内容上追加重定向的标准输出内容

2>:重定向标准错误输出流覆盖原文件

2>>:重定向标准错误输出流追加至原文件

&>>:标准输出和错误输出追加到文件中,或:COMMAND >> /path/to/file.out 2>> &1 (注意命令顺序

把同一个命令的标准输出和错误输出分别定向到不同的文件:

COMMAND > /path/to/file.out 2> /path/to/error.out

当需要合并多个程序的输出时,使用括号“()”

    blob.png

三、tr命令的使用


    tr用于从标准输入中转换和删除字符,格式为:tr [OPTION]… SET1 [SET2],其中SET1用于查询匹配字符,SET2用于替换和删除字符。常用的选项有:

-c –complerment:取字符集的补集

-d –delete:删除所有属于SET1字符集的字符

-s –squeeze-repeats:把连续重复的的字符以单独一个字符表示

    blob.png

-t –turncate-set1:将第一个字符集对应的字符转化为第二个字符集对应的字符

    blob.png

   

四、重定向到输入

重定向输入“<”可以将键盘以外的设备输入到命令中,使用某些可以能够接受文件导入的标准输入,例如:

tr 'a-z' 'A-Z' < /etc/issue  把/etc/issue中的小写字符转换为大写字符 

   blob.png

tr -d abc < /etc/fstab 删除/etc/fstab中的abc

cat > file.txt 把键盘输入的内容写到文件中,按“ctrl+d”结束输入

cat > filea < fileb 把fileb中的内容覆盖到filea中

使用“<<终止词”可以把多行命令从键盘导向STDIN,直到“终止词”位置的所有文本都发送到STDIN。终止词所在行不能出现除本身以外的任何字符,包括空格,否则本行的终止符失效。

    blob.png

五、管道

管道可以把一个进程的标准输出流与另一个进程的标准输入流连接起来。bash中用“|”在两个命令之间创建管道。例如:

less:逐页查看输入

    ls -l /etc |less

mail:通过电子邮件发送输入

    echo "test email" | mail -s "text" stu28 

    把test email中的内容以邮件的形式发送给用户stu28

lpr:把输入发送给打印机

    $ echo "test print" | lpr -P printer_name    

六、tee命令

功能说明:读取标准输入的数据,并将其内容输出成文件。

语法:tee [OPTION]… [FILE]…

补充说明:tee命令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成为文件。

常用参数:

-a –append:附加到已有文件的后面,而不是覆盖原文件。

-i –ignore-interrupts:忽略中断信号

–help:在线帮助

–version:显示版本信息。

命令1 | tee 文件名 | 命令2:把命令1的STUDOUT保存在文件中,然后管道输入给命令2

使用:

    保存不同阶段的输出

    复杂管道的故障排除

    同时查看和记录输出

原创文章,作者:zhanghuanyu,如若转载,请注明出处:http://www.178linux.com/27286

(1)
zhanghuanyuzhanghuanyu
上一篇 2016-08-04
下一篇 2016-08-04

相关推荐

  • PHP字符串的编码问题

        大家都知道,不同字符编码,其在内存占用的字节数不一样。如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节。     PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。     使用substr截取中…

    Linux干货 2015-10-22
  • 运维必备技能之磁盘管理

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

    Linux干货 2017-03-14
  • 安装RPM包 rpm与yum工具的使用

    1.认识yum与rpm工具.                 在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续 “下一步” 即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下。所以你要学会如何在linux下安装一…

    Linux干货 2016-08-26
  • N25-第10周博客作业

    请详细描述CentOS的启动流程     启动第一步–加载BIOS         当打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它,这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息…

    Linux干货 2017-03-10
  • 自用vim环境参数设置

    基本显示设置 set nu mber 显示行号 syntax on 语法高亮 set cursorline 用浅色高亮当前行 set ruler 显示标尺 set showcmd 输入的命令显示出来,看的清楚些 set cmdheight=1 命令行(在状态行下)的高度,设置为1 set tabst…

    Linux干货 2017-04-24
  • 防火墙之iptables使用

    一、防火墙简介           Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;        软件防火墙(软件逻辑):一般寄生在操作系统…

    2017-06-18