//   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系统里所有的文件和文件夹建立了一个索引

索引:相当于书的目录。方便查询的一个东西。

索引是用来快速查询的一种数据,它描述其他数据存放在哪里

Logo

更多推荐