whereis 專門搜尋預定義目錄下的可執行檔、原始碼、man pages,速度遠快於 find,適合「已知程式名、找安裝位置」的場景。
| 指令 | 搜尋範圍 | 速度 | 即時性 | 適用場景 |
|---|---|---|---|---|
| whereis | 預設系統目錄(/bin, /usr/bin, /usr/share/man 等) | 極快 | 即時 | 找指令安裝路徑、man page |
| locate | 全檔案系統資料庫 (/var/lib/mlocate/mlocate.db) | 極快 | 每日更新 | 模糊檔名搜尋 |
| find | 即時遍歷磁碟 | 慢 | 完全即時 | 複雜條件、屬性、時間篩選 |
whereis [-bmsu] [-BMS 目錄] -f 檔名
| 參數 | 功能 |
|---|---|
| -b | 只找二進制檔 |
| -m | 只找 man page |
| -s | 只找原始碼 |
| -u | 找非標準類型(非上述三類) |
| -B 目錄 | 指定二進制搜尋路徑 |
| -M 目錄 | 指定 man page 搜尋路徑 |
| -S 目錄 | 指定原始碼搜尋路徑 |
| -f | 分隔選項與檔名(多檔名時必須) |
$ whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx/modules /etc/nginx /usr/share/man/man8/nginx.8.gz
$ whereis -b nginx
nginx: /usr/sbin/nginx /usr/lib/nginx/modules
$ whereis -m nginx
nginx: /usr/share/man/man8/nginx.8.gz
$ whereis -f -b ls cp mv
ls: /usr/bin/ls
cp: /usr/bin/cp
mv: /usr/bin/mv
$ whereis -B /opt/myapp/bin -f -b mycmd
mycmd: /opt/myapp/bin/mycmd
關鍵字: 路徑1 路徑2 ...
# 範例:
svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz
# 依序:二進制、二進制(其他)、man page
/opt、/home、自訂前綴目錄預設不包含updatedb 或重新登入)find 或 locate# 結合 which:which 只顯示 PATH 中第一個,whereis 列出所有
$ which python3
/usr/bin/python3
$ whereis -b python3
python3: /usr/bin/python3 /usr/bin/python3.11 /usr/lib/python3.11
# 腳本中驗證指令是否存在
if whereis -b "$CMD" | grep -q "/"; then
echo "$CMD 可用"
fi
善用 whereis 秒級定位指令全貌,配合 which/type/find 組成完整搜尋工具鏈。