shell上:
0表示标準輸入
1表示标準輸出
2表示标準錯誤輸出
> 預設為标準輸出重定向,與 1> 相同
2>&1 意思是把 标準錯誤輸出 重定向到 标準輸出.
&>file 意思是把 标準輸出 和 标準錯誤輸出 都重定向到檔案file中
用例子說話:
1. grep da * 1>&2
2. rm -f $(find / -name core) &> /dev/null
上面兩例中的 & 如何了解,&不是放到背景執行嗎?
解釋:
1.&>file或n>&m均是一個獨立的重定向符号,不要分開來了解。
2.明确檔案和檔案描述符的差別。
3.&>file表示重定向标準輸出和錯誤到檔案
例如:
rm -f $(find / -name core) &> /dev/null,/dev/null是一個檔案,這個檔案比較特殊,所有傳給它的東西它都丢棄掉。
4.n>&m表示使檔案描述符n成為輸出檔案描述符m的副本。這樣做的好處是,有的時候你查找檔案的時候很容易産生無用的資訊,如:2> /dev/null的作用就是不顯示标準錯誤輸出;另外當你運作某些指令的時候,出錯資訊也許很重要,便于你檢查是哪出了毛病,如:2>&1
注意,為了友善了解,必須設定一個環境使得執行grep da *指令會有正常輸出和錯誤輸出,然後分别使用下面的指令生成三個檔案:
grep da * > greplog1
grep da * > greplog2 1>&2
grep da * > greplog3 2>&1 //grep da * 2> greplog4 1>&2 結果一樣
#檢視greplog1會發現裡面隻有正常輸出内容
#檢視greplog2會發現裡面什麼都沒有
#檢視greplog3會發現裡面既有正常輸出内容又有錯誤輸出内容
本文轉自 SoulMio 51CTO部落格,原文連結:http://blog.51cto.com/bovin/1863433,如需轉載請自行聯系原作者