# 版權宣告: 1999 Copyright OLS3 All rights reserved.
# 作者: OLS3 (臥龍小三)
# 本講義僅供台南縣 87 學年度網路管理進階研習班上課之用.
# 學員可保存一份自用, 供日後網管時參考備查.
# 作者保有一切形式的著作權.
# 欲作其它用途者, 需經作者授權同意.
# 未經作者授權同意之前, 請勿轉載刊登.
轉向
> 將標準輸出轉向
< 將標準輸入轉向
>> 將標準輸出轉向並且用附加的方式
2> 將標準錯誤轉向
2>&1 標準錯誤的輸出跟隨著標準輸出走
1>&2 標準輸出跟隨著標準錯誤走
例:
gcc -o test test.c 2> errfile
表示: 編譯 test.c 時若有錯誤訊息, 則這些錯誤訊息不會顯示在螢幕上, 而是轉向輸出至 errfile 這個檔案
find / -name test -print > find_it 2> /dev/null
表示: 在尋找 test 檔案時, 將結果轉向到 find_it 中, 而若有錯誤, 則將它轉向至設備檔 null 中, 這表示不會有任何訊息產生.
echo "test redirection" 1>&2
將 test redirect 字串的標準輸出改至標準錯誤.
以下這個程式將不會有任何輸出出現在螢幕上, 輸出已改至標準錯誤了.
echo 'test redirection" 2> errfile 1>&2
# program: redirect_test
這是因為標準錯誤已改至 errfile 中, 而後來標準輸出又跟著標準錯誤走, 所以字串 test redirection 將不會出現在螢幕上, 而是出現在 errfile 檔案中.
將迴圈的輸出轉向(至某一個檔案), 只要在 done 之後加上轉向動作即可.
for i in 1 2 3 4 5
do
echo $i
done > tmp$$
# program: loopredirec_test
輸出結果皆轉向至暫存檔 tmp$$ 中, 其中 $$ 代表處理程序的 PID
同理, 若欲將迴圈的輸出經由管線來處理也是在 done 之後加上動作.
for i in 2 4 1 3 5
doecho $i
done | sort
# program: loopredirec_test2
上述程式會將迴圈輸出經由管線交給 sort 去排序, 其結果和上一個例子相同.