舉例來說,如果我想引用先前的命令一次的輸出,我可以使用下面的命令:如何在Linux命令中引用前一個命令的輸出兩次?
ls *.txt | xargs -I % ls -l %
但如何引用輸出兩次?就像我如何才能實現這樣的:
ls *.txt | xargs -I % 'some command' % > %
PS:我知道如何做到這一點的shell腳本,但我只想要一個簡單的方法來做到這一點。
舉例來說,如果我想引用先前的命令一次的輸出,我可以使用下面的命令:如何在Linux命令中引用前一個命令的輸出兩次?
ls *.txt | xargs -I % ls -l %
但如何引用輸出兩次?就像我如何才能實現這樣的:
ls *.txt | xargs -I % 'some command' % > %
PS:我知道如何做到這一點的shell腳本,但我只想要一個簡單的方法來做到這一點。
可以將此參數傳遞給bash -c
:
ls *.txt | xargs -I % bash -c 'ls -l "$1" > "out.$1"' - %
您可以查找了 'TPIPE' 上SO;它也會導致你'撒尿'(這不是一個很好的搜索術語在互聯網上的其他地方)。基本上,它們是tee
命令的變體,它寫入多個進程而不是像tee
命令那樣寫入文件。
然而,隨着猛砸,您可以使用Process Substitution:
ls *.txt | tee >(cmd1) >(cmd2)
這將輸入到tee
寫入每個命令cmd1
和cmd2
的。
你可以安排失去標準輸出至少兩種不同的方式:
ls *.txt | tee >(cmd1) >(cmd2) >/dev/null
ls *.txt | tee >(cmd1) | cmd2
感謝的人,這就是我想要的! – injoy 2015-04-01 22:12:53
不客氣,很高興它解決了。 – anubhava 2015-04-01 22:16:24