输出正常和错误的信息到文件

Linux中,脚本语言环境中,即你用make xxx即其他一些普通linux命令,比如ls,find等,不同的数字,代表不同的含义:
数字 含义 标准叫法
0 标准输入 stdin = standard input
1 标准输出 stdout = standard output
2 标准错误输出 stderr = standard error

> 和 >> 都是输出重定向符号。标准输出默认是打印到控制台,如果要导入到文件,就需要使用>或>>。> 会覆盖已有的文件内容,而>>会附加到已有内容之后。
< 和 << 是输入重定向符号。从文件中读取内容。
2>&1 是把错误输出导入(合并)到标准输出流中
 
grep "standard"* > grep.out 2>&1 就是将标准输出与错误输出一并送入grep.out文件中,写文件方式为覆盖写(>)。
cat >>filetest 2>&1 <<MAYDAY 就是从MAYDAY中读取文件内容,将标准输出与错误输出一并送入filetest文件中,写文件方式为附加写(>>)。

习惯上
标准输入(standard input)的文件描述符是 0
标准输出(standard output)是 1
标准错误(standard error)是 2

而系统默认的stdin,stdout,stderr,都是屏幕,所以,当你执行命令,比如make后,所输出的信息,都是可以在屏幕上看到的。
所以,想要将对应信息输出到某个文件中,就用对应的数字加上重定向符号'>',实现将这些信息,重新定向到对应的文件中,即可。
下面以make命令为例来说明,如何把对应的信息,输出到对应的文件中:

1.想要把make输出的全部信息,输出到某个文件中,最常见的办法就是:
make xxx > build_output.txt
此时默认情况是没有改变2=stderr的输出方式,还是屏幕,所以,如果有错误信息,还是可以在屏幕上看到的。
2.只需要把make输出中的错误(及警告)信息输出到文件中ing,可以用:
make xxx 2> build_output.txt
相应地,由于1=stdout没有变,还是屏幕,所以,那些命令执行时候输出的正常信息,还是会输出到屏幕上,你还是可以在屏幕上看到的。
3.只需要把make输出中的正常(非错误,非警告)的信息输出到文件中,可以用:
make xxx 1> build_output.txt
相应地,由于2=stderr没有变,还是屏幕,所以,那些命令执行时候输出的错误信息,还是会输出到屏幕上,你还是可以在屏幕上看到的。
4.想要把正常输出信息和错误信息输出到分别的文件中,可以用:
make xxx 1> build_output_normal.txt 2>build_output_error.txt
即联合使用了1和2,正常信息和错误信息,都输出到对应文件中了。
5. 所有的信息都输出到同一个文件中:
make xxx > build_output_all.txt 2>&1
其中的2>&1表示错误信息输出到&1中,而&1,指的是前面的那个文件:build_output_all.txt 。
注意:上面所有的1,2等数字,后面紧跟着大于号'>' ,中间不能有空格。

猜你喜欢

转载自zengshaotao.iteye.com/blog/2059148
今日推荐