使用 -i 参数
将前一个命令的输出,放在后一个命令的指定位置
which pandoc | xargs -i ls -al {}
原文
http://www.cnblogs.com/wangqiguo/p/6464234.html
笔记
输入 cat - 直接回车与输入 cat 直接回车的效果也一样,但是如果这样呢:
echo 'main' | cat test.cpp -
结果是: cat 都处理,既处理test.cpp
,也有标准输入 aka: -
grep 的策略是:
xargs
ps -ef | grep 'ddd' | xargs kill
OK,我们在这里使用了xargs命令;;铺垫了这么久终于铺到了主题上。(tt: 前面的铺垫是: 对比cat
和grep
,表达kill
这个命令不允许从标准输入得到参数)
xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割) 然后将参数传递给其后面的命令,作为后面命令的命令行参数
xargs的一些有用的选项
-d 指定一个分割符
echo '11@22@33' | xargs -d '@' echo
输出:
11 22 33
指定以@符号分割参数,所以等价于 echo 11 22 33 相当于给echo传递了3个参数,分别是11、22、33
-p 输出前询问你一下
-n 选项: 每次传n个参数给后面的命令
echo '11@22@33@44@55@66@77@88@99@00' | xargs -d '@' -n 3 echo
输出结果:
11 22 33
44 55 66
77 88 99
00
等价于:
echo 11 22 33
echo 44 55 66
echo 77 88 99
echo 00
实际上运行了4次,每次传递3个参数,最后还剩一个,就直接传递一个参数。
-J 选项: 执行后面%% 里的命令
示例:git branch -r | grep lj_ | xargs -n 1 -J % git log % -S “abc” >> result.log