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

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


当前回答

使用此-“此处需要命令”>log_file_name 2>&1

Unix/Linux中重定向运算符的详细描述。

>运算符通常将输出重定向到文件,但也可以重定向到设备。也可以使用>>进行追加。

如果未指定数字,则假定为标准输出流,但也可以重定向错误

> file redirects stdout to file
1> file redirects stdout to file
2> file redirects stderr to file
&> file redirects stdout and stderr to file

/dev/null是一个空设备,它接受您想要的任何输入并将其丢弃。它可用于抑制任何输出。

其他回答

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

foo > stdout.txt 2> stderr.txt

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

foo > allout.txt 2>&1

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

使用>>附加:

命令>>文件

感谢osexp2003和j.a…


而不是:

&>> your_file.log

在以下行后面:

crontab -e

我使用:

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

在BASH脚本的开头。

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

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

示例脚本:

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

例如,要获取控制台上的输出,请在文件file.txt中执行AND。

make 2>&1 | tee file.txt

注意:&(在2>&1中)指定1不是文件名,而是文件描述符。