Linux命令備忘例項(9) 引數代換xargs

2021-07-05 04:27:08 字數 1359 閱讀 6258

管道命令可以將stdout重定向到stdin,但是對於只能接受命令行引數的形式接收資料的命令,無法通過stdin接收資料。此時就需要將stdin轉換為後續命令的命令列引數。xargs就是實現這個功能的命令:擅長將stdin的資料轉換為命令列引數,也可以將單行或多行文字輸入轉換為其他格式。

一般編寫shell命令都追求單行命令,使用管道符進行連線,如果後續命令需要以命令列引數接收資料,那麼xargs就是構建單行命令的重要元件之一。

xargs需要緊跟在管道符之後,以stdin作為輸入資料來源。將接收到的資料重新格式化,然後傳給後續需要命令列引數的命令。

xargs預設的定界符是空格,每乙個引數是由這個定界符分割的。預設xargs可以將換行符去除並用空格分割當做多個引數。

user@ubuntu

:~$ echo -e "a b c\nd e"

a b c

d euser@ubuntu

:~$ echo -e "a b c\nd e" | xargs

a b c d e

xargs的-n選項可以指定每行的引數個數的最大數目。

user@ubuntu

:~$ echo -e "a b c d e" | xargs -n 2

a bc d

e

-d選項可以用來指定自定義的定界符來分割stdin的輸入資料。

user@ubuntu

:~$ echo -e "axbxcxdxe" | xargs -d x tr [:lower

:] [:upper:]a

bcde

使用-i選項可以指定乙個替換字串,然後在命令列引數中用這個替換字串來代替引數。

user@ubuntu:~$ echo -e

"axbxcxdxe"

| xargs -d x -i {} command-cmd {}

-0引數可以指定\0作為定界符,可以避免很多問題。

user@ubuntu:~$ find .

-type f -name

"*.bak"

-print0

| xargs -

0 rm -f

user@ubuntu:~$ find /src -type f -name

"*.py"

-print0

| xargs -

0 wc -l

Linux命令備忘例項(1) 終端輸出

終端是使用者與shell環境進行互動的視窗,所有命令的互動結果大部分都是從終端直接顯示給使用者,因此這部分是友好顯示結果的基礎。echo是基本的終端輸出命令,直接將傳入的引數輸入,命令格式如下 echo options tobeoutput預設情況下會在每次呼叫之後新增乙個換行符。使用 n選項可以消...

linux 命令 備忘

排除某個資料夾 具體應該是 prune這個引數 比如你想找某個dll檔案,但不想找.dirname這個資料夾應該這麼寫 find path dirname prune o name dll print r 遞迴,e 正則 l 只顯示檔名 grep 排除某個目錄 exclude dir grep 顯示...

linux命令備忘

命令大全網 分割槽 mount umount fdisk 虛擬機器擴容 dd命令 dd 0.檢視ubuntu的版本 sudo lsb release a 0.查詢 find find 的 name引數的準確名字,如果想找名字相關的可以用萬用字元,如lib 查詢目錄下的所有檔案中是否含有某個字串 fi...