Linux - 命令的查找(一) which,whereis,locate的用法
// which 命令查找可执行文件并显示所在的位置。格式 :which 命令或者程序名。which是Linux里面用来查找命令的存放路径。注意:which只会到PATH 变量下定义的路径下查找,如果不是在PATH变量定义的路径里,which找不到。which 很迟钝,只会到/usr/local/sbin:/usr/local/bin:/usr/sbi...
// which 命令
查找可执行文件并显示所在的位置。
格式 :which 命令或者程序名。
which是Linux里面用来查找命令的存放路径。
注意:
which只会到PATH 变量下定义的路径下查找,
如果不是在PATH变量定义的路径里,which找不到。
which 很迟钝,只会到/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 去寻找
env命令
env 是查看Linux里的环境变量的命令 environment
环境变量=全局变量 所有的命令都可以使用的
如何让which命令可以找到我们自己编译的hello二进制程序?
1.修改PAth变量的内容。 例如 :添加 /lianxi/cmd到PATH里面去。
PATH=$ PATH:/lianxi/cmd
2.顺应PATH变量,将你的程序放到PATH的目录下
使用mv命令。例如将你的出现cp到/usr/bin目录下面
如果要让Linux系统找到我们自己编译安装的软件,就需要去修改PATH变量,或者将程序放到PATH变量里。
linux命令的分类:
内部命令:属于shell解释器的一部分,安装好bash就自动有的命令就是内部命令
外部命令:一切需要安装的命令都是外部命令
永久修改PATH变量:
进入 ~/.bash_profile然后修改path变量的值。
然后重新加载或者重新登录一下,讲究永久修改了PATH变量
[root@localhost ~]# ls -a
. anaconda-ks.cfg .bash_logout .bashrc .cshrc .lesshst .python_history .viminfo
.. .bash_history .bash_profile .cache .ipython .pki .tcshrc
[root@localhost ~]# vim .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/sanchuang:/hunan_sc
export PATH
##################################
没有可执行的权限的脚本或者命令,如果复制到PATH变量对应的目录下,是否可以使用which去查找到?
不能,which只能找到可执行文件
// whereis 命令
用途:查找文件的路径,该文件的帮助文件路径,原理和which类似。
whereis 也只到PATH变量定义下的路径下查找。
不同点:whereis除了会显示命令的所在路径,还会显示其使用手册的所在路径。
whereis 查询会先显示命令的路径在哪里,然后显示该命令的使用手册的路径。
/usr 是Linux存放系统资料文件的文件夹,相当于windows里面的programfile文件夹
unix system resource
// locate 命令
格式:locate 文件名
根据每天更新的数据库(/var/lib/mlocate)查找,速度快。
which 。whereis locate 的差异
1.which和whereis 是查找Linux命令的工具,只能到PATH变量定义的路径下查找
只能找到命令,只到PATH变量目录下找,精确查找
2.locate 是从整个Linux系统里面找,能查找文件和命令,但是优缺点是查找新的文件,有时候找不到,
需要更新数据库,能找文件和命令,模糊查找,到mlocate.db里查找
优点是查找的速度特别快。因为是直接到数据库里查找。
因为我的虚拟机是最小安装,所以没有locate这个软件,我们先查一下locate是在通过哪个软件包下载的,可以使用 yum provides locate 查询
然后安装 mlocate就行了 使用命令 yum install mlocate -y 进行安装
等待安装完毕就行了。
现在我们试着使用locate命令来查找mkdir 所在路径
可以看到并没有直接显示mkdir的路径,而是显示没有那个文件或目录,
这个目录指的就是/var/lib/mlocate/mlocate.db 这个数据库
因为locate查找的过程是直接到数据库里查找的,使用cd 进入/var/lib/mlocate发现并没有内容
所以locate无法查找到。
解决方法:
手动更新一下数据库 使用 updatedb 命令
然后就可以使用locate命令了
缺点:
因为locate是到mlocate.db这个数据库里面来查询的,所以只能查询数据库更新后的内容。
如果在数据库更新以后再增加的内容locate就查询不到了,这个时候我们只有再次手动更新数据库
updatedb以后才能查找到。
查找的概念
1.精确查找 --》which
2.模糊查找 --》locate
mlocate.db是根据Linux系统里所有的文件和文件夹建立了一个索引
索引:相当于书的目录。方便查询的一个东西。
索引是用来快速查询的一种数据,它描述其他数据存放在哪里
更多推荐
所有评论(0)