[英]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.