【Bash百宝箱】xargs

shell命令xargs是一个实用的命令,它从标准输入读取内容,并执行指定的命令。标准输入可以被空格或换行符分隔,不指定执行的命令时默认为“/bin/echo”,只是把读到的内容打印出来,忽略空行。

1、执行默认命令“echo”,忽略空行,换行符被替换为空格。

$ cat 1
a b c

abc
123
$ cat 1 | xargs
a b c abc 123

2、使用参数“-0”,禁止特殊字符,把它们当作普通字符,如下例子中hello与xargs之间有5个空格。

$ echo "hello     xargs"
hello     xargs
$ echo "hello     xargs" | xargs
hello xargs
$ echo "hello     xargs" | xargs -0
hello     xargs

3、使用参数“-a file”,从文件中读取数据。

$ cat 1
a b c

abc
123
$ xargs -a 1
a b c abc 123

4、使用参数“-d delim”,指定分隔符。

$ echo hello:xargs:a:b:c:123 | xargs
hello:xargs:a:b:c:123
$ echo hello:xargs:a:b:c:123 | xargs -d :
hello xargs a b c 123

5、使用参数“-E eof-str”,忽略整行内容与eof-str相同的一行及其后面的所有内容。

$ cat 1 | xargs
a b c abc 123
$ cat 1 | xargs -E a

$ cat 1 | xargs -E b
a
$ cat 1 | xargs -E c
a b
$ cat 1 | xargs -E ab
a b c abc 123
$ cat 1 | xargs -E abc
a b c

6、使用参数“-I replace-str”,把标准输入的每行保存到replace-str,可以被后面的命令使用。

$ cat 1
a b c

abc
123
$ cat 1 | xargs -I foo



$ cat 1 | xargs -I foo echo xxx
xxx
xxx
xxx
$ cat 1 | xargs -I foo echo foo
a b c
abc
123

7、使用参数“-L max-lines”,指定命令每次处理的最多行数。

$ cat 1 | xargs
a b c abc 123
$ cat 1 | xargs -L 1
a b c
abc
123
$ cat 1 | xargs -L 2
a b c abc
123
$ cat 1 | xargs -L 3
a b c abc 123

8、使用参数“-n max-args”,指定命令每次处理的最多参数个数。

$ cat 1
a b c

abc
123
$ cat 1 | xargs
a b c abc 123
$ cat 1 | xargs -n 1
a
b
c
abc
123
$ cat 1 | xargs -n 2
a b
c abc
123
$ cat 1 | xargs -n 3
a b c
abc 123
$ cat 1 | xargs -n 4
a b c abc
123
$ cat 1 | xargs -n 5
a b c abc 123

9、使用参数“-P max-procs”,指定同时在几个进程中执行,默认为1,设置为0时将执行尽可能多的进程,与“-L”或“-n”一起使用。命令执行过程中,可发送信号SIGUSR1给它以增加同时执行的命令个数,或者SIGUSR2来减少同时执行的命令个数,每次加1或减1。

10、使用参数“-p”,执行命令前提醒用户,确认是否执行,输入“y”或“Y”继续执行。

$ echo 123 | xargs -p
echo 123 ?...n
$ echo 123 | xargs -p
echo 123 ?...y
123
$ echo 123 | xargs -p
echo 123 ?...Y
123

11、使用参数“–process-slot-var=name”,在每个子进程中设置环境变量name为一个独一无二的值。

12、使用参数“-r”,在输入不包括任何非空行时不执行命令,默认即使只有一个空行也执行一次命令。

$ echo | xargs

$ echo | xargs -r

13、使用参数“-s max-chars”,限制命令行长度,包括命令本身、参数和命令行结束符。

14、使用参数“–show-limits”,查看命令行的长度限制。

$ echo | xargs --show-limits
Your environment variables take up 3737 bytes
POSIX upper limit on argument length (this system): 2091367
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2087630
Size of command buffer we are actually using: 131072
Maximum parallelism (--max-procs must be no greater): 2147483647

15、使用参数“-t”,在执行命令前先打印执行的命令。

$ echo 123 | xargs -t
echo 123 
123

16、使用参数“-x”,当命令行长度超过限制时退出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值