linux中可以使用whereis查找文件,和find、locate不同的是whereis重在系统命令的搜索。
1、命令格式
whereis -bmsu 搜索字符串
-b:binary 只搜索二进制的文件
-m:manual 只搜索手册相关的文件
-s:source 只搜原始代码的文件
-u:unusual 搜素特殊的文件,这个参数比较奇怪
2、命令测试
搜索adduser命令相关的文件
$ whereis adduser
adduser: /usr/sbin/adduser /etc/adduser.conf /usr/share/adduser /usr/share/man/man8/adduser.8.gz
上面会搜索出所有二进制,手册,原始代码文件。
只搜索二进制文件
$ whereis -b adduser
adduser: /usr/sbin/adduser /etc/adduser.conf /usr/share/adduser
关于-u参数的疑问
这个参数,man手册里解释是:Search for unusual entries. A file is said to be unusual if it does not have one entry of each requested type. 这里究竟什么是不寻常项,笔者暂时也没搞清楚。
man手册还有说明使用:Thus ‘whereis -m -u *’ asks for those files in the current directory which have no documentation. 这个比较容易理解,就是说使用”whereis -m -u *”这个命令可以查找出当前目录没有文档的文件。
笔者在/usr/sbin目录下执行这个命令,得到的结果也令人不解。
$ whereis -m -u *
arp: /usr/share/man/man8/arp.8.gz /usr/share/man/man7/arp.7.gz
chroot: /usr/share/man/man2/chroot.2.gz /usr/share/man/man8/chroot.8.gz
invoke-rc:
nologin: /usr/share/man/man5/nologin.5.gz /usr/share/man/man8/nologin.8.gz
tzconfig:
update-bootsystem-insserv:
update-locale:
update-rc:
update-rc:
upgrade-from-grub-legacy:
validlocale:
照理说arp是有相关手册说明,但是为什么搜索出来了呢?非常费解。
总结
基本上笔者只用whereis搜索一些命令相关的文件,和which相比,笔者使用which更多些。关于-u参数,如果有了解的朋友,非常感谢告知。which命令的使用参见:linux中使用which查找命令的所在目录。