欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux中xargs命令的各種使用技巧

 更新時間:2017年05月21日 11:50:19   作者:Allen_wen  
xargs是給命令傳遞參數(shù)的一個過濾器,也是組合多個命令的一個工具。下面這篇文章主要給大家介紹了關于linux中xargs命令用法的相關資料,需要的朋友可以參考借鑒,下面來跟著小編一起看看吧。

前言

xargs命令是把接收到的數(shù)據(jù)重新格式化,再將其作為參數(shù)提供給其他命令,下面介紹xargs命令的各種使用技巧,一起來看看吧。

一、將多行輸入轉換成單行輸入:

[root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt
[root@host1 test]# cat example.txt 
1 2 3 4 5 
6 7 8 
9 10 11 12
[root@host1 test]# cat example.txt |xargs 
1 2 3 4 5 6 7 8 9 10 11 12 

將單行輸入轉換成多行輸出:

[root@host1 test]# cat example.txt | xargs -n 3
1 2 3
4 5 6
7 8 9
10 11 12 

自定義定界符進行轉換(默認的定界符是空格):

[root@host1 test]# echo "Hello:Hello:Hello:Hello" | xargs -d : -n 2
Hello Hello
Hello Hello 

二、在腳本中運用:

[root@host1 test]# cat echo.sh 
#!/bin/bash
echo $* '^-^'

當參數(shù)傳遞給echo.sh后,它會將這些參數(shù)打印出來,并且以"^-^"作為結尾:

[root@host1 test]# echo -e "Tom\nHarry\nJerry\nLucy" > args.txt
[root@host1 test]# cat args.txt | xargs bash echo.sh 
Tom Harry Jerry Lucy ^-^
[root@host1 test]# cat args.txt | xargs -n 2 bash echo.sh 
Tom Harry ^-^
Jerry Lucy ^-^ 

在上面的例子中,我們把參數(shù)源都放入args.txt文件,但是除了這些參數(shù),我們還需要一些固定不變的參數(shù),比如:

[root@host1 test]# bash echo.sh Welcome Tom 
Welcome Tom ^-^ 

在上述命令執(zhí)行過程中,Tom是變量,其余部分為常量,我們可以從"args.txt"中提取參數(shù),并按照下面的方式提供給命令:

[root@host1 test]# bash echo.sh Welcome Tom 
[root@host1 test]# bash echo.sh Welcome Herry
[root@host1 test]# bash echo.sh Welcome Jerry
[root@host1 test]# bash echo.sh Welcome Lucy 

這時我們需要使用xargs中-I命令:

[root@host1 test]# cat args.txt | xargs -I {} bash echo.sh Welcome {} 
Welcome Tom ^-^
Welcome Harry ^-^
Welcome Jerry ^-^
Welcome Lucy ^-^ 

-I {} 指定替換字符串,對于每一個命令參數(shù),字符串{}都會被從stdin讀取到的參數(shù)替換掉,

使用-I的時候,命令以循環(huán)的方式執(zhí)行,如果有4個參數(shù),那么命令就會連同{}一起被執(zhí)行4次,在每一次執(zhí)行中{}都會被替換為相應的參數(shù)。

三、結合find使用

xargs和find是一對非常好的組合,但是,我們通常是以一種錯誤的方式運用它們的,比如:

[root@host1 test]# find . -type f -name "*.txt" -print | xargs rm -f 

這樣做是有危險的,有時會刪除不必刪除的文件,如果文件名里包含有空格符(' '),則xargs很可能認為它們是定界符(例如,file text.txt會被xargs誤認為file和text.txt)。

如果我們想把find的輸出作為xargs的輸入,就必須將-print0與find結合使用以字符null('\0')來分隔輸出,用find找出所有.txt的文件,然后用xargs將這些文件刪除:

[root@host1 test]# find . -type f -name "*.txt" -print0 | xargs -0 rm -f 

這樣就可以刪除所有的.txt文件了,xargs -0 將\0作為輸入定界符。

四、運用while語句和子shell

[root@host1 test]# cat files.txt | (while read arg ;do cat $arg;done)

這條命令等同于:

[root@host1 test]# cat files.txt | xargs -I {} cat {} 

在while循環(huán)中,可以將cat $arg替換成任意數(shù)量的命令,這樣我們就可以對同一個參數(shù)執(zhí)行多條命令,也可以不借助管道,將輸出傳遞給其他命令,這個技巧適應于多種問題場景。子shell操作符內(nèi)部的多個命令可作為一個整體來運行。

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Linux用if判斷目錄是否存在實例方法

    Linux用if判斷目錄是否存在實例方法

    在本篇文章中小編給各位整理的是關于Linux如何使用if判斷目錄是否存在的相關內(nèi)容,有需要的朋友們可以參考下。
    2020-03-03
  • VirtualBox下Centos6.8網(wǎng)絡配置教程

    VirtualBox下Centos6.8網(wǎng)絡配置教程

    這篇文章主要為大家詳細介紹了VirtualBox下Centos6.8網(wǎng)絡配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • ubuntu中實現(xiàn)定時彈窗的提醒腳本

    ubuntu中實現(xiàn)定時彈窗的提醒腳本

    最近的項目是在ubuntu的環(huán)境下工作的,因為長時間工作身體不適,所以想寫個腳本定時提醒自己喝水,伸懶腰,這篇文章記錄了整個開發(fā)的過程,有需要的朋友們可以來一起看看。
    2016-10-10
  • 安裝CentOS 6.x報錯

    安裝CentOS 6.x報錯"Disk sda contains BIOS RAID metadata"解決方法

    今天在安裝CentOS6.2的時候,當進到檢測硬盤的時候,總是過不去,報錯如下: Disk sda contains BIOS RAID metadata, but is not part of any recognized BIOS RAID sets. Ignoring disk sda,真是不知如何解決,下面小編把我的思路分享到腳本之家平臺,需要的朋友參考下
    2019-11-11
  • ubuntu中終端命令提示符太長的修改方法匯總

    ubuntu中終端命令提示符太長的修改方法匯總

    Linux(Ubuntu)終端 命令提示符太長 怎么辦?下面這篇文章主要給大家介紹了關于ubuntu中終端命令提示符太長的修改方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-04-04
  • 十個理由告訴你Linux為何越來越受歡迎

    十個理由告訴你Linux為何越來越受歡迎

    Linux已受到越來越多的用戶喜愛,為什么它能發(fā)展如此之快,而且還廣受歡迎呢?下面小編給大家?guī)砹耸畟€理由告訴你Linux為何越來越受歡迎,一起看看吧
    2018-10-10
  • 你可能不知道的一些linux文件權限管理方法

    你可能不知道的一些linux文件權限管理方法

    這篇文章主要給大家介紹了一些你可能不知道的linux文件權限管理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • 一行代碼教你如何隱藏Linux進程

    一行代碼教你如何隱藏Linux進程

    這篇文章主要介紹了一行代碼教你如何隱藏Linux進程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • ssh連接超時解決方法

    ssh連接超時解決方法

    本文為大家介紹了ssh連接超時的解決方法, 另外提供一種不修改配置文件就可以解決連接超時的方法,大家參考使用吧
    2014-01-01
  • ubuntu服務器環(huán)境下安裝python的方法

    ubuntu服務器環(huán)境下安裝python的方法

    這篇文章主要介紹了ubuntu服務器環(huán)境下安裝python的方法,簡單分析了Ubuntu環(huán)境下安裝Python的相關步驟、命令、與操作注意事項,需要的朋友可以參考下
    2018-03-03

最新評論