如何进行命令替换,例如" echo hi | tee>(gzip> / tmp / 1)>的/ tmp / 2"在铅?

时间:2018-03-31 18:27:47

标签: python command-substitution plumbum

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

注意:我发现问题类似于" How to pipe many bash commands from python?"。不过,不同之处在于,我特别询问铅石,而且试图写出与铅有关的答案存在缺陷,正如其评论所述。

1 个答案:

答案 0 :(得分:-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。然后,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")()