[英]How to do command substitution, e.g. “echo hi | tee >( gzip > /tmp/1 ) > /tmp/2” in plumbum?
我需要弄清楚如何在铅锤中调用管道替换。 具体来说,如何构造诸如echo hi | tee >( gzip > /tmp/1 ) > /tmp/2
链echo hi | tee >( gzip > /tmp/1 ) > /tmp/2
echo hi | tee >( gzip > /tmp/1 ) > /tmp/2
吗? 或者,为了更好地说明这个想法,请find / | tee >( grep hi > /tmp/grepped ) > /tmp/nongrepped
find / | tee >( grep hi > /tmp/grepped ) > /tmp/nongrepped
吗? 我需要这种方法,因为要使用的等效find /
运行非常昂贵,而且我无法将其保存在磁盘上,因此我需要并行应用两个不同的过滤器。 有办法避免mkfifo
吗?
注意:我知道问题类似于“ 如何从python传递许多bash命令? ”。 但是,不同之处在于,我要特别询问铅问题,并且在那里写与铅有关的答案是有缺陷的,正如其评论中所述。
要在问题的标题中复制命令( 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")()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.