在Linux上的管道和管道

Linux系统支持管道,使传递命令从一个输出到另一个地方,但他们也支持的命名管道,这有很大的不同。

  • 在Facebook上分享
  • 在Twitter上分享
  • 分享在LinkedIn
  • 在Reddit分享
  • 通过电子邮件分享
  • 印刷资源
在上面734506006蒸汽管压力表机舱
-_-BY /伤风

大多数人把时间花在一个Linux命令行上迅速使用管道。事实上,管道的一件事情真的让我非常兴奋当我第一次在Unix系统上使用命令行。我欣赏他们的权力和方便继续甚至经过几十年的使用Linux。使用管道,我发现了我有多可以通过发送一个命令的输出发送给另一个命令的输出,有时一个命令之后,进一步调整输出,我正在寻找。将管道-如下所示的命令允许我只提取信息,我需要不需要编译一个程序或准备一个脚本。

美元猫myposts | grep Linux | wc - l 1456

上面的命令将一个文件的内容称为“myposts”grep命令寻找“Linux”这个词,然后发送输出到wc命令输出中的行数。

正如你可能怀疑,管道被称为“管道”主要是因为他们如何像管道的功能。你可能会看到他们称为“匿名管道”或“匿名管道”,因为他们并不是唯一的Linux提供的管道。我们会讲到。

事实上,管道是如此有用,我经常把一些命令纳入别名使运行甚至更加容易。例如,如下所示的命令,列出与当前登录账户相关联的所有进程可以添加到用户的. bashrc文件,一行是这样的:

美元回声的别名myprocs = " ps ef | grep whoami”“> > ~ /。bashrc美元(尾1 ~ /。bashrc别名(myprocs = " p ef | grep whoami”

一旦你源. bashrc文件,别名可以使用了。

myprocs根3219 738 0美元12:15吗?就是sshd:合成[priv]合成3229 1 4 12:15 ?就是/usr/lib/systemd/systemd——用户啦3245 3229 0 12:15 ?就是(sd-pam)合成3269 3219 0 12:15 ?就是sshd: shs@pts / 0啦3284 3269 0 12:15分/ 0就是bash啦3319 3284 0 12:15分/ 0就是ps ef啦3320 3284 0 12:15分/ 0就是grep——颜色=汽车啦

看到进程id,您可以设置这样的别名:

别名项目美元= " ps辅助| grep ^的whoami | awk{打印\ $ 2}”

注意,它只在第一个字段查找用户名(^马克线的开始,并显示第二个字段。\确保2美元不解释,直到别名使用。

管道,用于建立一个数据流,允许命令通过输出到其他命令不是,然而,唯一的管道可以在Linux系统。在Linux系统中,实际上有两种不同形式的管道——那些如上所示,另一种形式的管道,被称为“命名管道”。

命名管道

与匿名管道、命名管道中有很大的不同,他们可以发送数据。命令可以将数据发送给命名管道和命令可以读到的内容。一个加法,命名管道的内容不驻留在文件系统,但只有在虚拟内存中。

他们允许进程相互通信。它们设置为特殊文件在文件系统(第一个字符长清单是一个“p”。其他权限显示谁能读或写的管道。

这里有一个例子使用mkfifo命令创建一个指定管道:

美元mkfifo mypipe $ ls - l mypipe prw-r——r。1 justme justme 0 8月8日13:55 mypipe

注意上面所示的初始清单中“p”,表示文件是一个命名管道和0(5场)显示它没有内容。

使用- m参数,您可以设置权限,允许其他用户写入管道。注意,默认的是所有者可以读一写和其他人只能读。这里有一个例子:

美元mkfifo ls - l - m 666 sharedpipe mypipe0 prw-rw-rw -。1啦啦0 8月7日零点sharedpipe

即使你发送数据到一个命名管道,它似乎是空的。

$回声“来了一些内容”> mypipe $ ls - l mypipe prw-r——r。1 justme justme 0 8月13:57 mypipe

另一个进程可能读取命令的内容是这样的:

猫mypipe美元来了一些内容

如果我们运行该命令在后台发送数据到管,我们可以阅读它一只猫命令。注意,文件仍然是空的文件清单,但是我们可以用一只猫命令检索文本只有一次。它的意图后,就消失了。没什么,不过,让我们从发送更多的数据到管——只要它仍然存在。

$回声“来了一些内容”> mypipe & [1] 1593 $ ls - l mypipe prw-r——r。1 fedora fedora 0 8月5日13:55 mypipe猫mypipe美元来了一些内容[1]+做呼应“来了一些内容”> mypipe美元猫mypipe ^ C

总结

命名管道是更复杂的比匿名管道和经常使用的要少得多,但他们玩一个有趣的角色在Linux系统。这里有两个之前的帖子——一个在使用匿名的帖子,一个在使用命名管道。

在Linux上使用管道来完成更多的工作

为什么在Linux上使用命名管道

相关:

版权©2023 IDG通信公司。足球竞彩网下载

企业网络2022的10个最强大的公司