一、指令的查找
1.which
which 指令是根据 “PATH” 环境变量所规范的路径, 去搜寻“可执行文件”的文件名; 所以,重点是找出“可执行文件”,不可以找到 bash 内置的指令
which [-a] command
-a : 将所有由 PATH 目录中可以找到的指令均列出, 而不止第一个被找到的指令名称
2.type
判断某指令是来自于外部指令( 指的是其他非 bash 所提供的指令) 还是内置在
bash 当中
type [-tpa] name
选项与参数:
===> 不加任何选项与参数时, type 会显示出 name 是外部指令还是 bash 内置指令
-t ===> 当加入 -t 参数时, type 会将 name 以下面这些字眼显示出他的意义:
#file 表示为外部指令;
#alias 表示该指令为命令别名所设置的名称;
#builtin 表示该指令为 bash 内置的指令功能;
-p ===> 如果后面接的 name 为外部指令时, 才会显示完整文件名
-a ===> 会由 PATH 变量定义的路径中, 将所有含 name 的指令都列出来, 包含 alias
二、文件的查找
1.whereis
whereis 只找系统中某些特定目录下面的文件
whereis [option] [文件或目录名]
option可选参数:
-l :可以列出 whereis 会去查询的几个主要目录而已
-b :只找 binary 格式的文件
-m :只找在说明文档 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
2.locate
说明:
因为 locate 寻找的数据是由“已创建的数据库 /var/lib/mlocate/” 里面的数据所搜寻到的, 所以不用直接在去硬盘当中存取数据;
注意:
而数据库的创建默认是在每天执行一次 ( 每个 distribution 都不同, CentOS 7.x 是每天更新数据库一次),所以当你新创建起来的文件, 却还在数据库更新之前搜寻该文件, 那么 locate 会告诉你“找不到! ”这时你必须要更新数据库
更新数据库:
更新 locate 数据库的方法就是直接输入 updatedb ; updatedb 指令会去读取 /etc/updatedb.conf 这个配置文件的设置, 然后再去硬盘里面进行搜寻文件名的动作, 最后就更新整个数据库文件
locate [option] [文件/目录 的 完整名/部分名]
option可选参数:
-i : 忽略大小写的差异;
-c : 不输出文件名, 仅计算找到的文件数量
-l : 仅输出几行的意思, 例如输出五行则是 -l 5
-S : 输出 locate 所使用的数据库文件的相关信息, 包括该数据库纪录的文件/目录数量等
-r : 后面可接正则表达式的显示方式