Shell的命令的結果重定向

jjavaboy發表於2016-06-22

在系統內部,UNIX是以一個整數數字,稱為檔案描述符(file descriptors),表示每個程式開啟的檔案。傳統上,Shell允許開啟至多10個檔案,檔案描述符從0,1,2,...,9

一般來說,

檔案描述符0,表示標準輸入

檔案描述符1,表示標準輸出

檔案描述符2,表示標準錯誤輸出


比如,將程式的輸出傳輸到一個檔案,而程式的錯誤資訊輸出到另一個檔案:

 make 1> out.log 2>err.log

當然,如果你想捨棄錯誤資訊,可以將錯誤資訊輸出到檔案/dev/null,在linux中,我們知道輸出到/dev/null的內容會被系統丟棄掉:

 make 1> out.log 2>/dev/null

其實 1> out.log 中的1是沒有必要的,因為輸出重定向的預設檔案描述符就是標準輸出:檔案描述符1,可以這樣:

 make > out.log 2>err.log

當然,如果你想把程式的標準輸出、錯誤資訊都輸出到同一個檔案,可以這樣:
 make > out.log 2>&1

注意, 2>&1 這4個字元是緊接著的,之間不能有空格的。

相關文章