如何在Linux命令中引用上一个命令的输出两次?

时间:2015-04-01 21:06:30

标签: linux shell command

例如,如果我想引用上一个命令一次的输出,我可以使用以下命令:

ls *.txt | xargs -I % ls -l %

但是如何引用输出两次?就像我如何实现类似的东西:

ls *.txt | xargs -I % 'some command' % > %

PS:我知道如何在shell脚本中执行此操作,但我只想要一种更简单的方法。

2 个答案:

答案 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的输入写入每个命令cmd1cmd2

您可以安排至少以两种不同的方式丢失标准输出:

ls *.txt | tee >(cmd1) >(cmd2) >/dev/null
ls *.txt | tee >(cmd1) | cmd2