在 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 为空。
您不能同时对输出流进行两次重定向。做你想做的最简单的方法是将输出传送到tee命令。
以下应该做到这一点:
(cmd | tee out.txt) &> both.txt
这将重定向stdout到out.txtand both stdoutand stderrto both.txt。