我知道在Linux,要将输出从屏幕重定向到文件,我可以使用>或tee。但是,我不知道为什么部分输出仍然输出到屏幕而不是写入文件。
>
tee
有没有办法将所有输出重定向到文件?
该部分写入stderr,使用2>重定向它。例如:
2>
foo > stdout.txt 2> stderr.txt
或者如果你想在同一个文件中:
foo > allout.txt 2>&1
注意:这适用于(ba)sh,检查你的shell是否有正确的语法
这可能是标准错误。您可以重定向它:
... > out.txt 2>&1
所有POSIX操作系统有3个流:stdin、stdout和stderr。stdin是输入,可以接受stdout或stderr。stdout是主要输出,用>、>>或|重定向。stderr是错误输出,它被单独处理,这样任何异常都不会传递给命令或写入可能会中断的文件;通常,这会发送到某种日志,或直接转储,即使标准输出被重定向。要将两者重定向到同一个地方,请使用:
>>
|
$command &> /some/file
编辑:感谢Zack指出上述解决方案不可移植-改为使用:
$command > file 2>&1
如果您想消除错误,请执行以下操作:
$command 2> /dev/null
例如,在文件file.txt中获取控制台AND上的输出。
file.txt
make 2>&1 | tee file.txt
注意:&(在2>&1中)指定1不是文件名,而是文件描述符。
&
2>&1
1
使用>>追加:
command >> file
您可以稍后使用exec命令重定向任何命令的所有stdout/stderr输出。
exec
示例脚本:
exec 2> your_file2 > your_file1your other commands.....
使用此-"require command here" > log_file_name 2>&1
"require command here" > log_file_name 2>&1
Unix/Linux中重定向运算符的详细描述。
>运算符通常将输出重定向到文件,但也可以重定向到设备。您也可以使用>>附加。
如果您没有指定一个数字,则假设标准输出流,但您也可以重定向错误
> file redirects stdout to file1> file redirects stdout to file2> file redirects stderr to file&> file redirects stdout and stderr to file
/dev/null是空设备,它接受任何你想要的输入并将其丢弃。它可用于抑制任何输出。
命令:
foo >> output.txt 2>&1
附加到output.txt文件,而不替换内容。
这是OSEXP2003和J. A.
而不是把:
&>> your_file.log
在一条线后面:
crontab -e
我使用:
#!/bin/bashexec &>> your_file.log…
BASH脚本的开头。
优点:您的脚本中有日志定义。适用于Git等。