成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊一聊Linux 下 Xargs 命令,你知道嗎?

系統(tǒng) Linux
xargs 常常被大家忽略的一個(gè)命令,對(duì)它的一些用法很多人可能不熟悉,其實(shí)它是一個(gè)功能強(qiáng)大的命令,特別是在結(jié)合管道進(jìn)行批量處理方面。

 [[378289]]

xargs 常常被大家忽略的一個(gè)命令,對(duì)它的一些用法很多人可能不熟悉,其實(shí)它是一個(gè)功能強(qiáng)大的命令,特別是在結(jié)合管道進(jìn)行批量處理方面

語(yǔ)法

xargs 語(yǔ)法格式如下

  1. xargs [OPTION]... COMMAND 

作用

xargs 最重要的作用是以空格或者換行作為分隔符,把標(biāo)準(zhǔn)輸入轉(zhuǎn)化成多個(gè)命令行參數(shù),在與管道命令結(jié)合使用時(shí),就能體現(xiàn)出 xargs 的作用

下面以實(shí)例來(lái)說(shuō)明

  1. [root@ecs-centos-7 tmp]# echo "11 22 33" | xargs mkdir 
  2. [root@ecs-centos-7 tmp]# ll 
  3. 總用量 16 
  4. drwxr-xr-x 2 root root 4096 1月  20 00:03 11 
  5. drwxr-xr-x 2 root root 4096 1月  20 00:03 22 
  6. drwxr-xr-x 2 root root 4096 1月  20 00:03 33 

上面的例子中, 管道左側(cè)的命令 echo "11 22 33" 的輸出作為管道右側(cè)命令 xargs mkdir 的輸入, 管道右側(cè)的命令將左側(cè)的輸入以空格或者換行為分隔符分成多個(gè)命令行的參數(shù)

所以 echo "11 22 33" | xargs mkdir 命令等同于下面的三條命令

  1. mkdir 11 
  2. mkdir 22 
  3. mkdir 33 

選項(xiàng)說(shuō)明

選項(xiàng) 說(shuō)明
-d 指定輸入?yún)?shù)的分隔符,默認(rèn)是以空格或換行作為分隔符
-p 打印出將要執(zhí)行的命令,并詢問(wèn)用戶是否要執(zhí)行
-t 打印出最終執(zhí)行的命令并執(zhí)行,不需要用戶確認(rèn)
-0 表示用 null 作為分隔符
-n 每次將一行中的多少項(xiàng)參數(shù)作為命令行參數(shù)
-I 指定每一項(xiàng)命令行參數(shù)的替代字符串,類(lèi)似一個(gè)存儲(chǔ)參數(shù)項(xiàng)的中間變量
-r 當(dāng)輸入不包括任何非空格時(shí),不執(zhí)行命令

實(shí)例1 不帶任何選項(xiàng)的 xargs

xargs 命令大部分是和管道一起使用,但是它也可以單獨(dú)使用, 這時(shí)候xargs相當(dāng)于 echo 命令,把用戶的輸入通過(guò)echo命令輸出到屏幕

  1. [root@ecs-centos-7 ~]# xargs 
  2. hello 
  3. world 
  4. ! ( ctrl + d ) 
  5. hello world ! 
  6. [root@ecs-centos-7 ~]# 

上面的例子中,輸入xargs 并回車(chē)之后,開(kāi)始接受用戶輸入,用戶輸入 hello world !后,按 ctrl + d 結(jié)束輸入,結(jié)束之后,屏幕上會(huì)輸出用戶輸入的內(nèi)容

實(shí)例2 -d 選項(xiàng)

-d選項(xiàng)可以指定 xargs 命令的分隔符

  1. [root@ecs-centos-7 ~]# echo -n "a#b#c" | xargs echo 
  2. a#b#c 
  3. [root@ecs-centos-7 ~]# echo -n "a#b#c" | xargs -d "#" echo 
  4. a b c 

上面實(shí)例中,指定分隔符為 # ,所以 "a#b#c" 就被轉(zhuǎn)換成了 a b c 三個(gè)命令行參數(shù)了

實(shí)例3 -p 選項(xiàng)

-p選項(xiàng)會(huì)打印出將要執(zhí)行的命令,并且執(zhí)行命令前做依次是否執(zhí)行的二次確認(rèn),y 表示確認(rèn)執(zhí)行,n 表示取消執(zhí)行

  1. [root@ecs-centos-7 tmp]# echo "a b c" | xargs -p touch 
  2. touch a b c ?...y 
  3. [root@ecs-centos-7 tmp]# ll 
  4. 總用量 0 
  5. -rw-r--r-- 1 root root 0 1月  20 00:46 a 
  6. -rw-r--r-- 1 root root 0 1月  20 00:46 b 
  7. -rw-r--r-- 1 root root 0 1月  20 00:46 c 

實(shí)例4 -t 選項(xiàng)

