迹忆博客
当前位置: 主页 > 学无止境 > 操作系统 > 文章

Linux管道命令总纲

发布时间: 2016-09-22 作者: 迹忆 浏览次数:

什么是管道命令,但就名称来看应该分为‘管道’和‘命令’。

管道

先来看管道,我是这样理解管道的。管道就是在两个命令之间建立连接,也就是前一个的命令的标准输出结果是后一个命令的标准输入。这个过程就是通过管道来实现的。

管道使用的是‘|’这个符号。这里需要注意的是,管道处理的是前一个命令的标准输出(standard output)。对于前一个命令的标准错误输出(standard error output)会忽略。也就是说对于前一个命令执行正确的输出信息会作为后一个命令的输入,如果前一个命令执行错误,其打印的错误信息并不会作为后一个命令的输入。这就是管道的作用,看下面的例子:

# ls –a /etc | grep ^s

这个例子的作用就是查看/etc下面的文件名以s开头的文件。前面查找/etc下的文件的结果通过管道作为grep 命令的标准输入。

命令

说完管道,下面我们来看命令。这里说的命令主要是针对管道(|)后面接的命令。在上面我们说过管道的作用是将前一个命令的标准输出作为后一个命令的标准输入(stdin),因此要求后一个命令是要能从标准输入设备读取数据的。所以说并不是linux系统支持的所有的命令都可以作为管道命令来使用。

像linux应用——查找文件进行拷贝【案例】这篇文章中介绍的案例我们就不能在管道后面直接使用cp命令。如下的命令是错误的:

# find /a –name login* | cp –t /b  //错误

因为cp不是管道命令,它不能接受来自标准输入(stdin)的数据。

能接受来自标准输入的数据的命令有下面这些:

选取命令: cutgrep

排序统计命令: sortuniqwc

双向重导向:tee

字符转换命令:trcoljoinpasteexpand

分割命令: split

参数代换: xargs

上面这些命令是管道命令,可以接受来自标准输入的数据。对于这些命令在本篇不展开介绍。我会在后续的文章中分别介绍这些命令的用法。

总结

下面对管道命令进行一下总结:

1、管道命令仅会处理 standard output,对于 standard error output 会予以忽略

2、管道命令必须要能够接受来自前一个命令的数据成为 standard input 继续处理才行。

关于管道命令的概念就介绍到这。希望本文对大家有所帮助。

除非注明转载,本站文章均为原创,欢迎转载,转载请以链接形式注明出处

本文地址: