週五候機樓:標準流

歡迎來到另一個星期五...

現在是時候了解終端的一小部分了。 經過深思熟慮後,我決定創建一個有關 標準流; 儘管這是膚淺的,但我認為這是每個人都應該知道的。

標準流

標準流 它由用戶和終端之間的幾個通信通道組成。 這些輸入/輸出“通道”在執行命令時顯示或捕獲信息。

標準流的快速圖表。

標準流的快速圖表。

3個I / O連接為: 標準輸入 標準輸入, 標準輸出 標準輸出, 斯特德 標準錯誤.

標準輸入:標準輸入

標準輸入是我們通過管道,重定向,鍵盤等從命令捕獲信息的方式。 我們用文件描述符0標識它。

描述符是訪問(在這種情況下)輸入和輸出通道的指示符。 這些是int值,通常為0、1和2。

一個標準輸入的例子是:

排序<列出

它獲取列表中的所有信息(在本例中為隨機寫入的數字),並且在將文件重定向到ls命令時,將按字母順序對數字列表進行排序。 在此示例中,標誌是隱式的。

標準輸出:標準輸出

顧名思義,標準輸出通過控制台顯示命令的輸出。 如果我們寫ls,它在屏幕上顯示給我們的所有信息就是標準輸出。 它由描述符1表示。

現在,我將嘗試使用bash編寫的腳本實例化stdin和stdout,僅僅是因為我喜歡bash haha​​ha。 🙂

測試文件

#!/ bin / bash如果[-t 0]; 然後回顯“您正在使用stdout” elif [-t 1]; 然後回顯“您正在使用標準輸入”,否則回顯“殘酷錯誤” fi

現在,截圖展示瞭如何使用腳本。 重定向或在腳本中使用管道時,請使用 測試 知道是否僅執行標準輸出腳本,如果不是,則顯然是標準輸入。

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
有問題的腳本及其輸出...

有問題的腳本及其輸出...

請記住修改命令並進行練習,以便您學習。

stderr:標準錯誤

標準錯誤是程序顯示錯誤或診斷的方式。 它由描述符2表示。

為了理解這個概念,就是這種情況:當我們要保存命令錯誤時,我們考慮的第一件事就是將輸出重定向到純文本。

ls> info.txt

這將起作用,命令信息將存儲在純文本文件中。 但是在保存錯誤時,它不會存儲錯誤,而是將其顯示在屏幕上,並且純文本文件為空。

相反,如果我們使用2>指示將stderr保存在文件中:

ls foo 2> info.txt

現在,它將錯誤信息保存在文本文件中。

壳类 允許使用&>將stderr和stdout存儲在單個命令中,其中Foo是不存在的目錄

ls下載Foo&> info.txt

該文件將包含在Foo中執行ls時的錯誤信息,並將在“下載”下列出目錄。

最後,那個著名的是什麼 2>&1?

簡單,將stderr重定向到stdout。 在&和1中間的&表示它將重定向到stdout。 如果不存在,它將類似於...“將錯誤重定向到文件1”。

並可以重定向:

  • 標準輸出到文件
  • stderr到文件
  • 標準輸出到標準錯誤
  • stderr到stdout
  • stderr和stdout到文件
  • 等等

今天的人就是這樣。 我們閱讀並感謝您的光臨。 😀


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   埃利奧時間3000 他說:

    有趣。 多虧了您的教程,我更喜歡Bash。

  2.   昆西·馬古(Quincy Magoo) 他說:

    親愛的,有趣,但是您在以下行中有錯誤:

    “並且在將文件重定向到ls命令時”,應該是“並且在將文件重定向到sort命令時”。

    問候。

  3.   米格爾 他說:

    文本開頭有錯誤,當您指示命令“ ls”時,應為“ sort”:
    «它將獲取列表中的所有信息-在這種情況下為隨機寫入的數字-,並將文件重定向到ls命令時(此處為排序)»

    問候和感謝您分享您的工作

  4.   路人 他說:

    這對cron非常有用,在cron中您希望刷新輸出(/ dev / null),但將錯誤存儲在文件中。 另外,當我這樣做時,我通常使用date命令來確切指定它們何時失敗。

    Bash(sh)具有由Unix哲學開發的這些工具,“做一件事情,做好一件事情”

  5.   洛洛 他說:

    好吧,我什麼都沒發現

    1.    語音 他說:

      哈哈,很好的解釋了,你不懂什麼?