-t 選項(xiàng)打印出最終執(zhí)行的命令,并且直接執(zhí)行命令,不再需要用戶二次確認(rèn)

  1. [root@ecs-centos-7 tmp]# ll 
  2. 總用量 0 
  3. -rw-r--r-- 1 root root 0 1月  20 00:49 a 
  4. -rw-r--r-- 1 root root 0 1月  20 00:49 b 
  5. -rw-r--r-- 1 root root 0 1月  20 00:49 c 
  6. [root@ecs-centos-7 tmp]# echo "a b c" | xargs -t rm 
  7. rm a b c 

實(shí)例5 -0 選項(xiàng)

前面我們講過(guò) xargs 命令是以空格或換行為分隔符的,大部分情況下執(zhí)行都是正常的,但是有一種情況下會(huì)出現(xiàn)問(wèn)題,那就是當(dāng)文件名中包含空格的時(shí)候

含有空格的文件名當(dāng)作輸入傳給 xargs 的時(shí)候,會(huì)被 xargs 當(dāng)作多個(gè)命令行參數(shù)來(lái)處理

下面的例子重現(xiàn)了問(wèn)題

  1. [tt@ecs-centos-7 tmp]$ ls  
  2. a.txt  b 1.txt  c.txt 
  3. [tt@ecs-centos-7 tmp]$ ls | xargs -t rm 
  4. rm a.txt b 1.txt c.txt  
  5. rm: 無(wú)法刪除"b": 沒(méi)有那個(gè)文件或目錄 
  6. rm: 無(wú)法刪除"1.txt": 沒(méi)有那個(gè)文件或目錄 
  7. [tt@ecs-centos-7 tmp]$ 

例子中,通過(guò) ls 命令知道目錄下有 a.txt b 1.txt c.txt 三個(gè)文件

當(dāng)通過(guò) ls | xargs -t rm 命令來(lái)刪除目錄下所有文件的時(shí)候發(fā)現(xiàn),a.txt 和 c.txt 都能被正確的刪除,但是 b 1.txt文件名中包含空格,刪除的時(shí)候會(huì)被當(dāng)作 b 和 1.txt 兩個(gè)文件處理

所以,例子中輸出結(jié)果中才會(huì)出現(xiàn) rm: 無(wú)法刪除"b": 沒(méi)有那個(gè)文件或目錄 和 rm: 無(wú)法刪除"1.txt": 沒(méi)有那個(gè)文件或目錄 的錯(cuò)誤提示

上述的問(wèn)題可以通過(guò) -0 選項(xiàng)結(jié)合find 命令來(lái)解決

  1. [tt@ecs-centos-7 tmp]$ ls  
  2. a.txt  b 1.txt  c.txt 
  3. [tt@ecs-centos-7 tmp]$ find . -type f  -print0 | xargs -0 -t rm 
  4. rm ./a.txt ./b 1.txt ./c.txt  
  5. [tt@ecs-centos-7 tmp]$ ll 
  6. 總用量 0 
  7. [tt@ecs-centos-7 tmp]$ 

find 命令的 -print0 選項(xiàng)表示輸出的文件列表以 null 分隔

同時(shí),xargs 命令的 -0 選項(xiàng)表示以 null 作為分隔符

從輸出結(jié)果可以看出,-0選項(xiàng)結(jié)合find命令可以正確的刪除包含空格的文件名

實(shí)例6 -n 選項(xiàng)

有時(shí)用戶會(huì)輸入多個(gè)參數(shù),-n 選項(xiàng)是每次將一行中的多少個(gè)參數(shù)作為命令行參數(shù)

  1. [tt@ecs-centos-7 tmp]$ echo "a b c d e f" | xargs -n 2 
  2. a b 
  3. c d 
  4. e f 
  5. [tt@ecs-centos-7 tmp]$ echo "a b c d e f" | xargs -n 4 
  6. a b c d 
  7. e f 
  8. [tt@ecs-centos-7 tmp]$ 

命令 echo "a b c d e f" | xargs -n 2 指定每2個(gè)參數(shù)作為一次命令的輸出,所以 a b c d e f 6個(gè)參數(shù)輸出了3行

同樣的,命令 echo "a b c d e f" | xargs -n 4 指定每4個(gè)參數(shù)作為一次輸出,所以 a b c d e f 6個(gè)參數(shù)輸出2行,而且第2行只有兩個(gè)參數(shù)

實(shí)例7 -r 選項(xiàng)

此選項(xiàng)表示,當(dāng)輸入不包含非空格時(shí),不執(zhí)行命令,默認(rèn)情況下,不管輸入是否包含非空格時(shí),都會(huì)執(zhí)行命令

有些命令必須要有操作數(shù),如果輸入不包含任何參數(shù)時(shí),執(zhí)行這些命令會(huì)有缺少操作數(shù)的錯(cuò)誤提示,可以加上 -r選項(xiàng)就不會(huì)出現(xiàn)錯(cuò)誤提示了

  1. [tt@ecs-centos-7 tmp]$ echo '' | xargs rm                                                                                              
  2. rm: 缺少操作數(shù) 
  3. Try 'rm --help' for more information. 
  4. [tt@ecs-centos-7 tmp]$ echo '' | xargs -r rm                                                                                           
  5. [tt@ecs-centos-7 tmp]$ 

