一、locate
locate命令其实是find -name的另一种写法,但要比后者快得多,因为其不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中存有本地所有文件的信息。Linux系统自动创建这个数据库,并且默认通过cron(/etc/crontab)调用updatedb程序来每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先调用updatedb命令手动更新下数据库。locate命令的可选项如下:
-u:建立数据库,由根目录开始。
-U:建立数据库,可以指定开始的位置。
-e:将排除在寻找的范围之外。
-f:将特定的档案系统排出在外。
-q:安静模式,不显示任何错误信息。
-n:至多显示n个输出。
-r:使用正则表达式做寻找条件。
-o:指定数据库存储的名字。
-d:指定数据库路径。
-h:显示帮助信息。
-v:显示更多信息。
-V:显示程序的版本信息。
locate命令使用举例如下:
$locate /etc/sh
搜索etc目录下所有以sh开头的文件。
$locate ~/m
搜索用户主目录下所有以m开头的文件。
二、whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件、man说明文件和源代码文件,其可选参数如下:
-b:只查找二进制文件。
-B:只在指定的目录下查找二进制文件。
-f:不显示文件名前的路径名称。
-m:只查找man说明文件。
-M:只在指定的目录下查找man说明文件。
-s:只查找源代码文件。
-S:只在指定的目录下查找源代码文件。
-u:查找不包含指定类型的文件。
如果省略选项参数,则返回所有信息。
whereis命令使用举例如下:
$whereis grep
grep: /bin/grep /usr/share/man/man1/grep.1.gz
$whereis -b grep
grep: /bin/grep
三、which
which命令的作用是在PATH变量指定的路径中搜索某个系统命令的为止,并且返回第一个搜索结果,即使用which命令就可以查看某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which命令使用举例如下:
$which grep
/bin/grep
四、type
type命令其实不是查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果是外部命令,那么使用-p参数会显示该命令的路径,相当于which命令。
type命令使用举例如下:
$type cd
cd is a shell builtin
$type grep
grep is /bin/grep
$type -p grep
/bin/grep