這篇文章將為大家詳細(xì)講解有關(guān)shell中管道 | 、xargs和exec怎么用,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
為寶坻等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及寶坻網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、寶坻網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
命令行參數(shù):getopt()函數(shù)用于解析命令行參數(shù)
標(biāo)準(zhǔn)輸入:scanf()/gets()等函數(shù)用于獲取標(biāo)準(zhǔn)輸入
管道 |
將前一個(gè)命令的輸出作為標(biāo)準(zhǔn)輸入傳給后面的命令,不會用到任何中間文件與緩沖區(qū)。
xargs
將前一個(gè)命令的輸出作為命令行參數(shù)傳給后面的命令。
> 批量創(chuàng)建文件 pi@raspberrypi:~/test $ touch {1..9}.txt pi@raspberrypi:~/test $ ls 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt > 修改 pi@raspberrypi:~/test $ ls *.txt | xargs -n1 -i{} mv {} {}_bak pi@raspberrypi:~/test $ ls 1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak 5.txt_bak 6.txt_bak 7.txt_bak 8.txt_bak 9.txt_bak
exec
find命令中-exec參數(shù)將查詢結(jié)果通過命令行參數(shù)傳遞給后面的命令。
-exec與xargs不同的是:-exec是將結(jié)果逐條傳遞給后面的命令,后面的命令逐條執(zhí)行。xargs是將結(jié)果作為一個(gè)列表全部傳遞給后面的命令,后面的命令一次性執(zhí)行參數(shù)串,可以通過xargs -p ls -l來查看即將要執(zhí)行的完整的命令。
pi@raspberrypi:~/test $ find . -name "*txt*" |xargs -p ls -l rm ls -l rm ./4.txt ./9.txt ./2.txt ./1.txt ./6.txt ./7.txt ./8.txt ./3.txt ./5.txt ?...
目前已知的只能讀取命令行參數(shù)的命令有:ls、rm。
通過分析-exec與xargs的不同,就會發(fā)現(xiàn)如果在find中使用-exec+ls -lrt的方式,列表并沒有進(jìn)行排序,若想要排序,可使用xargs+ls -lrt,不過要注意-exec與xargs區(qū)別
關(guān)于“shell中管道 | 、xargs和exec怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。