在工作中经常需要书写shell脚本来自动化运维系统,那么肯定经常会需要用到管道和xargs命令。
我们知道Linux命令可以从2个地方读取要处理的内容,分别是:1). 命令行参数 2). 标准输入。但是我们需要注意的是1). 有些命令不支持标准输入 2). 若命令同时支持命令行参数和标准输入,则命令行参数优先级大于标准输入。
管道通常用“|”连接多个命令,主要作用就是将上一个命令的标准输出作为下一个命令的标准输入。简单的说就是凡是支持标准输入的命令都可以使用管道。
xargs命令用于将标准输入的内容按一定的规则(默认以空格、TAB、换行分割)分割成多个小块,传递给要执行的命令作为其参数来执行。简单的说就是xargs是用来执行命令的,但是被执行命令的参数由xargs来构建。默认被执行的命令为echo。
管道和xargs的区别,可以通过以下两个命令输出的结果来展示:
xargs用法基础语法:
xargs [选项] [被执行命令] [被执行命令初始化参数]
常用选项:
-d 分割符:默认情况下,xargs使用空格、TAB、换行符作为分割符号来将标准输入中的内容切割成小块,该选项用于指定其他分割符号。只支持指定单个字符。
-0:以数字0作为选项表示用"\0"来分割标准输入中的内容。该选项一般和find命令一起使用。因为Linux系统中允许文件名中带空格。find命令中参数-print0会以"\0"来分割文件名。
-E EOF字符:指定标准输入的EOF(结束)字符,指定后一旦xargs读取到该字符则后续输入内容不再读取。若未指定则整个标准输入内容都读取。注:该选项与不能与-d选项一起使用。
-p:提示用户确认是否需要执行指令,输入"Y"或"y"确认执行。
-t:打印要执行的命令,与“-p”一起使用可以边打印边确认执行命令。
-n 数字:指定每个被执行的命令使用的参数个数,默认所有都传递为参数。
-L 数字:指定每个执行的命令使用几行参数。
-I 替代字符:被执行的命令参数中,xargs默认用“{}“来表示参数,通过该选项可以指定别的字符作为替代字符。
-P 数字:默认xargs使用一个进程来执行命令,也就是若命令执行多次,则必须等上一个命令执行完后才能执行下一次。该选项用于指定执行命令的进程数。
总结xargs将标准输入中的空白符(空格、TAB、换行符)替换成空格,多个连续的空白符只替换成一个;
xargs将替换后的标准输入内容,按空格切割成多个小块;
xargs将切割后小块参数,按指定个数(-n选项)依次传递给被执行命令作为参数。
公众号【web说】不局限于web知识分享。
制图网(www.makepic.net),专业的logo免费设计在线生成网站,全自动智能化logo设计,商标设计,logo在线生成!
欢迎使用制图网制作属于您公司自己的logo,不仅专业而且经济实惠,全方位满足您公司品牌化、视觉化的需求。