標籤:i/o stdout stdin stderr
I/O即輸入輸出,在linux中標準的輸入輸出裝置為鍵盤和顯示器,當我們執行一條命令時,預設的輸出結果會顯示在螢幕上,如果我們不想讓它顯示在螢幕上時,就需要使用輸出重新導向來讓它顯示在其他裝置或儲存在某個檔案中。
重新導向即修改預設的輸入輸出裝置為其他裝置或檔案;
命令執行過程的資料轉送情況
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/45/08/wKioL1PjfE7ybfNuAADD4xj6CP4390.jpg" title="Drawing1.jpg" width="600" height="195" border="0" hspace="0" vspace="0" style="width:600px;height:195px;" alt="wKioL1PjfE7ybfNuAADD4xj6CP4390.jpg" />
當我們執行一個命令的時候,會由檔案讀取資料,經過處理後,再將結果輸出到螢幕;Standard Output和Standard Output Error分別代表標準輸出和標準錯誤輸出;
在linux系統中,所有的操作都是對檔案進行操作,而對檔案的操作是利用檔案描述符(File Descriptor、FD)來實現的;I/O重新導向通常與FD有關,shell的FD通常有10個0~9;常用的FD有三個:
0:表示Stdin(標準輸入)
1:表示Stdout (標準輸出)
2:表示 Stderr(標準錯誤輸出)
標準輸出是命令執行成功後所返回的資訊
>:以覆蓋方式將標準輸出重新導向輸出到其他裝置或檔案
>>:以追加方式將標準輸出重新導向輸入到其他裝置或檔案
標準錯誤輸出是命令執行失敗後所返回的資訊
2>:以覆蓋方式將標準錯誤輸出重新導向到其他裝置或檔案
2>>:以追加方式將標準錯誤輸出重新導向到其他裝置或檔案
標準輸入是由鍵盤所輸入的資料
<:將原本有鍵盤輸入的資料改為由檔案內容來取代
<<:意為此處文檔,當輸入遇到<<後面跟的內容是會終止輸入
當使用一條命令處理一個檔案時,還要將處理的結果繼續進行後續處理,就可以使用管道來實現將上一條命令的結果交給下一條命令執行;
管道(pipe):操作符 | ,僅能處理上一條命令的標準輸出資訊,對標準錯誤輸出沒有處理能力
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/45/0B/wKiom1Pjhb-wrbg2AACqDu47Q1g347.jpg" title="Drawing2.jpg" width="600" height="108" border="0" hspace="0" vspace="0" style="width:600px;height:108px;" alt="wKiom1Pjhb-wrbg2AACqDu47Q1g347.jpg" />
注意:
1、管道命令只能處理上一條命令的STDOUT資訊,不能處理STDERR資訊
2、管道右邊命令必須是能夠接受標準輸入資料流命令
本文出自 “杆兒男” 部落格,請務必保留此出處http://wtime.blog.51cto.com/8829658/1537172