[拾 得]pipe和xargs的恩怨情仇
阿新 • • 發佈:2017-10-01
命令參數 字母 得到 實現 朋友 -i org 標準輸入 echo
Photo by Joshua Sortino on Unsplash
堅持知識分享,該文章由Alopex編著, 轉載請註明源地址: http://www.cnblogs.com/alopex/
索引:
xargs :
其用途是從標準輸入中"重構"和執行命令.
基於pipe上面流水線的比喻, xargs 我們可將其看作是流水線中的一臺機器 (但這臺機器有點特殊)
首先,像 grep, sed, awk 這些機器(命令)一般都能接收來自 pipe這個傳輸帶送過來的毛加工材料, 但是如果命令是cp , echo 等機器(命令), 卻不能接收這些加工材料,輕則無視它,嚴重的直接(罷工)報錯.這個時候就需要 xargs 這臺機器(命令)先對材料進行合適的加工,再交給這些挑剔的機器(命令)
其此, 在大多數Linux kernel(可使用命令 $ uname -r 查看 )為2.6.23之前的版本, 普遍無法執行大參數過長的命令. 這時借用xargs, 就能很好地規避這個問題, 實現命令的暢通執行.
到這,善於思考的你,可能就會有這樣一個疑問,是什麽造成毛加工(命令的輸出) 後的產品,得某些機器(命令)必須要讓xargs協助他們才能繼續工作呢?
- pipe 與 xargs 的用途
- 一個head 例子的引入
- STDIN 與 argument 的關系
- 對pipe 與 xargs的總結
- 能夠理解 pipe 和 xargs 的作用
- 可以理解 為什麽有了 pipe後我們還需要 xargs
- 對 stdin , argument 和 option 有較為簡單的認識
- 涉及命令 pipe(|) , xargs, head, echo, wc
- pipe 與 xargs 的用途
- 一個head命令的例子引入
- STDIN 與 argument 的關系
- pipe 和 xargs 的總結
- 命令處理後的數據為stdin, 但是有些命令無法對stdin進行處理,他們必須依賴其他工具如 xargs 對其進行加工,使的加工後的數據適合他們處理
- 僅上面的例子分析 , head 是一既能處理stdin 又能處理 argument 的命令. 由於輸出通過管道符後,得到的是stdin, 因此 file* 就會被當作流處理, head命令就把它打印處理
- 當流經過了 xargs 處理後, 就稱為了head 的argument, 所以 head命令就以文件的方式對待它,並將文件的內容打印到屏幕上
[拾 得]pipe和xargs的恩怨情仇