管道

將兩個或者多個命令(程序或者進程)連接到一起,把一個命令的輸出作爲下一個命令的輸入,以這種方式連接的兩個或者多個命令就形成了管道(pipe)。

管道使用豎線|連接多個命令,具體語法格式如下:

command1 | command2 [ | commandN… ]

當在兩個命令之間設置管道時,管道符|左邊命令的輸出就變成了右邊命令的輸入。只要第一個命令向標準輸出寫入,而第二個命令是從標準輸入讀取,。大部分的 Linux 命令都可以用來形成管道。

注意:command1 必須能正確輸出,而 command2 必須可以處理 command2 的輸出結果;而且 command2 只能處理 command1 的正確輸出結果,不能處理 command1 的錯誤信息。

管道符|與兩側的命令之間的空格可有可無,推薦在管道符|和兩側的命令之間使用空格,以增加代碼的可讀性。

管道是由內核管理的一個緩衝區,相當於我們放入內存中的一個紙條。管道的一端連接一個進程的輸出。這個進程會向管道中放入信息。管道的另一端連接一個進程的輸入,這個進程取出被放入管道的信息。一個緩衝區不需要很大,它被設計成爲環形的數據結構,以便管道可以被循環利用。當管道中沒有信息的話,從管道中讀取的進程會等待,直到另一端的進程放入信息。當管道被放滿信息的時候,嘗試放入信息的進程會堵塞,直到另一端的進程取出信息。當兩個進程都終結的時候,管道也自動消失。

示例:查詢帶有關鍵字 java 的進程,一條一條列出。
在這裏插入圖片描述

示例:把cat xxx.txt 輸出結果交給 more 處理
在這裏插入圖片描述
示例: 查看 emp.txt 文件4-7行的內容

head -n 7 a.txt | tail -n 4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章