日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

再说linux命令行的管道

發(fā)布時間:2024/1/1 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 再说linux命令行的管道 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

linux管道

linux命令上的管道大家想必是經(jīng)常用了 cat 1.txt | grep xxx; 這是常見的用法,說說管道,pipe是 liunx上常見的IPC方法,在 linux system programming 中有兩種,有名管道和無名管道,有名管道可以用在任意兩個進(jìn)程,而無名管道只能用在有親屬關(guān)系的進(jìn)程,如我們一般所寫的命令行就是無名管道(我猜是,不知道shell會怎么做,當(dāng)然可以不是:) )。管道是需要內(nèi)核來做一些維護(hù)工作的(無名管道顯然是進(jìn)程持續(xù)性,但有名管道是不是呢,記不清,請翻閱unix network programming :IPC, 我覺得應(yīng)該是,好像沒有必要搞得不一樣),進(jìn)程需要進(jìn)入內(nèi)核態(tài)中進(jìn)行讀取,所以編程中這不是一種快速的RPC,命令行就隨意了。
說遠(yuǎn)了,這里主要說命令行,重點是什么,既管道兩邊命令是屬于不同進(jìn)程空間的,那么這就意味的左邊的變量,是傳不到右邊的管道,或者右邊的管道,變量值不能給左邊,舉個例子:
下面展示一些 內(nèi)聯(lián)代碼片。

// A code block count =0 cat test.txt | while read lline dolet count++ done echo $count

這里count會輸出test.txt的行數(shù)嗎?不會,只會輸出0,因為管道右邊的while已經(jīng)是子進(jìn)程了,count不是父進(jìn)程中的count.
再說一下其他的有趣問題。
下面展示一些 內(nèi)聯(lián)代碼片。

// An highlighted block cat test.txt this_is_test.txt

test.tx內(nèi)容如上,那么

// An highlighted block echo test.txt | cat

這么做可以顯示test.txt的內(nèi)容嗎,其實不可以,因為管道做的內(nèi)容是將上一個命令的輸出作為下一個命令的標(biāo)準(zhǔn)輸入,所以,cat 獲得了標(biāo)準(zhǔn)輸入,而不是一個參數(shù),cat只能再如實的打印test.txt,這里應(yīng)該用xargs。
同時find -exec {} ; 也可以做類似的事。

總結(jié)

以上是生活随笔為你收集整理的再说linux命令行的管道的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。