Linux學習筆記(五)—— 2>&1使用

一 相關知識

1)默認地,標準的輸入爲鍵盤,但是也可以來自文件或管道(pipe |)。
2)默認地,標準的輸出爲終端(terminal),但是也可以重定向到文件,管道或後引號(backquotes `)。
3) 默認地,標準的錯誤輸出到終端,但是也可以重定向到文件。
4)標準的輸入,輸出和錯誤輸出分別表示爲STDIN,STDOUT,STDERR,也可以用0,1,2來表示。
5)其實除了以上常用的3中文件描述符,還有3~9也可以作爲文件描述符。3~9你可以認爲是執行某個地方的文件描述符,常被用來作爲臨時的中間描述符。


二 實例

1)command 2>errfile : command的錯誤重定向到文件errfile。
2)command 2>&1 | ...: command的錯誤重定向到標準輸出,錯誤和標準輸出都通過管道傳給下個命令。
3)var=`command 2>&1`: command的錯誤重定向到標準輸出,錯誤和標準輸出都賦值給var。
4)command 3>&2 2>&1 1>&3 | ...:實現標準輸出和錯誤輸出的交換。
5)var=`command 3>&2 2>&1 1>&3`:實現標準輸出和錯誤輸出的交換。
6)command 2>&1 1>&2 | ...     (wrong...) :這個不能實現標準輸出和錯誤輸出的交換。因爲shell從左到右執行命令,當執行完2>&1後,錯誤輸出已經和標準輸出一樣的,再執行 1>&2也沒有意義。


三 "2>&1 file"和 "> file 2>&1"區別

1)cat food 2>&1 >file :錯誤輸出到終端,標準輸出被重定向到文件file。
2)cat food >file 2>&1 :標準輸出被重定向到文件file,然後錯誤輸出也重定向到和標準輸出一樣,所以也錯誤輸出到文件file。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章