linux 2>&1知識

轉自:http://www.cnblogs.com/itech/archive/0001/01/01/1525590.html


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。


四 注意
通常打開的文件在進程推出的時候自動的關閉,但是更好的辦法是當你使用完以後立即關閉。用m<&-來關閉輸入文件描述符m,用m>&-來關閉輸出文件描述符m。如果你需要關閉標準輸入用<&-; >&- 被用來關閉標準輸出。


五 同時輸出到終端和文件 copy source dest | tee.exe copyerror.txt
發佈了37 篇原創文章 · 獲贊 22 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章