2009-02-26 78 views
1

unix tee命令将标准输入分割为stdout和文件。`tee`命令等价于* input *?

我需要的是另一种方式,将几个输入合并到一个输出 - 我需要连接两个(或更多)命令的标准输出。
不知道这个应用的语义应该是什么 - 让我们假设每个参数是一个完整的命令。

例子:

> eet "echo 1" "echo 2" > file.txt 

应该产生具有内容

1 
2 

文件我试图

> echo 1 && echo 2 > zz.txt 

它不工作。我可以将每个命令的输出追加到文件中,但我希望一次执行此操作(实际上,我想将合并的输出传送到另一个程序)。
另外,我可能滚动我自己,但我很懒,每当我能买得起它:-)

哦,是的,这将是很好,如果在Windows中工作(虽然我猜任何庆典/ Linux的-flavored解决方案有效,经由UnxUtils/MSYS /等)

回答

7

尝试

(echo 1; echo 2) > file.txt 

即生成一个子外壳,并执行该命令有

{ echo 1; echo 2; } > file.txt 

也是可能的。这并不产生一个子shell(分号后的最后一个命令是很重要的)

+0

你使用什么外壳?我在Windows'cmd.exe中尝试了第一个,文件的内容是'1;回声2';第二个选项根本不起作用。 – 2009-02-26 13:48:33

+0

我得到它在cmd.exe工作是这样的: (echo 1 && echo 2)> file.txt – 2009-02-26 13:51:20

-1

echo 1 > zz.txt && echo 2 >> zz.txt

这应该工作。你真正要做的就是在两个命令之后运行两个命令,第一个命令重定向到一个文件,然后,如果这是成功的,则运行另一个命令,将其输出附加到您首先编写的文件的末尾。

1

我想你想要的是并行运行这两个命令,并将两个输出管道合并到另一个命令。

我会做:

(echo 1 & echo 2) | cat 

其中“回声1”和“回声2”产生的输出和“猫”的命令是将接收合并后的输出的命令。