完成這一章,你能夠做以下事情:
瞭解管道的用途
建立一個管道,使其從一個命令獲得輸出,然後為另一個命令製造輸入
使用tee,cut,tr,more,和pr篩檢程式
10.1 管道簡介
shell提供通過管道將命令連接起來的能力。 通過對檔進行過濾充分了體現UNIX系統操作環境的靈活性。 你能夠使用管道來過濾一個命令的輸出。
這一章會介紹管道,和一些篩檢程式(cut,tr,tee和pr)的使用,這樣你就能對檔或命令的輸出作進一步的處理。
10.2 為什麼使用管道
不使用管道 使用管道
$ who > temp_file
$ wc -l < temp_file
$ rm temp_file
&HTTP://www.aliyun.com/zixun/aggregation/37954.html">nbsp; who | wc -l
如果你使用I/O重定向來完成過濾一個命令的輸出的操作,你會首先重定向一個命令的輸出到暫存檔案然後過濾這個暫存檔案的內容,而當你完成這些操作後,你又要刪除這個暫存檔案。 雖然這種方式擴展了命令的能力,但是刪除暫存檔案的操作顯得不是很方便。
管道讓你直接將一個命令的輸出傳送到另一個命令的輸入,你不需要創建中間檔,因此當你完成操作的時候不需要進行清除操作。 這就是UNIX系統的靈活和強大的具體體現:命令和命令可以被連結在一起,提高了單個命令列的處理能力。
10.3 '|' 符號
「|」 符號(讀成管道符)的作用是聯接兩個命令。 管道符左邊命令的標準輸出會被用作管道符右邊的命令的標準輸入,而出現在管道中間的命令,必須能夠接收標準輸入和輸出到標準輸出。
篩檢程式例如wc,sort,和grep就可以接收標準輸入並產生標準輸出,所以,它們可以出現在一個管道的中間。 通過將命令和篩檢程式連結到一起,使你能夠執行一些複雜的操作。
以下是管道的每一個位置的命令的要求:
任何在一個|符號左邊的命令必須能夠輸出到標準輸出。
任何在 | 符號右邊的命令必須能夠從標準輸入讀取資料。
任何在兩個 | 符號之間的命令必須能夠接收標準輸入並且能夠製造輸出到標準輸出。 (是一個篩檢程式)
more 命令
more 命令被用來在螢幕上顯示檔的內容,一次顯示一屏。 more 命令同樣也能讀取標準輸入。 因此,它能出現在一個管道的右邊,用來控制任何命令的輸出,並且產生輸出到標準輸出。 如果命令的輸出很長(一屏顯示不完),你可以使用more命令實現一次流覽一屏的功能。