iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0

什麼是訊息重導

訊息重導概念

在 Linux 中我們執行了一個程式,程式運作時通常會有 3 個資料方向,也就是 訊息輸入(stdin)一般輸出(stdout),與 錯誤輸出(stderr),程式執行時可能會有大量的訊息產出,我們會不好分辦這些項目是一般訊息或是錯誤訊息,這時候就需要做訊息的重導。

比方我們使用了一個指令叫做 foo,執行時它在畫面上顯示了 "Hello" 字樣,那麼這個字樣到底是一般的訊息輸出,還是錯誤資訊呢?此時重導功能就能協助我們做訊息的分類。

程式運作時的輸入我們稱之為 stdin,基本上是透過鍵盤的輸入取得訊息,當然也可以其它地方輸入,比如檔案、上一個程式的輸出結果等方式。

程式運作完後的產出訊息就分為 2 種,一種為一般輸出 (stdout),另一個則為錯誤輸出 (stderr),預設這些輸出會顯示在畫面上,但我們也可以把這些輸出重新導到想要的地方,比如檔案或另一個程式。

瞭解訊息重導的技巧後,對於日常的維護作業、記錄分析或自動化作業都會有所幫助。

重導的 3 個方向

訊息導入與導出方向
  1. 標準輸入(stdin,代號 0):程式的主要輸入通道。預設是鍵盤,但可以重導來自檔案或其他命令的輸出,這為自動化流程提供了基礎。

  2. 標準輸出(stdout,代號 1):程式的主要輸出通道。通常顯示在終端機上,但可以重導到檔案或作為其他命令的輸入,讓數據處理和連接變得非常靈活。

  3. 標準錯誤輸出(stderr,代號 2):專門用於錯誤和警告訊息的輸出通道。可重導到檔案或其他命令,有助於專注錯誤分析和日誌記錄。

我們可以看到重導不僅使系統訊息管理更加模組化,還允許對輸出進行細項的控制和分類。這三個通道的理解和運用是使用 Linux 系統的基礎,也是提高工作效率和靈活性的關鍵工具。

如何重新導向訊息

我們可以透過一些方法,重新導向訊息,也就是說把輸出或輸入的方式改到別的地方去或是從別的地方來。

以下為基本說明:

  1. stdout:通過使用 >>> 符號,我們可以將程式的標準輸出重新導向到檔案。使用單一的 > 會覆蓋文件的內容,而使用 >> 則會將內容附加到檔案中。

  2. stderr:stderr 重導的方式與 stdout 大致相同,只需要在重導符號之前(沒有空白)加入 2 的數字(因為 stderr 的代號為 2)就可以了。比如使用 2> 符號可以將 stderr 重新導向到指定檔案。

  3. stdin:通過使用 < 符號可以將檔案的內容作為程式的標準輸入。stdin 的資料來原也可以使用前一程式的標準輸出,使用 pipe 的符號來表示:|

透過這些基本的重新導向操作,我們可以更靈活地控制程式的輸入和輸出。無論是日誌記錄、錯誤追蹤,還是創建複雜的數據處理管道,重新導向都是一個強大而靈活的工具。


上一篇
Day 11: 權限設定
下一篇
Day 13: 實做訊息重導
系列文
Linux 升華:初學者的探索到專家的洞察30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言