xargc命令

1、xargc命令:给其他命令传递参数的一个过滤器;组合多个命令的一个工具。

xargs命令可以通过管道接受字符串,并且将接收到的字符串通过空格分割(默认情况下时空格分割)成许多的参数,然后将参数传递给后面的命令,作为后面的命令的命令行参数。

2、一个命令获取参数一般有两种情况:通过命令行参数或者标准输入。

Linux中很多命令都是从命令行参数中获取参数,然后从标准输入中读取,反映在程序中,

<1>命令行参数是通过main(int argc,char* argv[],char* envp[])的参数中获得的,

<2>而标准输入则是通过通过标准输入函数(scanf)读取到的,它们获取的地方不一样。标准输入是有缓冲区的,

(1)、cat和管道一起使用:

当cat后面有参数时,不去标准输入中读:

a.txt存在时,直接读取


xargc命令

当b.txt文件不存在时,cat提示文件不存在

xargc命令

下面这条从标准输入中读取

xargc命令

用参数-来指定去从标准输入中读取

xargc命令

直接使用cat,程序等待输入,此时也是从标准输入中得到的内容

xargc命令

只是显示a.txt中的内容,虽然指定了-去标准输入里去读,结果却只在文件中进行了读取。

xargc命令

当使用echo 'hello' | grep a.txt - 时,grep会同时处理标准输入中的hello也会从a.txt中搜索。

cat和grep的不同就在于当指定了-选项时(既要去标准输入中读取时),当cat后有文件时,只会读文件内的内容,而grep标准输入里的内容和文件里的内容都会处理。

(2)、xargs和管道的使用及对比

xargc命令

对比

xargc命令

(3)、xargs的用法:

①默认情况下xargs将其标准输入中的内容以空格(包括Tab、回车换行)分割成多个,然后当做命令行参数传递给其后面的命令。

xargc命令

②-d选项,用于指定分割符。

xargc命令

③-p选项,使得xargs命令不会马上执行后面的命令,而是输出即将要执行的完整命令(包括命令以及传递给命令的命令行参数)来询问是否执行,只有输入y才能继续执行。

xargc命令

④-n选项,用于将xargs产生的命令行参数,每次传递n个给后面的命令执行。

xargc命令

⑤-E选项,指定一个字符串,当解析出很多命令行参数的时候,如果搜索到-E所指定的命令行参数时,则只会将-E指定的命令行参数之前的传递给后面的命令。

xargc命令

但是-E选项在-d选项存在时不起作用

xargc命令

⑥与find命令一起使用

find默认情况下输出结果是每条记录后面加上换行符

xargc命令

(4)、总结:

管道是实现将前面的标准输出作为后面的标准输入!

xargs是将标准输入作为命令行参数!