zoukankan      html  css  js  c++  java
  • LINIUX 查询命令的 区别 chich whereis locate fing

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:

    • which  查看可执行文件的位置。

    • whereis 查看文件的位置。

    • locate   配合数据库查看文件位置。

    • find   实际搜寻硬盘查询文件名称。

    which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 

    1.命令格式:which 可执行文件名称 2.命令功能:which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。3.命令参数:-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。-p  与-n参数相同,但此处的包括了文件的路径。-w  指定输出时栏位的宽度。-V  显示版本信息4.使用实例:实例1:查找文件、显示命令路径 命令:which lsmod输出:

    [root@localhost ~]# which pwd
    /bin/pwd
    [root@localhost ~]#  which adduser
    /usr/sbin/adduser
    [root@localhost ~]#

    说明:

    which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!

    实例2:用 which 去找出 which 

    命令:which which 输出:

    [root@localhost ~]# which which
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot  --show-tilde'
         /usr/bin/which
    [root@localhost ~]#

    说明: 竟然会有两个 which ,其中一个是 alias 这就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令!

    实例3:找出 cd 这个命令 

    命令:which cd

    输出:

     

    说明:

     cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是bash 内建的命令! 但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的!

    -   -   -   -   -   -   -   -

    whereis 命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

    和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 

    但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 

    1.命令格式:whereis [-bmsu] [BMS 目录名 -f ] 文件名2.命令功能:whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。3.命令参数:-b   定位可执行文件。-m   定位帮助文件。-s   定位源代码文件。-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。-B   指定搜索可执行文件的路径。-M   指定搜索帮助文件的路径。-S   指定搜索源代码文件的路径。4.使用实例:实例1:将和**文件相关的文件都查找出来 命令:whereis svn输出:

    [root@localhost ~]# whereis tomcat
    tomcat:
    [root@localhost ~]# whereis svn
    svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz

    说明:

    tomcat没安装,找不出来,svn安装找出了很多相关文件


    实例2:只将二进制文件 查找出来 命令:whereis -b svn 输出:

    [root@localhost ~]# whereis -b svn
    svn: /usr/bin/svn /usr/local/svn
    [root@localhost ~]# whereis -m svn
    svn: /usr/share/man/man1/svn.1.gz
    [root@localhost ~]# whereis -s svn
    svn:
    [root@localhost ~]#

    说明:whereis -m svn 查出说明文档路径,whereis -s svn 找source源文件。

    -   -   -   -   -   -   -   -

    locate 命令

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。

    1.命令格式:Locate [选择参数] [样式]2.命令功能:locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*” 或”?”等)来指定范本样式,如指定范本为kcpa*ner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。3.命令参数:-e   将排除在寻找的范围之外。-1  如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。-f   将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。-q  安静模式,不会显示任何错误讯息。-n 至多显示 n个输出。-r 使用正规运算式 做寻找的条件。-o 指定资料库存的名称。-d 指定资料库的路径-h 显示辅助讯息-V 显示程式的版本讯息

    4.使用实例:

    实例1:查找和pwd相关的所有文件 命令:locate pwd输出:

    peida-VirtualBox ~ # locate pwd
    /bin/pwd
    /etc/.pwd.lock
    /sbin/unix_chkpwd
    /usr/bin/pwdx
    /usr/include/pwd.h
    /usr/lib/python2.7/dist-packages/twisted/python/fakepwd.py
    /usr/lib/python2.7/dist-packages/twisted/python/fakepwd.pyc
    /usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.py
    /usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.pyc
    /usr/lib/syslinux/pwd.c32
    /usr/share/help/C/empathy/irc-join-pwd.page
    /usr/share/help/ca/empathy/irc-join-pwd.page
    /usr/share/help/cs/empathy/irc-join-pwd.page
    /usr/share/help/de/empathy/irc-join-pwd.page
    /usr/share/help/el/empathy/irc-join-pwd.page


    实例2:搜索etc目录下所有以sh开头的文件 命令:locate /etc/sh输出:

    peida-VirtualBox ~ # locate /etc/sh
    /etc/shadow
    /etc/shadow-
    /etc/shells
    peida-VirtualBox ~ #


    实例3:搜索etc目录下,所有以m开头的文件 命令:locate /etc/m输出:

    peida-VirtualBox ~ # locate /etc/m
    /etc/magic
    /etc/magic.mime
    /etc/mailcap
    /etc/mailcap.order
    /etc/manpath.config
    /etc/mate-settings-daemon
  • 相关阅读:
    html5+css3中的background: -moz-linear-gradient 用法 (转载)
    CentOS 安装Apache服务
    Linux 笔记
    CURL 笔记
    Spring Application Context文件没有提示功能解决方法
    LeetCode 389. Find the Difference
    LeetCode 104. Maximum Depth of Binary Tree
    LeetCode 520. Detect Capital
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 136. Single Number
  • 原文地址:https://www.cnblogs.com/pushuiyu/p/12862278.html
Copyright © 2011-2022 走看看