中文:Archit Modi,翻譯:Linux中國(guó)/geekpi
linux.cn/article-9992-1.html
在Linux中,管道允許您將一個(gè)命令的輸出發(fā)送到另一個(gè)命令。管道,顧名思義,可以將一個(gè)過程的標(biāo)準(zhǔn)輸出、輸入和錯(cuò)誤重定向到另一個(gè)過程進(jìn)行進(jìn)一步處理。
“管道”(或“未命名管道”)命令的語(yǔ)法是在兩個(gè)命令之間添加|字符:
命令-1 |命令-2...|命令-N
這里,不能通過另一個(gè)會(huì)話訪問管道;它是臨時(shí)創(chuàng)建的,用于接收命令-1的執(zhí)行并重定向標(biāo)準(zhǔn)輸出。成功執(zhí)行后刪除。
在上面的例子中,contents.txt包含了一個(gè)特定目錄中所有文件的列表,具體來(lái)說(shuō)就是ls -al命令的輸出。我們首先通過管道使用關(guān)鍵字“file”從contents.txt中對(duì)文件名進(jìn)行g(shù)rep(如圖),所以cat命令的輸出作為grep命令的輸入提供。接下來(lái),我們添加一個(gè)管道來(lái)執(zhí)行awk命令,它在grep命令的過濾輸出中顯示第9列。我們也可以使用wc -l命令來(lái)計(jì)算contents.txt中的行數(shù)
只要系統(tǒng)啟動(dòng)并運(yùn)行,或者直到它被刪除,命名管道就可以連續(xù)使用。它是一個(gè)遵循先進(jìn)先出機(jī)制的特殊文件??梢韵衿胀ㄎ募粯邮褂?。就是可以寫,可以讀,然后打開或者關(guān)閉。要?jiǎng)?chuàng)建命名管道,命令如下:
mkfifo <。管道名稱>;
這將創(chuàng)建一個(gè)命名管道文件,甚至可以在多個(gè)shell會(huì)話中使用。
創(chuàng)建先進(jìn)先出命名管道的另一種方法是使用以下命令:
mknod p <。管道名稱>;
要將任何命令的標(biāo)準(zhǔn)輸出重定向到其他命令,請(qǐng)使用>:符號(hào)。要重定向任何命令的標(biāo)準(zhǔn)輸入,請(qǐng)使用
如上所示,ls -al命令的輸出被重定向到contents.txt并插入到文件中。類似地,尾部命令的輸入是通過
在這里,我們創(chuàng)建一個(gè)命名管道,并將ls -al命令的輸出重定向到命名管道。我們可以打開一個(gè)新的shell會(huì)話,并為管道的內(nèi)容命名。如前所述,它顯示了ls -al命令的輸出。請(qǐng)注意,命名管道的大小為零,并且有一個(gè)標(biāo)志“p”。
所以,下次在Linux終端上使用命令,在命令之間移動(dòng)數(shù)據(jù)的時(shí)候,我希望管道能讓這個(gè)過程變得快速簡(jiǎn)單。
[關(guān)于提交]
如果有原創(chuàng)的好文章投稿,請(qǐng)直接發(fā)消息到官方號(hào)。
1.《命名管道 介紹 Linux 中的管道和命名管道》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《命名管道 介紹 Linux 中的管道和命名管道》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/guonei/793144.html