2>&1 linux


2>&1使用

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


六 參考

1)http://docstore.mik.ua/orelly/unix/upt/ch45_21.htm
2)http://www.unix.com/shell-programming-scripting/34011-meaning-dev-null-2-1-a.html
3)http://docstore.mik.ua/orelly/unix/upt/ch08_13.htm


作者:iTech
出處:http://itech.cnblogs.com/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM