1. which
which [-a] command
查找系统命令位置,只在$path环境变量中查找,并且默认只返回第一个查找结果
参数:
- -a 列出所有的查找结果
例: which -a php
2. type
type [option] command
用于区别某个命令到底是由shell自带的,还是shell外部的独立二进制文件提供的
参数:
- -t 输出命令的type,比如:alias,file,builtin
- -p 如果是外部命令,则输出绝对地址
如:type -t cd
3. whereis
whereis [-bmsu] file
whereis命令用于定位可执行文件、源代码文件、帮助文件在系统中的位置
参数:
- -b查找二进制文件
- -m查找说明文件
- -s查找源代码文件
- -u查找非上述三种文件的其他文件
例:whereis -b php
**PS:whereis默认从数据库文件(linux将所有的文件都记录在一个数据库文件,但并不实时更新,一般一天更新一次)中查找指定文件,因此whereis比其他从硬盘查找的命令,效率高很多
4. find
find [path] [option] [action]
find命令可查找指定路径下所有符合条件的文件或目录,find命令参数可以拟分成两大类,一种是普通参数,一种是时间参数
普通参数:
- type 根据文件类型进行搜索
find /usr/bin/ -type d
查找/usr/bin/目录下的所有目录 - name 根据文件名进行搜索(-iname不区分大小写)
find /usr/bin -name '*.jpg'
查找/usr/bin/目录下以JPG为后缀的文件和目录 - size 根据文件的大小进行搜索(+n大于 -n小于)
- prem 根据文件读写权限进行搜索
- -group 根据文件拥有组进行搜索
- -empty 匹配空文件或空目录
时间相关参数:
- -time 天
- min 分钟
- +n n天(分钟)之前
- -n n天(分钟)之内
- -atime +n 搜索n天前被访问过的文件或目录
- -mtime -n 搜索n天前被修改过文件内容的文件或目录
- -cmin -n 搜索n分钟之内被被修改过文件内容、权限、属性的文件或目录
- 。。。
5. locate
此命令和find / -name类似,但是它是从数据库文件中查找指定文件,因此效率比find快得多
- -i 忽略大小写
- -r 使用正则表达式做匹配条件。
总结
- 五个查找命令中,find、locate、whereis是用来查找具体的文件,which、type是用来查找命令(which也相当于查找文件,但是只是查找命令位置)
- whereis只查找3中类型的文件:二进制文件、说明文件、源代码文件
- whereis和locate都是从数据库文件查找,所以效率最高
- 使用优先级:
- 区分命令,使用type
- 查找命令位置,使用which、whereis、type(优先使用whereis)
- 通过文件名查找,优先使用locate,找不到时,updatedb
- 其他查找条件、或者因数据库文件未更新,使用whereis、lacate找不到时用find