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 14:40
下一篇 2016-08-04 14:41

相关推荐

  • 编译内核——制作最适合自己系统的内核

    编译内核: ·程序包的编译安装:         ./configure ,make ,make install ·前提:开发环境(开发工具、开发库),头文件:/usr/include ·开源:源代码–>可执行格式    &nbsp…

    Linux干货 2016-09-11
  • raid5 阵列

    1 fdisk 分区sdb2,sdd1,sde1, 2  新建raid5 [root@localhost ~]# mdadm -C /dev/md5 -a yes  -l 5  -n 3 -x 1 /dev/sdd1 /dev/sde1  /dev/sdf  /dev/sdb2  3   …

    Linux干货 2017-04-25
  • 第一周作业

    第一周作业 1、描述计算机的组成及其功能     计算机与操作系统:     CPU:运算器、控制器、寄存器、缓存     存储器:内存,RAM(Random Access Memory)     Input:下指令,提供数据  …

    Linux干货 2017-08-09
  • 网络管理之配置文件及一些命令的应用

    IP配置、信息、相关命令    IP地址     它们可唯一标识 IP 网络中的每台设备     每台主机(计算机、网络设备、外围设备)必须具有唯一的地址     IP 地址由两部分组成:   &nb…

    Linux干货 2016-09-22
  • 第八周博客作业

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态; 在线的主机使用绿色显示; 不在线的主使用红色显示; #!/bin/bash declare -i i=1 ping_172() { if ping -W 1 -c 1 172.16.250.$1 &> /dev/null; th…

    Linux干货 2017-05-22
  • CentOS 7源码安装httpd服务

    httpd的简介     httpd是一个开源软件,且一般用作web服务器来使用。目前最流行的web服务器软件叫做httpd,httpd还有一个俗称叫apache,Apache是一个软件基金会,httpd也是这个软件基金会的一个项目。在早期的http server就叫做apache,到了http server 2.0以…

    Linux干货 2016-08-24