shell 標準輸入與輸出

來源:互聯網
上載者:User
from http://blog.csdn.net/ealpha/archive/2004/10/14/136092.aspx
標準輸入與輸出

執行一個Shell命令列時通常會自動開啟3個標準文檔,即標準輸入文檔(stdin),通常對應終端的鍵盤;標準輸出
文檔(stdout)和標準錯誤輸出文檔(stderr)都對應終端的螢幕。進程將從標準輸入文檔中得到輸入資料,將正常輸出資料輸出到標準輸出文檔,而
將錯誤資訊送到標準錯誤文檔中。

  我們以cat命令為例。cat命令的功能是從命令列給出的檔案中讀取資料,並將這些資料直接送到標準輸出。若使用如下命令

  # cat config

  將會把文檔config的內容依次顯示到螢幕上。但是,如果cat的命令列中沒有參數,它就會從標準輸入中讀取資料,並將其送到標準輸出。例如:

  # cat

  Hello world

  Hello world

  Bye

  Bye

  使用者輸入的每一行都立刻被cat命令輸出到螢幕上。

  另一個例子,命令sort按行讀入文檔本文(當命令列中沒有給出檔案名稱時,表示從標準輸入讀入),將其排序,並將結果送到標準輸出。下面的例子是從標準輸入讀入一個採購單,並將其排序。

  # sort

  bananas

  carrots

  apples

  apples

  bananas

  carrots

  這時我們在螢幕上得到了已排序的採購單。直接使用標準輸入/輸出文檔存在以下問題:

  輸入資料從終端輸入時,使用者輸入的資料只能用一次。下次再想用這些資料時就得重新輸入。而且在終端上輸入時,若輸入有誤修改起來不是很方便。輸
出到終端螢幕上的資訊只能看不能動。我們無法對此輸出做更多處理,如將輸出作為另一命令的輸入進行進一步的處理等。為瞭解決上述問題,Linux系統為輸
入、輸出的傳送引入了另外兩種機制,即輸入/輸出重新導向和管道。

  1.輸入重新導向

  輸入重新導向是指把命令或可執行程式的標準輸入重新導向到指定的檔案中。也就是說,輸入可以不來自鍵盤,而來自一個指定的檔案。所以說,輸入重新導向
主要用於改變一個命令的輸入源,特別是改變那些需要大量輸入的輸入源。例如,命令wc統計指定文檔包含的行數、單詞數和字元數。如果僅在命令列上鍵入:

  # wc

  wc將等待使用者告訴它統計什麼,這時Shell就好像死了一樣,從鍵盤鍵入的所有文本都出現在螢幕上,但並沒有什麼結果,直至按下【Ctrl+
D】,wc才將命令結果顯示在螢幕上。如果給出一個文檔名作為wc命令的參數,如下例所示,wc將返回該文檔所包含的行數、單詞數和字元數。

  # wc /etc/passwd

  20 23 726 /etc/passwd

  另一種把/etc/passwd文檔內容傳給wc命令的方法是重新導向wc的輸入。輸入重新導向的一般形式為:命令<檔案名稱。可以用下面的命令把wc命令的輸入重新導向為/etc/passwd檔案:

  # wc < /etc/passwd

  20 23 726

  另一種輸入重新導向稱為here文檔,它告訴Shell當前命令的標準輸入來自命令列。here文檔的重新導向操作符使用<<。它將一
對分隔字元號(分隔字元號是由<<符號後的單詞來定義的,本例中我們用eof來表示)之間的本文作為標準輸入定向給命令。下例將一對分隔字元號
eof之間的本文作為wc命令的輸入,統計出本文的行數、單詞數和字元數。

  [root@mail root]# wc << eof

  > hello

  > world

  > are you here?

  > eof

  3 5 26

  在<<操作符後面,任何字元或單詞都可以作為本文開始前的分隔字元號,本例中使用eof就作為分隔字元號。here文檔的本文一直延續
到遇見另一個分隔字元號為止。第二個分隔字元號應出現在新行的開頭。這時here文檔的本文(不包括開始和結束的分隔字元號)將重新定向送給命令wc作為它的標
准輸入。

  由於大多數命令都以參數的形式在命令列上指定輸入檔的檔案名稱,所以輸入重新導向並不經常使用。儘管如此,當要使用一個不接受檔名作為輸入參數的命令,而需要的輸入內容又存在一個文檔裡時,就能用輸入重新導向解決問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.