在bash中,调用foo将在stdout上显示该命令的任何输出。
foo
调用foo > output会将该命令的任何输出重定向到指定的文件(在本例中为“输出”)。
foo > output
有没有一种方法可以将输出重定向到文件 并 在stdout上显示?
您想要的命令名为 tee :
tee
foo | tee output.file
例如,如果您只关心标准输出:
ls -a | tee output.file
如果要包括stderr,请执行以下操作:
program [arguments...] 2>&1 | tee outfile
2>&1将通道2(stderr /标准错误)重定向到通道1(stdout /标准输出),以便将两者都写为stdout。该tee命令还将其定向到给定的输出文件。
2>&1
此外,如果要 附加 到日志文件,请tee -a用作:
tee -a
program [arguments...] 2>&1 | tee -a outfile