tft每日頭條

 > 生活

 > 4個linux命令行筆記

4個linux命令行筆記

生活 更新时间:2024-10-11 18:43:24

4個linux命令行筆記(每天一個Linux命令1)1

命令簡介

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

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

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

命令格式

xargs[OPTIONS][COMMAND]

選項說明

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

-0,--null #如果輸入的stdin含有特殊字符,例如反引号`、反斜杠、空格等字符時,xargs将它還原成一般字符。為默認選項 -a,--arg-file=FILE #從指定的文件FILE中讀取輸入内容而不是從标準輸入 -d,--delimiter=DEL #指定xargs處理輸入内容時的分隔符。xargs處理輸入内容默認是按空格和換行符作為分隔符,輸出arguments時按空格分隔 -EEOF_STR #EOF_STR是endoffilestring,表示輸入的結束 -e,--eof[=EOF_STR] #作用等同于-E 選項,與-E 選項不同時,該選項不符合POSIX标準且EOF_STR不是強制的。如果沒有EOF_STR則表示輸入沒有結束符 -IREPLACE_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 -LMAX_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 #顯示版本信息并退出

常用示例

1、将 Shell 的特殊字符反引号還原為一般字符。

echo'`0123`456789'|xargs-techo echo`0123`456789 `0123`456789

如果直接進行如下操作,會報無法找到命令 01234 的錯誤,因為反引号在 Shell 中會将 01234 作為一個命令來執行,但是 01234 不是一個命令。-t 表示先打印命令,然後再執行。值得收藏!Linux系統常用命令速查手冊

echo`01234`56789 -bash:01234:commandnotfound

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

echo01234,56789|xargs-E"," 01234

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

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

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

echo"0123456789"|xargs-t-s11 echo01234 01234 echo56789 56789

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

echo-e"01234n56789n01234"|xargs-t-L2echo echo0123456789 0123456789 echo01234 01234

6、将文件内容以空格分隔合并為一行輸出。

#列出文件内容 cattest.txt abcde fghij klmno #多行輸入合并為一行輸出 cattest.txt|xargs abcdefghijklmno

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

ps-ef|grepspp|awk'{printf"%s",$2}'|xargskill-9 1

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

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved