管道是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
)
您可以通过
位。
ls-l mypipe
prw-r-r--
1.
根
根
0
三月
20 12
:58
mypipe
代码语言:
CSS
(
css
)
命名管道是文件系统本身上的文件。与标准管道不同,命名管道作为文件系统的一部分进行访问,就像任何其他文件类型一样。
命名管道内容驻留在内存中,而不是写入磁盘。因此,只有当管道的两端都打开时,它才能通过。在管道的另一端打开并读取之前,您可以多次对管道进行写入。
使用命名管道可以建立一个进程,在该进程中,一个进程向管道写入,另一个进程从管道读取,而不需要太多时间或仔细地编排它们的交互。
要了解命名管道是如何工作的,让我们看看下面的示例。让我们首先创建命名管道:
mkfifo mypipe
现在让我们使用这个管道来使用消息。
尾部-f mypipe
打开另一个终端窗口,向该管道写入消息:
回响
你好
>>mypipe
代码语言:
PHP
(
php
)
现在,在第一个窗口中,您可以看到打印出来的“hi”:
尾部-f管1
你好
因为它是一个管道,并且消息已经被消耗,如果我们检查文件大小,您可以看到它仍然是0:
ls-l mypipe
prw-r-r--
1.
根
根
0
三月
20 14
:11
mypipe
代码语言:
CSS
(
css
)
由于命名管道只是一个Linux文件,我们可以使用rm命令删除一个。因此,要删除我们在前面的示例中创建的管道,我们将运行:
rm mypipe
何时使用常规管道或命名管道
在Linux中使用常规管道而不是命名管道取决于我们要寻找的特性。有些可以是持久性、双向通信、具有文件名、创建筛选器和限制访问权限。
例如,如果我们想多次过滤命令的输出,使用匿名管道似乎是最合适的选择。
另一方面,如果我们需要一个文件名,并且不想将数据存储在磁盘上,那么我们要寻找的是一个命名管道。
总之,下次您在Linux终端上使用命令时,发现自己在命令之间移动数据时,希望管道能使处理过程快速而简单。
结论
本文向您展示了在Linux命令中使用管道时的多功能性。尽管如此,它相对简单,但可以解决各种复杂的查询。
此外,此命令行工具非常简单,可与UNIX和Linux平台配合使用。
了解更多关于
管
命令,请参阅其手册页。
相关推荐
你知道吗,你的Ubuntu系统上安装了数千个软件包?你可能想知道这些包裹是从哪里来的。 您的许多软件包都是预装在新安装的Linux系统上的。随着时间的推移,您可能还安装了更多的软件包来增强系统的功能。 如果你需要重新安装系统或在另一台机器上安装相同的软件包,了解如何在Ubuntu系统上列出已安装的软件包会很有用。 使用APT列出已安装的软件包 APT是Ubuntu中的内置软件包管理器,可帮助您从U
为了获得Windows 10的最佳体验,您应该执行一些基本但重要的任务。以下是我们推荐的做法,无论您是首次设置Windows 10还是重新安装新版本。 1.运行Windows Update并配置更新设置 即使您刚刚安装了Windows 10,某些更新可能正在等待。您应该安装这些程序以获取系统的最新安全补丁。 为此,请打开设置应用程序(使用Win + I快捷方式或"开始"菜单上的齿轮图标),然后转到
默认情况下在Gnome中 Alt+Tab 切换所有工作空间上的窗口。如果您希望有多个工作区,每个工作区上只有几个窗口,则这种行为不会很好地工作。也许您只想在活动工作区上切换窗口。 在谷歌上搜索Alt Tab工作区扩展名是最重要的结果。GitHub上的代码证明,以下命令可以完成任务: g设置 设置 org .gnome 壳 .车窗开关 仅当前工作区 真的 g设置 设置 org .gnome 壳 .a
凭借更大的49mm屏幕、坚固耐用的设计和更高效的电池,Apple Watch Ultra将可穿戴产品线带向了一个独特的新方向。为了配合您的Apple Watch Ultra,您将希望选择其中一款最好的Apple Watch Ultra表带来展示您的智能手表的风格。 Apple Watch高山表圈 最佳总体 查看Amazon Spigen Lite Fit Apple Watch表带 最佳预算 在亚
Kali Linux是一个基于 Debian 的开源 Linux 发行版,专为复杂的渗透测试和安全审计而设计。 Kali Linux 包含数百种用于各种信息安全活动的工具,例如渗透测试、安全研究、计算机取证和逆向工程。这种多平台解决方案可供信息安全专家和爱好者免费使用。您可以通过替换现有操作系统来安装 Kali Linux,但在虚拟机上使用它是更好、更安全的选择。它可以使用 Virtual Box
回到顶部