November 29th, 2008linux command – xargs
xargs 是用来从标准输入把行中的内容作为某个命令的参数, 并把执行结果输出,
from man:
xargs - build and execute command lines from standard input<br />
我们在两台机器上同时运行同一个程序,这两台机器的环境应该是一样的, 但我们发发现在其中的一台机器上由于缺少一些运行时库而导致程序无法运行。我们已经在可以运行 的那台机器上得到了一个这个程序所依赖的所有库文件的列表(放在 depends.txt中, 每个文件名占一行), 问题是怎么找出有哪些库丢失了呢?
当然, 你可能会想到, 那直接一个一个的把这些文件在有问题的机器上找一下, 如果没有就表示丢失了呗, 当然这是正确的做法, 不过当文件数量过多的时候, 手工做显然是一个十分烦人的工作, 于是我们的xargs就派上用场了,
cat depends.txt | xargs ls -l | grep “No such file or directory”
首先看命令的前半部分, cat depends.txt | xargs ls -l , 这部分是把depends.txt中的内容作为输出到xargs ls -l 中, 而xargs做的事情就是把文件中的内容当作它的参数’ls -l” 的参数, 并执行ls -l 这个命令,
假如depends.txt 中有以下内容:
/usr/lib/a.so
/usr/lib/b.so
经过xargs处理后的命令行大致如下
ls -l /usr/lib/a.so
ls -l /usr/lib/b.so
我们知道ls遇到一个不存在的文件会输出file not found, 于是咱们再grep 一把, 就把这些不存在的文件找出来了:)
这是今天学到的命令, 现学现卖~~~






