天天看點

linux标準輸出輸入和錯誤輸出

Linux Shell環境中支援輸入輸出重定向,用符号"<"和">"來表示。0、1和2分别表示标準輸入、标準輸出和标準錯誤資訊輸出,可以用來指定需要重定向的标準輸入或輸出,比如2>a.txt 表示将錯誤資訊輸出到檔案a.txt中。

同時,還可以在這三個标準輸入輸出之間實作重定向,比如将錯誤資訊重定向到标準輸出,可以用2>&1來實作。

Linux下還有一個非凡的檔案/dev/null,它就像一個無底洞,所有重定向到它的資訊都會消失得無影無蹤。這一點非常有用,當我們不需要回顯程式的所有資訊時,就可以将輸出重定向到/dev/null。

假如想要正常輸出和錯誤資訊都不顯示,則要把标準輸出和标準錯誤都重定向到/dev/null, 例如:

# ls 1>/dev/null2>/dev/null

還有一種做法是将錯誤重定向到标準輸出,然後再重定向到 /dev/null,例如:

# ls >/dev/null2>&1

注重:此處的順序不能更改,否則達不到想要的效果,此時先将标準輸出重定向到/dev/null,然後将标準錯誤重定向到标準輸出,由于标準輸出已經重定向到了/dev/null,是以标準錯誤也會重定向到/dev/null,于是一切靜靜靜:-)

另外 :

make >& make_log

意思是把标準輸出和錯誤輸出都重定向, make>out 隻重定向标準輸出!!!!!

>log 表示把标準輸出重新定向到檔案log中

>& log表示把标準輸出和錯誤輸出都定向到檔案log中,相當于 >log2>&1