我知道在Linux中,要将屏幕输出重定向到文件,可以使用>或tee。然而,我不确定为什么部分输出仍然输出到屏幕而没有写入文件。

是否有方法将所有输出重定向到文件?


当前回答

这可能是标准错误。您可以重定向它:

... > out.txt 2>&1

其他回答

命令:

foo >> output.txt 2>&1

附加到output.txt文件,而不替换内容。

该部分被写入stderr,请使用2>将其重定向。例如:

foo > stdout.txt 2> stderr.txt

或者如果您希望在同一文件中:

foo > allout.txt 2>&1

注意:这在(ba)sh中有效,请检查shell的语法是否正确

使用>>附加:

命令>>文件

您可以稍后使用exec命令重定向任何命令的所有stdout/stderr输出。

示例脚本:

exec 2> your_file2 > your_file1
your other commands.....

感谢osexp2003和j.a…


而不是:

&>> your_file.log

在以下行后面:

crontab -e

我使用:

#!/bin/bash
exec &>> your_file.log
…

在BASH脚本的开头。

优点:脚本中有日志定义。有利于Git等。