命令输出重定向到文件和终端

时间:2012-11-27 19:13:51

标签: linux bash redirect

我正在尝试将命令输出抛出到文件加控制台。这是因为我想保留文件中的输出记录。我正在做跟随,它附加到文件但不在终端上打印ls输出。

$ls 2>&1 > /tmp/ls.txt

3 个答案:

答案 0 :(得分:91)

是的,如果您重定向输出,它将不会出现在控制台上。使用tee

ls 2>&1 | tee /tmp/ls.txt

答案 1 :(得分:24)

值得一提的是,2>& 1表示标准错误也将与标准输出一起重定向。所以

someCommand | tee someFile

为您提供文件中的标准输出,但不提供标准错误:标准错误仅出现在控制台中。要在文件中获得标准错误,您可以使用

someCommand 2>&1 | tee someFile

(来源:In the shell, what is " 2>&1 "?)。最后,上述两个命令都将截断文件并开始清除。如果您使用一系列命令,您可能希望一个接一个地获得所有命令的输出和错误。在这种情况下,您可以使用-a标志来“tee”命令:

someCommand 2>&1 | tee -a someFile

答案 2 :(得分:10)

如果有人需要附加输出而不是覆盖,可以使用“tee”命令的“-a”或“--append”选项:

ls 2>&1 | tee -a /tmp/ls.txt
ls 2>&1 | tee --append /tmp/ls.txt