在 Linux 中我們執行了一個程式,程式運作時通常會有 3 個資料方向,也就是 訊息輸入(stdin)、一般輸出(stdout),與 錯誤輸出(stderr),程式執行時可能會有大量的訊息產出,我們會不好分辦這些項目是一般訊息或是錯誤訊息,這時候就需要做訊息的重導。
比方我們使用了一個指令叫做 foo
,執行時它在畫面上顯示了 "Hello" 字樣,那麼這個字樣到底是一般的訊息輸出,還是錯誤資訊呢?此時重導功能就能協助我們做訊息的分類。
程式運作時的輸入我們稱之為 stdin,基本上是透過鍵盤的輸入取得訊息,當然也可以其它地方輸入,比如檔案、上一個程式的輸出結果等方式。
程式運作完後的產出訊息就分為 2 種,一種為一般輸出 (stdout),另一個則為錯誤輸出 (stderr),預設這些輸出會顯示在畫面上,但我們也可以把這些輸出重新導到想要的地方,比如檔案或另一個程式。
瞭解訊息重導的技巧後,對於日常的維護作業、記錄分析或自動化作業都會有所幫助。
訊息導入與導出方向 |
---|
標準輸入(stdin,代號 0):程式的主要輸入通道。預設是鍵盤,但可以重導來自檔案或其他命令的輸出,這為自動化流程提供了基礎。
標準輸出(stdout,代號 1):程式的主要輸出通道。通常顯示在終端機上,但可以重導到檔案或作為其他命令的輸入,讓數據處理和連接變得非常靈活。
標準錯誤輸出(stderr,代號 2):專門用於錯誤和警告訊息的輸出通道。可重導到檔案或其他命令,有助於專注錯誤分析和日誌記錄。
我們可以看到重導不僅使系統訊息管理更加模組化,還允許對輸出進行細項的控制和分類。這三個通道的理解和運用是使用 Linux 系統的基礎,也是提高工作效率和靈活性的關鍵工具。
我們可以透過一些方法,重新導向訊息,也就是說把輸出或輸入的方式改到別的地方去或是從別的地方來。
以下為基本說明:
stdout:通過使用 >
或 >>
符號,我們可以將程式的標準輸出重新導向到檔案。使用單一的 >
會覆蓋文件的內容,而使用 >>
則會將內容附加到檔案中。
stderr:stderr 重導的方式與 stdout 大致相同,只需要在重導符號之前(沒有空白)加入 2 的數字(因為 stderr 的代號為 2)就可以了。比如使用 2>
符號可以將 stderr 重新導向到指定檔案。
stdin:通過使用 <
符號可以將檔案的內容作為程式的標準輸入。stdin 的資料來原也可以使用前一程式的標準輸出,使用 pipe 的符號來表示:|
透過這些基本的重新導向操作,我們可以更靈活地控制程式的輸入和輸出。無論是日誌記錄、錯誤追蹤,還是創建複雜的數據處理管道,重新導向都是一個強大而靈活的工具。