文件搜索命令:
locate
locate 文件名
速度快,在后台数据库中按 文件名 搜索
/var/lib/mlcate
- locate 命令所搜索的后台的数据库
- 默认每天自动更新,所以新建文件搜索不到
- 在不同linux中,该数据库名字稍微不同,例如locatedb、slocate、mlocate
updatedb
手动更新数据库
可使用
locate locate
搜索locate相关文件,
缺点:只能按照文件名进行搜索,但常用。
配置文件
touch /root/cangls
touch /tmp/cangls
updatedb
locate cangls
显示为 /root/cangls 只有一条,而/tmp下的cangls没有显示出来,原因在于locate搜索遵循配置文件
vi /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"
在PRUNEPATHS 中配置了/tmp/目录不进行搜索,所以没有进行查找root
PRUNE_BIND_MOUNTS = “yes”
开启搜索限制,yes为后面三项都生效。no为后面三项都不生效
1. PRUNEFS = 搜索时,不搜索的文件系统
2. PRUNENAMES =搜索时,不搜索的文件类型
3. PRUNEPATHS =搜索时,不搜索的路径
搜索命令的命令whereis与which
whereis
[root@VM_55_31_centos ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
/usr/bin/ls
ls的位置,可执行文件
/usr/share/man/man1/ls.1.gz
帮助文档所在位置
1.只能搜索系统命令,不能搜索普通文件,可查看帮助文档位置,执行文件位置
-b:只查看执行文件
-m:只查看帮助文件
which
[root@VM_55_31_centos ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
alias ls='ls --color=auto'
别名
/usr/bin/ls
执行命令的位置
1.which 命令名,可以查询到执行命令的位置,可以查看命令的别名
2.shell内部命令whereis和which搜索不到该命令例:cd
PATH环境变量:系统搜索命令的路径
[root@VM_55_31_centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
打印$PATH变量,命令如ls的路径
当执行ls命令时就从上述路径中找,本来是要通过输入/bin/ls的路径才可执行ls,这样就可以只是输入ls命令就可以执行了
自己定义的命令,如果要直接执行不用写绝对路径,就要放在上述目录之中
which和whereis
总结
相同点:
1. 都能搜索命令所在的位置。
2. 都只能搜索到外部安装的命令。不能搜索到shell自带的命令,比如cd等
3. 搜索命令范围都依赖与环境变量PATH
不同点:
1. whereis能搜索到命令的帮助文档所在位置, 而which可以搜索到命令的别名