上面的例子中,命令 echo ''的結(jié)果作為輸入傳給管道右邊的 xargs rm ,經(jīng)過(guò)參數(shù)轉(zhuǎn)化,xargs rm 沒(méi)有任何參數(shù),所以執(zhí)行 rm 命令時(shí)會(huì)提示缺少操作數(shù),但是 xargs -r rm 命令是不會(huì)執(zhí)行的,所以它不會(huì)有錯(cuò)誤提示

實(shí)例8 -I 參數(shù)

-I 參數(shù)表示命令行參數(shù)的每一項(xiàng)參數(shù)的變量

  1. [tt@ecs-centos-7 tmp]$ ls 
  2. a  b  c 
  3. [tt@ecs-centos-7 tmp]$ ls | sort | xargs -I F sh -c 'echo F.txt; touch F.txt'                                                          
  4. a.txt 
  5. b.txt 
  6. c.txt 
  7. [tt@ecs-centos-7 tmp]$ ls 
  8. a  a.txt  b  b.txt  c  c.txt 

上面例子中,當(dāng)前目錄有 a b c 三個(gè)文件

命令 ls | sort | xargs -I F sh -c 'echo F.txt; touch F.txt' 的輸入分別是 a、b、c, -I F表示 F 是輸入?yún)?shù)的替代字符串,執(zhí)行命令的時(shí)候,后面命令 echo F.txt; touch F.txt 中的 F 會(huì)被實(shí)際的參數(shù)替換掉,實(shí)際會(huì)執(zhí)行下面幾條命令

  1. echo a.txt; touch a.txt 
  2. echo b.txt; touch b.txt 
  3. echo c.txt; touch c.txt 

小結(jié)

本文介紹了 xargs 命令的常見(jiàn)用法,常用的選項(xiàng)都有實(shí)例說(shuō)明,更多關(guān)于 xargs 命令的用法請(qǐng)查閱命令文檔

 

責(zé)任編輯:武曉燕 來(lái)源: Linux開(kāi)發(fā)那些事兒
相關(guān)推薦

2021-02-26 08:46:46

PHY寄存器網(wǎng)絡(luò)

2019-10-16 09:37:33

流行監(jiān)控系統(tǒng)

2019-02-13 14:15:59

Linux版本Fedora

2020-06-28 09:30:37

Linux內(nèi)存操作系統(tǒng)

2021-01-29 08:09:32

Service接口表現(xiàn)層

2021-01-04 08:09:07

Linux內(nèi)核Watchdog

2025-05-13 07:10:31

2019-03-20 14:29:46

Linux虛擬內(nèi)存

2023-09-22 17:36:37

2021-01-28 22:31:33

分組密碼算法

2020-05-22 08:16:07

PONGPONXG-PON

2021-07-01 19:22:33

腳本Shell參數(shù)

2018-06-07 13:17:12

契約測(cè)試單元測(cè)試API測(cè)試

2024-03-08 09:51:12

Linux網(wǎng)絡(luò)性能

2021-12-08 07:31:40

Linux安全病毒

2023-07-26 07:24:07

2021-01-08 05:16:01

5G4GRRU

2021-08-04 09:32:05

Typescript 技巧Partial

2021-01-29 08:32:21

數(shù)據(jù)結(jié)構(gòu)數(shù)組

2021-02-06 08:34:49

函數(shù)memoize文檔
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品精品视频一区二区三区 | 天天操天天操 | 国产精品视频久久 | 午夜国产| 91精品在线播放 | 操操日 | 国产福利在线 | 亚洲精品v日韩精品 | 男女激情网| 成人一区二区在线 | 色吊丝2 | 中文字幕亚洲精品 | 日韩中文字幕第一页 | 激情欧美一区二区三区中文字幕 | 亚洲一区二区三区在线免费 | 日本羞羞影院 | 中文字幕97 | 亚洲性人人天天夜夜摸 | 国产97视频在线观看 | 成人免费共享视频 | 国产精品欧美一区二区三区不卡 | 久久久av | 国产美女黄色 | 日韩精品999| 成人免费视频网站在线观看 | 日韩欧美一区二区在线播放 | 国产成人亚洲精品 | 一级aaaa毛片 | 亚洲综合日韩精品欧美综合区 | 国产成人精品区一区二区不卡 | 国产一区二区三区在线 | 国产精品久久久久久52avav | 成人亚洲精品久久久久软件 | 二区高清 | 国产精品日韩欧美一区二区三区 | 色性av | 午夜爽爽爽男女免费观看影院 | 羞羞网站在线免费观看 | 在线观看的av | 国产精品日日做人人爱 | 欧美日韩在线成人 |