簡體   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