linux 任何一个命令都是调用了一个可执行的程序,比如说 ls -l, ls是一个可执行文件名,-l 是一个该程序运行时候的一个参数
管道和xargs的作用,举个c程序来说如下:
void main(int argc, char* argv[]){
scanf();
return;
}
xargs的作用就是提供程序运行时的参数,就是将xargs传递到上述代码的char * argv[ ]
管道的作用就是将前面程序的的输出放到后面程序的标准输入缓存区中,一旦后面的程序要用标准输入scanf 读取的时候就从该缓存区中获取内容,就是传递到上述的scanf()
所以什么时候只用管道,什么时候要加上xargs就是要判断当前传递的东西究竟是作为一个运行时的参数( ps -aux,-aux就是运行时的参数了 ),还是只是作为标准输入提供给程序去处理(比如 grep )
参考博客:http://www.cnblogs.com/wangqiguo/p/6464234.html
ps: xargs其实本身也是一个程序,当运行参数中没有程序名的时候,xargs会把内容直接输出,不再传递
如:echo '123' | xargs