<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Linux命令:xargs命令

    VSole2022-04-14 06:59:54

    1.命令簡介

    xargs 可以將 stdin 中以空格或換行符進行分隔的數據,形成以空格分隔的參數(arguments),傳遞給其他命令。因為以空格作為分隔符,所以有一些文件名或者其他意義的字符串內含有空格的時候,xargs 可能會誤判。簡單來說,xargs 的作用是給其他命令傳遞參數,是構建單行命令的重要組件之一。

    之所以要用到 xargs,是因為很多命令不支持使用管道 | 來傳遞參數,例如:

    find /sbin -perm +700 | ls -l         # 這個命令是錯誤,因為標準輸入不能作為ls的參數
    find /sbin -perm +700 | xargs ls -l   # 這樣才是正確的
    

    2.命令格式

    xargs [OPTIONS] [COMMAND]
    

    3.選項說明 

    注意,長選項的強制性參數對于短選項也是強制的。

    -0, --null
     如果輸入的 stdin 含有特殊字符,例如反引號 `、反斜杠 \、空格等字符時,xargs 將它還原成一般字符。為默認選項
    -a, --arg-file=FILE
     從指定的文件 FILE 中讀取輸入內容而不是從標準輸入
    -d, --delimiter=DEL
     指定 xargs 處理輸入內容時的分隔符。xargs 處理輸入內容默認是按空格和換行符作為分隔符,輸出 arguments 時按空格分隔
    -E EOF_STR
     EOF_STR 是 end of file string,表示輸入的結束
    -e, --eof[=EOF_STR]
     作用等同于 -E 選項,與 -E 選項不同時,該選項不符合 POSIX 標準且 EOF_STR 不是強制的。如果沒有 EOF_STR 則表示輸入沒有結束符
    -I REPLACE_STR
     將 xargs 輸出的每一項參數單獨賦值給后面的命令,參數需要用指定的替代字符串 REPLACE_STR 代替。REPLACE_STR 可以使用 {} $ @ 等符號,其主要作用是當 xargs command 后有多個參數時,調整參數位置。例如備份以 txt 為后綴的文件:find . -name "*.txt" | xargs -I {}  cp {} /tmp/{}.bak
    -i, --replace[=REPLACE_STR]
     作用同 -I 選項,參數 REPLACE_STR 是可選的,缺省為 {}。建議使用 -I 選項,因為其符合 POSIX
    -L MAX_LINES
     限定最大輸入行數。隱含了 -x 選項
    -l, --max-lines[=MAX_LINES]
     作用同 -L 選項,參數 MAX_LINES 是可選的,缺省為 1。建議使用 -L 選項,因為其符合 POSIX 標準
    -n, --max-args=MAX_ARGS
     表示命令在執行的時候一次使用參數的最大個數
    -o, --open-tty
     在執行命令之前,在子進程中重新打開stdin作為/dev/TTY。如果您希望xargs運行交互式應用程序,這是非常有用的
    -P, --max-procs=MAX_PROCS
     每次運行最大進程;缺省值為 1。如果 MAX_PROCS 為 0,xargs 將一次運行盡可能多的進程。一般和 -n 或 -L 選項一起使用
    -p, --interactive
     當每次執行一個 argument 的時候詢問一次用戶
    --process-slot-var=NAME
     將指定的環境變量設置為每個正在運行的子進程中的唯一值。一旦子進程退出,將重用該值。例如,這可以用于初始負荷分配方案
    -r, --no-run-if-empty
     當 xargs 的輸入為空的時候則停止 xargs,不用再去執行后面的命令了。為默認選項
    -s, --max-chars=MAX_CHARS
     命令行的最大字符數,指的是 xargs 后面那個命令的最大命令行字符數,包括命令、空格和換行符。每個參數單獨傳入 xargs 后面的命令
    --show-limits
     顯示操作系統對命令行長度的限制
    -t, --verbose
     先打印命令到標準錯誤輸出,然后再執行
    -x, --exit
     配合 -s 使用,當命令行字符數大于 -s 指定的數值時,退出 xargs
    --help
     顯示幫助信息并退出
    --version
    顯示版本信息并退出
    

    4.常用示例

    (1)將 Shell 的特殊字符反引號還原為一般字符。

    echo '`0123`4 56789' | xargs -t echo
    echo `0123`4 56789 
    `0123`4 56789
    

    如果直接進行如下操作,會報無法找到命令 01234 的錯誤,因為反引號在 Shell 中會將 01234 作為一個命令來執行,但是 01234 不是一個命令。-t 表示先打印命令,然后再執行。

    echo `01234` 56789
    -bash: 01234: command not found
    56789
    

    (2)設置 xargs 讀入參數時的結束標識,以逗號結束。這里要注意結束標志必須要是單獨的字段,即以空格或者換行符分隔的字段。

    echo 01234 , 56789 | xargs -E ","
    01234
    

    (3)使用 rm、mv 等命令同時操作多個文件時,有時會報 “argument list too long” 參數列表過長的錯誤,此時可以使用 xargs 來解決。xargs 將標準輸入的字符串分隔后,作為參數傳遞給后面的命令。例如,給當前目錄的所有文件添加后綴名。

    ls | xargs -t -i mv {} {}.bak
    
    # 選擇符合條件的文件
    ls | grep -E "201701|201702|201703" | xargs -I {} mv {} {}.bak
    

    (4)設置命令行的最大字符數。參數默認一個一個單獨傳入命令中執行。

    echo "01234 56789" | xargs -t -s 11
    echo 01234 
    01234
    echo 56789 
    56789
    

    (5)設置標準輸入中每次多少行作為命令的參數,默認是將標準輸入中所有行的歸并到一行一次性傳給命令執行。

    echo -e "012345678901234" | xargs -t -L 2 echoecho 01234 56789 01234 56789echo 01234 01234
    

    (6)將文件內容以空格分隔合并為一行輸出。

    # 列出文件內容cat test.txta b c d ef g h i j k l m n o# 多行輸入合并為一行輸出cat test.txt | xargsa b c d e f g h i j k l m n o
    

    (7)與 ps、grep、awk 和 kill 結合,強制終止指定進程。

    ps -ef | grep spp | awk '{printf "%s ",$2}' | xargs kill -9
    

    ps -ef|grep spp用于查找包含 spp 的進程,awk '{printf "%s ",$2,FNR}將目標進程 ID 打印輸出,xargs kill -9則將目標進程 ID 作為參數傳遞給kill -9用于殺死進程。

    linux系統xargs
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    拿到一臺 linux 主機普通權限之后,如何獲取更高的 root 權限?0x01 查看操作系統信息,內核版本等查看操作系統類型:cat /etc/issue?ls /boot | grep vmlinuz-可以看到當前系統是 64 位。
    arch #顯示機器的處理器架構(1) uname -m #顯示機器的處理器架構(2) uname -r #顯示正在使用的內核版本 dmidecode -q #顯示硬件系統部件 - (SMBIOS / DMI) hdparm -i /dev/hda #羅列一個磁盤的架構特性 hdparm -tT /dev/sda #在磁盤上執行測試性讀取操作 cat /p
    "請用root用戶執行此腳本!#最近啟動時間?#運行時間(天)?#相同ID的用戶?#密碼過期(天)?#允許root遠程登錄?#僵尸進程數量?#自啟動服務數量?"系統巡檢腳本:Version $VERSION"
    出于對Linux操作系統的興趣,以及對底層知識的強烈欲望,因此整理了這篇文章。本文也可以作為檢驗基礎知識的指標,另外文章涵蓋了一個系統的方方面面。應用程序的行為細節往往是和這些東西互相牽扯的,這些底層的東西會以意想不到的方式影響應用程序的性能,比如某些程序無法充分利用 cache,從而導致性能下降。times,則一直采集數據,直到用戶手動停止為止。
    應用程序的行為細節往往是和這些東西互相牽扯的,這些底層的東西會以意想不到的方式影響應用程序的性能,比如某些程序無法充分利用 cache,從而導致性能下降。times,則一直采集數據,直到用戶手動停止為止。是一個用來監視磁盤 I/O 使用狀況的 top 類工具,具有與 top 相似的 UI,其中包括 PID、用戶、I/O、進程等相關信息。
    打印所有可用的系統信息。查看系統內核架構。列出系統上的所有組。當前用戶所在的組。#查看是否存在空口令用戶。誰目前已登錄,他們正在做什么。命令用于顯示系統中有哪些使用者正在上面。[^可以看到yokan用戶在sudo組里]:3、用戶和權限信息whoami????????可以使用sudo提升到root的用戶。當前用戶可以以root身份執行操作。顯示所有的環境變量。顯示默認系統變量。查看etc下所有配置文件。#查看指定應用的安裝版本
    雖然平時大部分工作都是和網絡相關, 但會接觸Linux系統, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行環境中. 自己記憶力不好, 很多有用的Linux命令不能很好的記憶, 現在逐漸總結一下, 以便后續查看。基本操作Linux 關機,重啟#?查看當前用戶環境變量。查看有幾顆cpu,每顆分別是幾核。
    作為一個Java開發人員,有些常用的Linux命令必須掌握。本文并不會對所有命令進行詳細講解,只給出常見用法和解釋。
    本文章盤點了 Linux 運維必備 150 個命令,請配合下面的網站使用。定位你需要使用的命令,然后去這個網站查詢詳細用法即可。 地址:wangchujiang.com/linux-command/
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类