首頁 > 其他 > 詳細

xargs命令

時間:2019-06-19 09:57:10      閱讀:33      評論:0      收藏:0      [點我收藏+]

標簽:支持   spa   http   class   輸入   rgs   忽略   實驗   三種   

1.簡介

xargs 是給命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。

xargs 可以將管道或標準輸入(stdin)數據轉換成命令行參數,也能夠從文件的輸出中讀取數據。

xargs 也可以將單行或多行文本輸入轉換為其他格式,例如多行變單行,單行變多行。

xargs 默認的命令是 echo,這意味著通過管道傳遞給 xargs 的輸入將會包含換行和空白,不過通過 xargs 的處理,換行和空白將被空格取代。

xargs 是一個強有力的命令,它能夠捕獲一個命令的輸出,然后傳遞給另外一個命令。

之所以能用到這個命令,關鍵是由于很多命令不支持|管道來傳遞參數,而日常工作中有有這個必要,所以就有了 xargs 命令,xargs 一般是和管道一起使用。

2.深入理解

xargs的作用不僅僅限于簡單的stdin傳遞到命令的參數位,它更大的作用是可以將stdin或者文件stdin分割成批,每個批中有很多分割片段,然后將這些片段按批交給xargs后面的命令進行處理。

通俗的講就是原來只能一個一個傳遞,分批可以實現10個10個傳遞,每傳遞一次,xargs后面的命令處理這10個中的每一個,處理完了處理下一個傳遞過來的批,如下圖。

技術分享圖片

但是應該注意的是,盡管實現了分批處理,但是并沒有提高任何效率,因為分批傳遞之后還是一次執行一個。而且有時候分批傳遞后是作為一個參數的整體,并不會將分批中的信息分段執行。實現分批傳遞的目的僅僅是為了解決一些問題。

剩下的就是處理xargs的細節問題了,比如如何分割(xargs、xargs -d、xargs -0),分割后如何劃批(xargs -n、xargs -L),參數如何傳遞(xargs -i)。另外xargs還提供詢問交互式處理(-p選項)和預先打印一遍命令的執行情況(-t選項),傳遞終止符(-E選項)等。

其實這里已經暗示了xargs處理的優先級或順序了:先分割,再分批,然后傳遞到參數位。

分割有三種方法:獨立的xargs、xargs -d和xargs -0。后兩者可以配合起來使用,之所以不能配合獨立的xargs使用,答案是顯然的,指定了-d或-0選項意味著它不再是獨立的。

分批方法從邏輯上說是兩種:-n選項和-L選項。但我覺得還應該包含傳遞階段的選項-i。假如-i不是分批選項,則它將接收分批的結果。然而事實并非如此,當指定了-i選項之后會忽略-n和-L選項。從我多次實驗的結果推導的優先級結論來說,它們的優先級從-n –> -L –> -i逐漸變高,當指定高優先級的分批選項會覆蓋低優先級的分批選項,所以我覺得-i也是分批選項。并且后文中我也將其當成分批選項來介紹和說明。

3.命令格式

somecommand |xargs -item  command

 

參數:

  • -a file 從文件中讀入作為sdtin
  • -e flag ,注意有的時候可能會是-E,flag必須是一個以空格分隔的標志,當xargs分析到含有flag這個標志的時候就停止。
  • -p 當每次執行一個argument的時候詢問一次用戶。
  • -n num 后面加次數,表示命令在執行的時候一次用的argument的個數,默認是用所有的。
  • -t 表示先打印命令,然后再執行。
  • -i 或者是-I,這得看linux支持了,將xargs的每項名稱,一般是一行一行賦值給 {},可以用 {} 代替。
  • -r no-run-if-empty 當xargs的輸入為空的時候則停止xargs,不用再去執行了。
  • -s num 命令行的最大字符數,指的是 xargs 后面那個命令的最大命令行字符數。
  • -L num 從標準輸入一次讀取 num 行送給 command 命令。
  • -l 同 -L。
  • -d delim 分隔符,默認的xargs分隔符是回車,argument的分隔符是空格,這里修改的是xargs的分隔符。
  • -x exit的意思,主要是配合-s使用。。
  • -P 修改最大的進程數,默認是1,為0時候為as many as it can ,這個例子我沒有想到,應該平時都用不到的吧。

xargs命令

標簽:支持   spa   http   class   輸入   rgs   忽略   實驗   三種   

原文:https://www.cnblogs.com/wqbin/p/11049518.html

(0)
(0)
   
舉報
評論 一句話評論(0
0條  
登錄后才能評論!
? 2014 bubuko.com 版權所有 魯ICP備09046678號-4
打開技術之扣,分享程序人生!
             

魯公網安備 37021202000002號

湖南快乐十分钟走势图