簡單來說就是,一個命令的結(jié)果作為另外一個命令(結(jié)果)的輸入,管道是linux提供的一種常見的進程通信工具,也是很多shell命令能夠靈活組合產(chǎn)生強大用途的一個重要工具。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、嘉禾網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5建站、商城開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為嘉禾等各大城市提供網(wǎng)站開發(fā)制作服務。
管道是Linux由Unix那里繼承過來的進程間的通信機制,它是Unix早期的一個重要通信機制。其思想是,在內(nèi)存中創(chuàng)建一個共享文件,從而使通信雙方利用這個共享文件來傳遞信息。由于這種方式具有單向傳遞數(shù)據(jù)的特點,所以這個作為傳遞消息的共享文件就叫做“管道”。
在管道的具體實現(xiàn)中,根據(jù)通信所使用的的文件是否具有名稱,有“匿名管道”和“命名管道”。
管道命令就是用來連接多條指令的,前一條指令的輸出流向會作為后一條指令的操作對象。
管道命令的操作符是:|,它只能處理由前面一條指令傳出的正確輸出信息,對錯誤信息是沒有直接處理能力的。然后,傳遞給下一條指令,作為操作對象。
基本格式:
指令1 | 指令2 | …
【指令1】正確輸出,作為【指令2】的輸入,然后【指令2】的輸出作為【指令3】的輸入,如果【指令3】有輸出,那么輸出就會直接顯示在屏幕上面了。通過管道之后【指令1】和【指令2】的正確輸出是不顯示在屏幕上面的。
【提醒注意】
管道命令只能處理前一條指令的正確輸出,不能處理錯誤輸出;
管道命令的后一條指令,必須能夠接收標準輸入流命令才能執(zhí)行。
使用示例
1、分頁顯示/etc目錄中內(nèi)容的詳細信息
$ ls -l /etc | more
2、將一個字符串輸入到一個文件中
$ echo “hello world” | cat hello.txt
利用Linux所提供的管道符“|”將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入。 連續(xù)使用管道意味著第一個命令的輸出會作為 第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,依此類推。下面來看看管道是如何在構(gòu)造一條Linux命令中得到應用的。
注意:
1、管道命令只處理前一個命令正確輸出,不處理錯誤輸出。
2、管道命令右邊命令,必須能夠接收標準輸入流命令才行。
這條命令使用一個管道符“|”建立了一個管道。管道將rpm -qa命令的輸出(包括系統(tǒng)中所有安裝的RPM包)作為grep命令的輸入,從而列出帶有l(wèi)icq字符的RPM包來。
這條命令使用了兩個管道,利用第一個管道將cat命令(顯示passwd文件的內(nèi)容)的輸出送給grep命令,grep命令找出含有“/bin /bash”的所有行;第二個管道將grep的輸出送給wc命令,wc命令統(tǒng)計出輸入中的行數(shù)。這個命令的功能在于找出系統(tǒng)中有多少個用戶使用bash。
區(qū)別是:
1、左邊的命令應該有標準輸出 | 右邊的命令應該接受標準輸入
左邊的命令應該有標準輸出 右邊只能是文件
左邊的命令應該需要標準輸入 右邊只能是文件
2、管道觸發(fā)兩個子進程執(zhí)行"|"兩邊的程序;而重定向是在一個進程內(nèi)執(zhí)行
這些都是網(wǎng)上總結(jié)很多的,其實只要多加清楚用法,也一定有自己的一份不同描述。
網(wǎng)站欄目:linux命令管道 linux常用命令管道
網(wǎng)站路徑:http://jinyejixie.com/article44/dddphhe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、自適應網(wǎng)站、網(wǎng)站內(nèi)鏈、建站公司、移動網(wǎng)站建設、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)