再说linux命令行的管道
linux管道
linux命令上的管道大家想必是經常用了 cat 1.txt | grep xxx; 這是常見的用法,說說管道,pipe是 liunx上常見的IPC方法,在 linux system programming 中有兩種,有名管道和無名管道,有名管道可以用在任意兩個進程,而無名管道只能用在有親屬關系的進程,如我們一般所寫的命令行就是無名管道(我猜是,不知道shell會怎么做,當然可以不是:) )。管道是需要內核來做一些維護工作的(無名管道顯然是進程持續性,但有名管道是不是呢,記不清,請翻閱unix network programming :IPC, 我覺得應該是,好像沒有必要搞得不一樣),進程需要進入內核態中進行讀取,所以編程中這不是一種快速的RPC,命令行就隨意了。
說遠了,這里主要說命令行,重點是什么,既管道兩邊命令是屬于不同進程空間的,那么這就意味的左邊的變量,是傳不到右邊的管道,或者右邊的管道,變量值不能給左邊,舉個例子:
下面展示一些 內聯代碼片。
這里count會輸出test.txt的行數嗎?不會,只會輸出0,因為管道右邊的while已經是子進程了,count不是父進程中的count.
再說一下其他的有趣問題。
下面展示一些 內聯代碼片。
test.tx內容如上,那么
// An highlighted block echo test.txt | cat這么做可以顯示test.txt的內容嗎,其實不可以,因為管道做的內容是將上一個命令的輸出作為下一個命令的標準輸入,所以,cat 獲得了標準輸入,而不是一個參數,cat只能再如實的打印test.txt,這里應該用xargs。
同時find -exec {} ; 也可以做類似的事。
總結
以上是生活随笔為你收集整理的再说linux命令行的管道的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速排序算法(java实现)
- 下一篇: 两个显示器分屏显示,如何设定哪个是1,哪