linux系統中whereis的用法詳解

来源:http://www.cnblogs.com/Chocookic/archive/2016/03/09/5257172.html
-Advertisement-
Play Games

whereis命令只能用於程式名的搜索,而且只搜索二進位文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。 和find相比,whereis查找的速度非常快,這是因為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新人,歡迎各種指點。

感謝鋒哥指點迷津!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 概述 為了提高併發MySQL加入了多版本併發控制,它把舊版本記錄保存在了共用表空間,在事務未提交之前對應的行記錄還是受到鎖的限制,當事務提交之後對應的記錄行就在緩存中被修改了記錄也被持久化了,當刷新線程按一定的規律進行刷新的時候行的修改記錄被刷新到了物理數據頁中,並且共用表空間的中的舊版本記錄頁也被
  • 1.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如: select id from t where num is null 可以在
  • 第1題: 設有商店和顧客兩個實體,“商店”有屬性:商店編號、商店名、地址、電話,“顧客”有屬性:顧客編號、姓名、地址、年齡、性別。假設一個商店有多個顧客購物,一個顧客可以到多個商店購物,顧客每次去商店購物有一個消費金額和日期,而且規定每個顧客在每個商店裡每天最多消費一次。 ① 試畫出ER圖,並註明屬
  • 最近項目上使用Oracle的Merge,所以找來一下資料學習瞭解。 該命令使用一條語句從一個或者多個數據源中完成對錶的更新和插入數據. ORACLE 9i 中,使用此命令必須同時指定UPDATE 和INSERT 關鍵詞,ORACLE 10g 做瞭如下改動。 特點: 1、insert 和update是
  • SQL Server on Linux 理由淺析 今天的爆炸性新聞《SQL Server on Linux》基本上在各大科技媒體上刷屏了 大家看到這個新聞都覺得非常震精,而美股,今天微軟開盤上漲1.5%,資本市場怎麼看微軟也非常值得關註。 微軟真正要擁抱開源,擁抱Linux了嗎? 本人覺得:是的,但
  • mysql版本5.7.9 在mac終端下修改mysql用戶登錄密碼 終端命令如下: update mysql.user set authentication_string=PASSWORD("123456") where user='root'; FLUSH PRIVILEGES; 之前嘗試百度到的
  • --寫在開始-- 玩Linux,不同的版本會有一些細微區別; so,經常需要查看伺服器版本號; --正文-- 有以下命令可以查看linux伺服器版本號:# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd
  • 開始---->運行---->cmd,或者是window+R組合鍵,調出命令視窗 輸入命令:netstat -ano,列出所有埠的情況。在列表中我們觀察被占用的埠,比如是49157,首先找到它。 查看被占用埠對應的PID,輸入命令:netstat -aon|findstr "49157",回車,
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...