【整理】將Linux指令碼中的正常輸出,警告,錯誤等資訊輸出到檔案中

woshinia發表於2014-01-09
Linux中,指令碼語言環境中,即你用make xxx即其他一些普通linux命令,比如ls,find等,不同的數字,代表不同的含義: 
數字 含義 標準叫法
0 標準輸入 stdin = standard input
1 標準輸出 stdout = standard output
2 標準錯誤輸出 stderr = standard error



而系統預設的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等數字,後面緊跟著大於號'>' ,中間不能有空格。


【引用】
1. 把GCC的編譯資訊重定向到一個檔案中
“gcc -c test.c 2> error.txt, Unix下錯誤輸出的ID一般為2”

2. 我之前寫的帖子:【整理】將Linux下編譯的warning警告資訊輸出到檔案中

http://hi.baidu.com/serial_story/blog/item/99b6694e4be68300b2de05ce.html

相關文章