这个问题在这里已有答案:
我知道在Linux中,要将屏幕输出重定向到文件,我可以使用 > 或 tee . 但是,我不确定为什么部分输出仍然输出到屏幕而不写入文件 .
>
tee
有没有办法将所有输出重定向到文件?
这可能是标准错误 . 你可以重定向它:
... > out.txt 2>&1
使用 >> 追加:
>>
command >> file
使用此 - "require command here" > log_file_name 2>&1
"require command here" > log_file_name 2>&1
Detail description of redirection operator in 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是一个空设备,它接受你想要的任何输入并抛弃它 . 它可以用来抑制任何输出 .
归功于osexp2003和j.a. ...
而不是放
&>> your_file.log
在一条线后面
crontab -e
我用
#!/bin/bash exec &>> your_file.log …
在BASH脚本的开头 .
优点:您的脚本中有日志定义 . 适合Git等
例如,要在控制台和文件 file.txt 中获取输出 .
file.txt
make 2>&1 | tee file.txt
注意: & (在 2>&1 中)指定 1 不是文件名而是文件描述符 .
&
2>&1
1
该部分写入stderr,使用 2> 重定向它 . 例如:
2>
foo > stdout.txt 2> stderr.txt
或者如果你想要在同一个文件中:
foo > allout.txt 2>&1
注意:这适用于(ba)sh,检查shell是否有正确的语法
在Linux Mint中,此命令字符串将执行脚本和错误路由到单个txt文件 . bash -x ./setup.sh > setup.txt 2>&1 . 脚本名称为setup.sh,输出目标为setup.txt .
bash -x ./setup.sh > setup.txt 2>&1
所有POSIX操作系统have 3 streams:stdin,stdout和stderr . stdin是输入,可以接受stdout或stderr . stdout是主输出,使用 > , >> 或 | 重定向 . stderr是错误输出,它是单独处理的,因此任何异常都不会传递给命令或写入可能会中断的文件;通常,即使重定向stdout,也会将其发送到某种日志或直接转储 . 要将两者重定向到同一个地方,请使用:
|
命令&> / some / file
EDIT :感谢Zack指出上述解决方案不可移植 - 请改用:
*command* > file 2>&1
如果要使错误静音,请执行以下操作:
*command* 2> /dev/null
您可以使用 exec 命令稍后重定向任何命令的所有stdout / stderr输出 .
exec
示例脚本:
exec 2> your_file2 > your_file1 your other commands.....
命令:
foo >> output.txt 2>&1
appends 到output.txt文件,而不替换内容 .
10 回答
这可能是标准错误 . 你可以重定向它:
使用
>>
追加:command >> file
使用此 -
"require command here" > log_file_name 2>&1
Detail description of redirection operator in Unix/Linux.
如果未指定数字,则会假定标准输出流,但您也可以重定向错误
/ dev / null是一个空设备,它接受你想要的任何输入并抛弃它 . 它可以用来抑制任何输出 .
归功于osexp2003和j.a. ...
而不是放
在一条线后面
我用
在BASH脚本的开头 .
优点:您的脚本中有日志定义 . 适合Git等
例如,要在控制台和文件
file.txt
中获取输出 .注意:
&
(在2>&1
中)指定1
不是文件名而是文件描述符 .该部分写入stderr,使用
2>
重定向它 . 例如:或者如果你想要在同一个文件中:
注意:这适用于(ba)sh,检查shell是否有正确的语法
在Linux Mint中,此命令字符串将执行脚本和错误路由到单个txt文件 .
bash -x ./setup.sh > setup.txt 2>&1
. 脚本名称为setup.sh,输出目标为setup.txt .所有POSIX操作系统have 3 streams:stdin,stdout和stderr . stdin是输入,可以接受stdout或stderr . stdout是主输出,使用
>
,>>
或|
重定向 . stderr是错误输出,它是单独处理的,因此任何异常都不会传递给命令或写入可能会中断的文件;通常,即使重定向stdout,也会将其发送到某种日志或直接转储 . 要将两者重定向到同一个地方,请使用:命令&> / some / file
EDIT :感谢Zack指出上述解决方案不可移植 - 请改用:
如果要使错误静音,请执行以下操作:
您可以使用
exec
命令稍后重定向任何命令的所有stdout / stderr输出 .示例脚本:
命令:
appends 到output.txt文件,而不替换内容 .