Linux系统支持管道从命令向命令传递输出, 但也支持大相径庭的'命名管道'
大多数人花时间Linux命令行快速插入管道管道真正让我兴奋的事情之一 当我第一次使用命令线Unix系统历经数十年使用Linux后,使用管道后,我发现我通过向另一个命令发送命令输出能完成多少工作,有时再发命令后,以进一步定制我所寻找的输出指令整合管道-像下文显示-允许我提取我需要的信息而不必编译程序或编脚本
公元1456
上命令将把文件内容发送grep命令查找词Linux并发出输出数
水管被称为水管 主要是因为水管与管道功能相似或匿名管道 因为它们不是Linux提供的唯一管道待会再谈
管道实用性强,我常转出部分命令 把它们化为别名 令操作更容易下显示命令列表当前登录账户相关所有进程可添加到用户.bashrc文件
unips myprcssssss-ef/grep
.bashrc文件提供后,别名将准备使用
myprocs根32197380121500: 00shss322914121500:00/usr/lib/system/system00: 00(sd-pam)shs32693219012:1500:00shd:shps/0shs32843269012:15pts000:00-bashshs33193284012:15pts00000
光看进程ID, 你可以设置别名像这个
exits mypssssss
注意它只查找第一个字段用户名(由++表示线首并显示二字段)。保证2美元在别名使用前不解释
管道用来搭建数据流 允许命令向其他命令传递输出 并不是Linux系统唯一可用管道Linux系统实际上有两种截然不同的管道形式-上方显示的管道和另一种被称为“命名管道”的管道形式
命名管道
不同于名水管,命名水管大相径庭 因为他们可以向任一方向发送数据命令向命名管道发送数据,命令读取内容添加点名管道内容不居文件系统内, 只存虚拟存储器内
允许进程互通系统设置为文件系统特殊文件(用长列中的第一个字符表示为p)。其它权限表示谁能读写管道
举个例子创建带mkfifo命令命名管道
mkfifo mypro一线米 八八十三分五十五秒线程
注意前端列表中的p表示文件命名管道和0(5th字段)显示它没有内容
使用-m参数,您可设置权限允许其他用户写管道注意默认值为所有者可读写,而其他者仅读写举个例子
mkfifo-m666分享水管s-l myipro0prw-rw-r1shshs0Aug712:50共享管道
即使是发送数据到命名管道时,它似乎是空的
$回声'内容来源'> myproit$s-l myipopprw-r-r-一元一元 八月十三分五十七秒线程
进程阅读内容时可使用类似命令 :
$猫水管 来点内容
如果我们运行命令向管道发送后台数据,我们可以用猫命令读取数据注意文件列表中仍为空, 但我们可以用猫命令只取一次文本后rea,它走了没有什么能阻止我们向管道发送更多数据-只要它仍然存在
$回声“这里来点内容”> myproa和[1]1593$s-l myiproprw-r-r-ra fedora0Objecta513:55线程
总结
名水管比名水管复杂得多,使用频率低得多,但在Linux系统上起有趣作用上头有两篇文章-一是使用匿名文章,一是使用命名管道