Linux重定向错误输出到文件
时间:2020-01-09 10:41:52 来源:igfitidea点击:
我是Ubuntu Linux和bash shell的新用户。
我也知道如何使用以下语法将输出从显示/屏幕重定向到文件:
cmd>文件ls>文件
但是,屏幕上会显示一些时间错误。如何在Linux或者类似Unix的系统上将输出从计算机屏幕存储和重定向到文件? Linux上的Bash/ksh等现代shell具有三个文件描述符:
stdin
(0)stdout
(1)stderr
(2)
语法将所有输出重定向到文件
语法如下,以如下方式重定向输出(stdout):
command-name > output.txt command-name > stdout.txt
语法将所有错误重定向到文件
语法如下,用于重定向错误(stderr),如下所示:
command-name 2> errors.txt command-name 2> stderr.txt
将输出(stdout)和错误(stderr)都重定向到不同文件的语法
语法:
command1 > out.txt 2> err.txt command2 -f -z -y > out.txt 2> err.txt
将输出(stdout)和错误(stderr)都重定向到同一文件的语法
语法为:
command1 > everything.txt 2>&1 command1 -arg > everything.txt 2>&1
将错误(stderr)重定向到null或者零设备的语法
写入空或者零特殊文件的数据将被系统丢弃。
这对于消除错误(也称为错误垃圾邮件)很有用:
command1 2> /dev/null command1 2> /dev/zero command2 -arg 2> /dev/null command2 -arg 2> /dev/zero
提示:使用tee命令可同时重定向到文件和屏幕
语法为:
command1 |& tee log.txt ## 或者 command1 -arg |& tee log.txt ## 或者 command1 2>&1 | tee log.txt
另一用法:
#!/bin/bash # My script to do blah ... foo(){ : } 2>&1 | tee foo.log
或者
#!/bin/bash # My script to do blah ... { command1 command2 } 2>&1 | tee script.log