Linux管道

在学习Linux管道之前,我们首先需要了解流的概念:

只不过是一个可以使用库功能读取或写入的字节序列,库功能向应用程序隐藏了底层设备的细节。通过使用流,相同的程序可以使用独立于设备的方式从终端、文件或网络 socket 中读取,或向其中写入。

Linux shell 使用 3 种标准的 I/O 流,每种流都与一个文件描述符相关联:

1.stdin ,标准输入流,它为命令提供输入。它的文件描述符为 0。

2.stdout ,标准输出流,它显示来自命令的输出。它的文件描述符为 1。

3.stderr ,标准错误流,它显示来自命令的错误输出。它的文件描述符为 2。
输入流通常通过终端击键为程序提供输入。输出流通常向终端输出文本字符。最初的终端是 ASCII 打字机或显示终端,但现在更多是指图形桌面上的文本窗口。

 

许多文本处理命令(过滤器)可以从标准输入流或从文件中获取输入,如果想将命令 command1 的输出作为过滤器 command2 的输入,这个时候需要使用管道符 (|) 连接两个命令:

command1 parameter1 | command2 parameter2

上面的例子中,command1的标准输出流被管道导入/重定向为command2的标注输入流

管道操作符具有如下特点:

(1)管道只能处理前一命令的标准输出流,无法处理标准错误流;

(2)管道符右边的命令必须能够接受标准输入流作为输入才行;

 

管道符右边的常用命令如下:

选取命令:cut,grep
排序命令:sort,wc,uniq
双重数据量:tee
字符转换命令:tr,expand,col
切割命令:split
参数代换:xargs

使用文件作为管道命令的起始输入:

方法1:使用cat命令将需要处理的文件输出至stdout,然后作为第一个命令的标准输入:

cat file | command1 parameter1 | command2 parameter2

方法2:对第一个命令使用<操作符将输入重定向为需要处理的文件,然后在剩余的管道下中导出该命令的输出

command1 < file | command2 parameter2

附重定向命令使用方法:

command > file将输出重定向到 file。
command < file将输入重定向到 file。
command >> file将输出以追加的方式重定向到 file。
n > file将文件描述符为 n 的文件重定向到 file。
n >> file将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m将输出文件 m 和 n 合并。
n <& m将输入文件 m 和 n 合并。
<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输入。

此处文件描述符 0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

本文参考:

https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-103-2/

https://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-103-4/index.html

http://wiki.jikexueyuan.com/project/learn-linux-step-by-step/pipe-command.html

http://www.runoob.com/linux/linux-shell-io-redirections.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值