1

我需要弄清楚如何在铅中调用管道替换。具体来说,如何构建诸如echo hi | tee >( gzip > /tmp/1 ) > /tmp/2?或者,为了更好地说明这个想法,find / | tee >( grep hi > /tmp/grepped ) > /tmp/nongrepped?我需要这种方法,因为find /我将要使用的等效方法运行起来非常昂贵,而且我无法将其保存在磁盘上,因此我需要并行应用两个不同的过滤器。有没有办法避免mkfifo

注意:我知道这个问题类似于“如何从 python 中通过管道传输许多 bash 命令? ”。但是,不同之处在于我专门询问铅,并且尝试在那里写一个与铅相关的答案是有缺陷的,如其评论中所述。

4

1 回答 1

-1

要复制问题标题中的命令 ( echo hi | tee >( gzip > /tmp/1 ) > /tmp/2),您可以使用以下命令执行以下操作plumbum

from plumbum.cmd import echo, tee, gzip

(echo["hi"] | tee["/tmp/2"] | gzip > "/tmp/1")()

这会将字符串“hi”传递给将tee其写入“/tmp/2”并将其复制到标准输出的函数。然后,stdout 通过管道传送到 gzip,其输出被重定向到“/tmp/1”。

使用您的其他命令 ( find / | tee >( grep hi > /tmp/grepped ) > /tmp/nongrepped)实现类似的功能

你可以做:

from plumbum.cmd import find, grep, tee

(find["/"] | tee["/tmp/nongrepped"] | grep["hi"] > "/tmp/grepped")()
于 2018-03-31T19:23:20.427 回答