作者 | Himanshu Arora
譯者 | wenwensnow ? ? 共計翻譯:6 篇 貢獻時間:70 天
有時,在使用命令列的時候,我們需要快速找到某一個命令的二進位制檔案所在位置。這種情況下可以選擇 find[1] 命令,但使用它會耗費時間,可能也會出現意料之外的情況。有一個專門為這種情況設計的命令:whereis
。
在這篇文章裡,我們會透過一些便於理解的例子來解釋這一命令的基礎內容。但在這之前,值得說明的一點是,下麵出現的所有例子都在 Ubuntu 16.04 LTS 下測試過。
Linux whereis 命令
whereis
命令可以幫助使用者尋找某一命令的二進位制檔案,原始碼以及幫助頁面。下麵是它的格式:
whereis [options] [-BMS directory... -f] name...
這是這一命令的 man 頁面給出的解釋:
whereis
可以查詢指定命令的二進位制檔案、源檔案和幫助檔案。 被找到的檔案在顯示時,會去掉主路徑名,然後再去掉檔案的(單個)尾部副檔名 (如:.c
),來源於原始碼控制的s.
字首也會被去掉。接下來,whereis
會嘗試在標準的 Linux 位置裡尋找具體程式,也會在由$PATH
和$MANPATH
指定的路徑中尋找。
下麵這些以 Q&A; 形式出現的例子,可以給你一個關於如何使用 whereis 命令的直觀感受。
Q1. 如何用 whereis 命令尋找二進位制檔案所在位置?
假設你想找,比如說,whereis
命令自己所在位置。下麵是你具體的操作:
whereis whereis
How to find location of binary file using whereis
需要註意的是,輸出的第一個路徑才是你想要的結果。使用 whereis
命令,同時也會顯示幫助頁面和原始碼所在路徑。(如果能找到的情況下會顯示,但是在這一例中沒有找到)所以你在輸出中看見的第二個路徑就是幫助頁面檔案所在位置。
Q2. 怎麼在搜尋時規定只搜尋二進位制檔案、幫助頁面,還是原始碼呢?
如果你想只搜尋,假設說,二進位制檔案,你可以使用 -b
這一命令列選項。例如:
whereis -b cp
How to specifically search for binaries, manuals, or source code
類似的, -m
和 -s
這兩個 選項分別對應 幫助頁面和原始碼。
Q3.如何限制 whereis 命令搜尋位置?
預設情況下,whereis
是從由匹配符所定義的硬編碼路徑來尋找檔案的。但如果你想的話,你可以用命令列選項來限制搜尋。例如,如果你只想在 /usr/bin
尋找二進位制檔案,你可以用 -B
這一選項來實現。
whereis -B /usr/bin/ -f cp
註意:使用這種方式時可以給出多個路徑。使用 -f
這一選項來明確分隔目錄串列和要搜尋的檔案名。
類似的,如果你想只搜尋幫助檔案或原始碼,你可以對應使用 -M
和 -S
這兩個選項。
Q4. 如何檢視 whereis 的搜尋路徑?
與此相對應的也有一個選項。只要在 whereis
後加上 -l
。
whereis -l
這是例子的部分輸出結果:
How to see paths that whereis uses for search
Q5. 如何找到一個有異常條目的命令?
對於 whereis
命令來說,如果一個命令對每個顯式的請求型別都不止一項,則該命令被視為異常。例如,沒有可用檔案的命令,或者對應檔案分散在各處的命令都可以算作異常命令。 當使用 -u
這一選項,whereis
就會顯示那些有異常條目的命令。
例如,下麵這一例子就顯示,在當前目錄中,沒有對應檔案或有多個檔案的命令。
whereis -m -u *
總結
我覺得,whereis
不是那種你需要經常使用的命令列工具。但在遇到某些特殊情況時,它絕對會讓你的生活變得輕鬆。我們已經涉及了這一工具提供的一些重要命令列選項,所以要註意練習。想瞭解更多資訊,直接去看它的 man[2] 頁面吧。
via: https://www.howtoforge.com/linux-whereis-command/
作者:Himanshu Arora[4] 譯者:wenwensnow 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出