NO IMAGE

開篇:

  當在執行shell命令時,常見的就是輸出在螢幕上,但是我們有些時候需要儲存輸出結果或者丟棄輸出錯誤,就需要重定向了。

什麼是資料流重定向:

image

  當我們執行一個命令(命令不也是程式嘛),可能由檔案或者鍵盤讀入資料,經過處理之後,再將結果輸出到螢幕上。圖中,standard output與standard error output分別代表標準輸出和標準錯誤輸出,預設都是輸出到螢幕上來。還有standard input代表標準輸入。其實它們在linux分別對應三個檔案(linux下一切皆檔案大家都應該熟悉吧)。

檔案描述符 裝置檔案 說明
0 /dev/stdin 標準輸入(使用< 或者<<)
1 /dev/stdout 標準輸出(使用>或者>>)
2 /dev/stderr 標準錯誤(使用2>或者2>>)

檔案描述符:檔案描述符在形式上是一個非負整數。實際上,它是一個索引值,指向核心為每一個程序所維護的該程序開啟檔案的記錄表。當程式開啟一個現有檔案或者建立一個新檔案時,核心向程序返回一個檔案描述符。在程式設計中,一些涉及底層的程式編寫往往會圍繞著檔案描述符展開。但是檔案描述符這一概念往往只適用於 UNIX、Linux 這樣的作業系統。

大家要注意使用>進行資料重定向時,如果檔案不存在,則會建立一個新的檔案,如果檔案存在,則會刪除檔案原來的資料,然後寫入新資料。如果不想覆蓋,則使用>>進行累加,它會直接append。

常見的資料重定向技巧:

   標準錯誤重定向到無底洞(/dev/null,大家應該很熟悉吧):command  parameter 2>/dev/null

   標準輸出與標準錯誤重定向到同一個檔案中 :command  parameter > file 2>&1 或者command  parameter >& file  

   如果需要重定向到多個檔案則可以使用tee命令

關於資料重定向暫時講這麼多,大家多多使用,多多總結。

   linux是一個有趣的世界,讓我們一起探索吧,希望大牛多多指點,感謝某線上教育提供的實驗環境,share your knowledge with world!!!

  感謝實驗樓提供的線上實驗環境。以後媽媽說,再也不用安裝虛擬機器了。