1

在 Linux/bash 下,我想运行一个命令并将标准输出发送到 foo.txt,并将标准输出和标准错误组合到 bar.txt:

$ cmd < input.txt  1>foo.txt 1+2>bar.txt   ???

最简单的方法是什么?

只发送标准输出是:

$ cmd > foo.txt

发送两个标准输出/标准错误是:

$ cmd &> bar.txt

但是试图结合:

$ cmd > foo.txt &>bar.txt

导致 foo.txt 为空。

4

2 回答 2

1

您不能同时对输出流进行两次重定向。做你想做的最简单的方法是将输出传送到tee命令。

于 2013-02-28T09:15:04.527 回答
1

以下应该做到这一点:

(cmd | tee out.txt) &> both.txt

这将重定向stdoutout.txtand both stdoutand stderrto both.txt

于 2013-02-28T09:16:22.117 回答