linux系統中whereis的用法詳解


whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。

和find相比,whereis查找的速度非常快,這是因為linux系統會將系統內的所有文件都記錄在一個數據庫文件中,當使用whereis和下面即將介紹的locate時,會從數據庫中查找數據,而不是像find命令那樣,通過遍歷硬盤來查找,效率自然會很高。 

但是該數據庫文件並不是實時更新,默認情況下時一星期更新一次,因此,我們在用whereis和locate 查找文件時,有時會找到已經被刪除的數據,或者剛剛建立文件,卻無法查找到,原因就是因為數據庫文件沒有被更新。 

命令格式:

whereis [-bmsu] [BMS 目錄名 -f ] 文件名

命令功能:

whereis命令是定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。這些文件的屬性應屬於原始代碼,二進制文件,或是幫助文件。

whereis 程序還具有搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。

命令參數:

    -b   定位可執行文件。

    -m  定位幫助文件。

    -s   定位源代碼文件。

    -u   搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。

    -B   指定搜索可執行文件的路徑。

    -M  指定搜索幫助文件的路徑。

    -S   指定搜索源代碼文件的路徑。


whereis 使用舉例:
1. 查找 date 命令的可執行文件、源代碼和man手冊的位置,輸入:
    $ whereis date
    輸出如下圖:
       whereis-command-demo.gif
       Animated gif 01: whereis command running on my Debian based server
  1.1 如何只搜索二進制文件的位置?
       使用 -b 參數 :
         $ whereis -b date
  1.2 如何只搜索man手冊的位置?
       使用 -m 參數:
         $ whereis -m date
  1.3 如何只搜索源代碼文件的位置?
       使用 -s 參數:
         $ whereis -s date
2. 如何限制搜索的路徑?
   使用下面的參數限制對應的搜索路徑:
      -B /path/to/dir : 限制在指定的目錄搜索二進制文件.
      -M /path/to/dir : 限制在指定的目錄搜索man手冊文件.
      -S /path/to/dir : 限制在指定的目錄搜索二進制文件.
   在使用了-B , -M , -S  任意一個參數時,必須加上 -f  參數, 然后指定要搜索的文件名.
  2.1 只在 /bin 目錄下搜索 ls 和gcc。
       $ whereis -B /bin -f ls gcc
     結果如下:       

       gcc: /usr/share/man/man1/gcc.1.gz
         ls: /usr/share/man/man1/ls.1.gz /bin/ls

 
  2.2 查找所有/usr/bin目錄下的,其man文檔不在 /usr/man/man1/ ,且其源代碼文件不在/usr/src/ 的 文件。
       # cd /usr/bin
       # whereis -u -M /usr/man/man1 -S /usr/src -f *
      
關於whereis 的 -u參數的功能,因為不知道whereis的版本,不好查找對應版本的whereis的源代碼,
whereis在git上的代碼地址:https://github.com/karelzak/util-linux/blob/master/misc-utils/whereis.c#L96 
反正 -u 參數實際很少使用的,有興趣的可以看下這代碼。

 

參考地址:http://www.poluoluo.com/server/201502/338955.html

 

Chocoo           

2016.3.9          

------------------------------------------------------------------------------------------------------------------------------------------------

Linux新人,歡迎各種指點。

感謝鋒哥指點迷津!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM