如何将命令的输出重定向到两个文件?

21
我需要将一个命令的输出重定向到两个文件中,file1是一个新文件,而file2是一个已经存在的文件,在其中我需要追加输出。我尝试过,但未得到预期结果。
command > file1 > file2

重复:https://dev59.com/rEXRa4cB1Zd3GeqPpSnf,https://dev59.com/lHRC5IYBdhLWcg3wD87r - S.Lott
2
这两个“Dupes”都是特定于Linux/bash的。这个问题更有用,因为它与操作系统无关。在单个答案中列出所有解决方案进行比较特别好,很高兴它没有被关闭为重复问题,也没有被切成太过笼统或类似的废话。 - Bill K
5个回答

17

你正在寻找tee命令。

$ echo existing >file2
$ date | tee file1 >> file2
$ cat file2
existing
Mon Mar  9 10:40:01 CET 2009
$ cat file1
Mon Mar  9 10:40:01 CET 2009
$

10

对于Windows平台(cmd.exe):

command > file1 & type file1 >> file2

除非“command”快速完成,“type”部分才能执行(在那时可能已经是一份副本)。您可以尝试在另一个窗口中使用某种形式的“Start”运行“command”,但是第二部分将失败,因为Windows批处理文件没有“tail”等效项。对于此作业,您最好选择powershell或新的Windows bash子系统,或安装git并使用其bash,或从某个地方下载tee.cmd(我曾经有过80年代dos的tee.cmd副本)。 - Bill K
你说得对,这可能是复制,总体来说并不理想——但是在没有tee的情况下,使用cmd.exe是不可能的。tee在GNU实用程序的Windows端口中,比如git for Windows或Chef中都有,所以获取它并不是不可能的。答案的意图是编写某些东西来模拟cmd.exe中的此行为。其他人编写了Powershell变体。 - Tomalak

7
可以使用以下命令实现。
command | tee -a file1 file2

1
这应该是被选中的答案。 - nroose

4
在PowerShell中使用tee-object(或其tee别名)
command | tee first-file | out-file second-file

还可以将其输出到变量中(例如,以便进行进一步处理)。


0
在Linux中,您可以这样做: < p > < code > command | tee file1 >> file2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接