繁体   English   中英

如何执行命令替换,例如“ echo hi | tee>(gzip> / tmp / 1)> / tmp / 2”在铅锤中?

[英]How to do command substitution, e.g. “echo hi | tee >( gzip > /tmp/1 ) > /tmp/2” in plumbum?

我需要弄清楚如何在铅锤中调用管道替换。 具体来说,如何构造诸如echo hi | tee >( gzip > /tmp/1 ) > /tmp/2echo 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM