例如,如果我想引用上一个命令一次的输出,我可以使用以下命令:
ls *.txt | xargs -I % ls -l %
但是如何引用输出两次?就像我如何实现类似的东西:
ls *.txt | xargs -I % 'some command' % > %
PS:我知道如何在shell脚本中执行此操作,但我只想要一种更简单的方法。
答案 0 :(得分:3)
您可以将此参数传递给bash -c
:
ls *.txt | xargs -I % bash -c 'ls -l "$1" > "out.$1"' - %
答案 1 :(得分:1)
您可以查找' tpipe'在SO;它还会引导你去小便## (这不是互联网上其他地方的好搜索词)。基本上,它们是tee
命令的变体,它们写入多个进程而不是写入tee
命令之类的文件。
但是,使用Bash,您可以使用Process Substitution:
ls *.txt | tee >(cmd1) >(cmd2)
这会将tee
的输入写入每个命令cmd1
和cmd2
。
您可以安排至少以两种不同的方式丢失标准输出:
ls *.txt | tee >(cmd1) >(cmd2) >/dev/null
ls *.txt | tee >(cmd1) | cmd2