如何在Linux中使用管道和命名管道(附示例)

管道是Linux和类Unix操作系统中最有价值的命令行功能之一。管道被用于各种应用中。如果你看任何一篇Linux命令行文章,你会注意到管道经常出现。

竖条符号
|
表示管道。由于管道的存在,可以将一个命令的输出作为输入提供给另一个命令。

结果,一个命令的输出可以用作另一命令的输入,该命令的输出也可以用作下一命令的输出,以此类推。

因此,您不局限于单个管道命令。你可以随心所欲地堆叠它们。

换句话说,管道是Linux中使用的一种重定向形式,用于将一个程序的输出发送到另一个程序进行进一步处理。管道允许您执行shell不支持的开箱即用操作。

管道或未命名管道命令的语法为
|
任意两个命令之间的字符:

命令1|命令2|…|命令N

管道在Linux中如何工作

要了解管道是如何工作的,让我们看看下面的示例。

我们有一个目录,里面有很多不同类型的文件。所以我们想知道这个目录中有多少特定类型的文件。

因此,我们可以使用
ls
命令

ls-l

我们将使用grep来分隔我们要查找的文件类型。例如,我们查找带有单词的文件
txt
以其名称或作为文件扩展名。

我们将使用特殊的shell字符
|
指导
ls
‘输出到
grep
.

ls|grep txt

从上图中可以看到,的输出
ls
命令未发送到终端窗口。

因此,结果不会显示在屏幕上。相反,它被重定向到的输入
grep
命令我们上面看到的输出来自
grep
,此链中的最后一个命令。

现在,让我们开始延伸我们的链条。我们可以数文件
txt
通过添加
厕所
命令到链。我们将使用
-l
选项(行数)
厕所
.

ls|grep-txt|wc-l

在上面的例子中,
grep
不再是链中的最后一个命令,因此我们看不到它的输出。相反,的输出
grep
被馈送到
厕所
命令

我们在终端窗口中看到的结果来自
厕所
。它报告了两个文件,
txt
在目录中。

Linux中的命名管道是什么?

正如名称本身所暗示的,这些都是有名称的管道。常规管道和命名管道之间的主要区别之一是
命名管道在文件系统中存在
。也就是说,它们像文件一样显示。

Linux中的命名管道是一种使用指定名称的管道将信息从一个计算机进程传递到另一个计算机过程的方法。命名管道也称为FIFO,代表
先进先出
.

可以使用创建命名管道
mkfifo
命令例如

<
密码
>
mkfifo mypipe
</
密码
>
代码语言:
 HTML,XML
 (
xml
)