iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0
自我挑戰組

linux 能力upup系列 第 28

Day28 資料流重新導向I

今天要來介紹的部分是資料流重新導向的部分,這個東西其實就是字面上的意思,就是將某個指令成功執行後所要輸出到螢幕上的資料,將那些資料重新導向到其他地方。

那至於什麼是資料流重新導向,我們要從指令的執行結果開始談起。

執行一個指令後,這個指令可能會由檔案讀取資料,經過處理後在將結果輸出到螢幕上。那輸出的部分可以分為兩種來看,一種是標準輸出,而另外一種就是標準錯誤輸出,這兩種輸出預設都是輸出到螢幕上。

這邊我們稍微細談一下什麼是標準輸出跟標準錯誤輸出,前者代表的是指令執行所回傳的正確訊息,後者代表的是指令執行失敗後所回傳的錯誤訊息。就跟剛剛提到的一樣,兩者預設輸出的區域都是螢幕,理所當然螢幕肯定亂。要處理這個問題,基本上就是透過資料流重新導向將標準輸出跟標準錯誤輸出分別導向至不同的檔案或裝置,分別傳送的特殊字元如下

(1)標準輸入:代碼為0,使用<或<<
(2)標準輸出:代碼為1,使用>或>>
(3)標準錯誤輸出:代碼為2,使用2>或2>>

那因為資料流重新導向而建構出來的檔案會具備以下特性

(1)假如該檔案不存在,系統會自動建立該檔案
(2)假如該檔案存在,系統會先將該檔案的內容清空,在寫入資料
(3)也就是說,以>輸出到一個已存在的檔案中,該檔案就會被覆蓋
(4)如果不想檔案被覆蓋,善用>>跟2>>

上面這幾點對標準輸出跟標準錯誤輸出是一樣的

那以下是指令組合代表的意義
1>:用覆蓋的方法,將正確的資料輸出到指定的檔案或裝置上
1>>:用累加的方法,將正確的資料輸出到指定的檔案或裝置上
2>:用覆蓋的方法,將錯誤的資料輸出到指定的檔案或裝置上
2>>:用累加的方法,將錯誤的資料輸出到指定的檔案或裝置上

以上就是本人介紹資料流重新導向的部分,如果有缺漏的部分,也麻煩大家多指教


上一篇
Day27 歷史命令 history
下一篇
Day29 資料流重新導向II
系列文
linux 能力upup30

尚未有邦友留言

立即登入留言