日期:2014-05-16  浏览次数:20627 次

linux whereis命令学习

前天学习了如何通过man命令查看man手册,
http://blog.csdn.net/boyxulin1986/article/details/12839449
那今天就不得不学另一条命令whereis了。

whereis命令用来查看命令、源代码或man手册的。

1. 为什么要将whereis命令和前天学习的man命令联系起来呢?
前面在man命令学习中,有提到man手册有很详细的分类。
针对命令、系统调用、库函数等都会将对应的man手册根据page number一一对应起来起来。
所以从whereis的执行结果来看,可以知道既有readlink这个命令,同时也有一个readlink系统调用。
并且可以看到readlink命令是放在/bin/readlink目录下的。
# whereis readlink
readlink: /bin/readlink /usr/share/man/man1/readlink.1.gz /usr/share/man/man2/readlink.2.gz

2. whereis命令是对指定的目录全部搜索?
因为只是对指定的目录进行搜索,所以其搜索效率会很高。
但whereis命令与which命令不同:
which命令只会搜索环境变量PATH指定的目录,并且在找到一个结果时就立即返回,不会再接着去查找后面的路径;
whereis命令会全部搜索整个指定的目录,所以whereis命令的查找结果可能有很多个。
# whereis file
file: /usr/bin/file /usr/sbin/file /usr/share/man/man1/file.1.gz

3. whereis命令的应用?
从whereis命令的查找结果,可以很容易的知道你要查找的函数是一个系统调用还是一个库函数。
结合man手册中对man命令的说明可以知道:
fork函数是一个系统调用;system函数是一个库函数。
# whereis fork
fork: /usr/share/man/man2/fork.2.gz
# whereis system
system: /usr/share/man/man3/system.3.gz

待确认问题:
whereis命令会指定哪些目录进行搜索?