1. 程式人生 > >which、type、whereis、locate幾個命令的區別與聯絡

which、type、whereis、locate幾個命令的區別與聯絡

對於Linux系統來說,我們經常面對的是字元介面環境。很多時候,我們無法很直觀地搜尋、查詢到我們需要的檔案。另外,每個版本Linux系統的檔案放置路徑也不盡相同。此刻,檔案的搜尋、查詢命令命令就顯得格外重要。為了降低學習、理解成本,我們可以將以下6個命令統一起來理解、記憶:which、type、whereis、locate、find、grep。

which(“查詢可執行檔案”)
which命令用於查詢並顯示給定命令的絕對路徑,環境變數PATH中儲存了查詢命令時需要遍歷的目錄。which指令會在環境變數$PATH設定的目錄裡查詢符合條件的檔案。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。

引數 說明
-a 選項all的縮寫,將所有PATH目錄中可以找到的命令均列出,而不僅僅是第一個
-V 或者v,顯示可執行檔案的版本資訊

【例1】查詢檔案、顯示命令useradd、which、cat的路徑。

[[email protected] ~]# which adduser
/usr/sbin/adduser
[[email protected] ~]# which -a which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/alias /usr/bin/which /usr/bin/which [[email protected] ~]# which -v pwd GNU which v2.20, Copyright (C) 1999 - 2008 Carlo Wood. GNU which comes with ABSOLUTELY NO WARRANTY; This program is free software; your freedom to use, change and distribute this program is protected by the GPL.

說明:which是根據使用者所配置的 PATH 變數內的目錄去搜尋可執行檔的!所以,不同的 PATH 配置內容所找到的命令當然不一樣的!

type
type命令用來顯示指定命令的型別 ( alias:別名。 keyword:關鍵字,Shell保留字。 function:函式,Shell函式。 builtin:內建(內嵌)命令,Shell內建命令。 file:檔案,磁碟檔案,外部命令。 unfound:未找到)

參 數 說明
-t 顯示“file”、“alias”或者“builtin”,分別表示給定的指令為“外部指令”、“別名”或者“內嵌指令”
-p 如果給出的指令為外部指令,則顯示其絕對路徑
-a 在環境變數“PATH”指定的路徑中,顯示給定指令的資訊,包括命令別名

【例2】分別使用type命令的t、p、a三個選項及無選項來展示輸出結果。

[[email protected] ~]# type -t ls
alias
[[email protected] ~]# type -t tree
file
[[email protected] ~]# type -p tree
/usr/bin/tree
[[email protected] ~]# type -p pwd
[[email protected] ~]# type -a which
which 是 `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 的別名
which 是 /usr/bin/which
[[email protected] ~]# type cd
cd 是 shell 內嵌

說明:命令tree是我後來安裝的,這是一個外部命令。由於pwd是一個內建命令,所以選項p也顯示不出其路徑。

whereis
whereis命令用於在特定目錄中查詢符合條件的檔案。whereis命令用來定位指令的二進位制程式、原始碼檔案和man手冊頁等相關檔案的路徑。 whereis命令只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和原始碼檔案(引數-s)。

引數 說明
-b 只搜尋二進位制檔案
-B <目錄> 定義二進位制檔案查詢路徑
-m 只搜尋 man 手冊
-M <目錄> 定義 man 手冊查詢路徑
-s 只搜尋原始碼
-S <目錄> 定義原始碼查詢路徑
-f 終止 <目錄> 引數列表
-u 搜尋不常見(不是b,m,s選項指定的型別)記錄
-l 輸出有效查詢路徑

【例3】whereis命令的部分選項展示。

[[email protected] ~]# whereis -b tree
tree: /usr/bin/tree
[[email protected] ~]# whereis -m tree
tree: /usr/share/man/man1/tree.1.gz
[[email protected] ~]# whereis tree
tree: /usr/bin/tree /usr/share/man/man1/tree.1.gz
[[email protected] ~]# whereis -u tree
tree: /usr/bin/tree /usr/share/man/man1/tree.1.gz

locate
locate命令是一個外部命令,在最小化安裝的CentOS7中不能直接使用,需要安裝之後才能使用。
【例4】安裝locate工具。

[root@geeklp-test ~]# yum -y install mlocate
[root@geeklp-test ~]# updatedb

locate命令用於查詢符合條件的文件,該命令會去儲存文件和目錄名稱的資料庫內,查詢合乎範本樣式條件的文件或目錄,比find快很多。因為該命令是從資料庫內查詢,並不是在磁碟上直接查詢。

引數 說明
-i 忽略大小寫差異查詢
-r 可跟正則表示式的顯示方式

【例5】用locate命令查詢包含geeklp的檔案或目錄。

[root@geeklp-test ~]# touch love-geeklp-best
[root@geeklp-test ~]# updatedb
[root@geeklp-test ~]# locate geeklp
/root/geeklp-best
/root/geeklp-dir
/root/geeklp-ivan
/root/geeklp-test
/root/love-geeklp-best

說明:本例中,檔案love-geeklp-best是我剛剛建立的,所以必須要用命令updatedb更新一下資料庫檔案才能夠查詢到相關內容。

查詢命令還有find與grep,這兩個命令功能比較強大,在後續的文章中會繼續探討。

相關推薦

whichtypewhereislocate命令區別聯絡

對於Linux系統來說,我們經常面對的是字元介面環境。很多時候,我們無法很直觀地搜尋、查詢到我們需要的檔案。另外,每個版本Linux系統的檔案放置路徑也不盡相同。此刻,檔案的搜尋、查詢命令命令就顯得格外重要。為了降低學習、理解成本,我們可以將以下6個命令統一起來

GitHub上最火的最值得前端學習的資料結構演算法專案!沒有之一!

![](https://upload-images.jianshu.io/upload_images/12890819-c9d60abacc52a44d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) --- Hello,大家好,我是你們的

全/半虛擬化硬體/軟體輔助的全虛擬化之間的區別聯絡

全虛擬化 不需要對GuestOS作業系統軟體的原始碼做任何的修改,就可以執行在這樣的VMM中 在全虛擬化的虛擬平臺中,GuestOS並不知道自己是一臺虛擬機器,它會認為自己就是執行在計算機物理硬體裝置上的HostOS。因為全虛擬化的VMM會將一個OS所能夠操作的CPU、記憶體、外設等物理

射頻基帶調變解調器這詞究竟是什麼關係?

射頻、基帶、調變解調器這幾個詞究竟是什麼關係?(網上看到不錯的資訊就轉載過來了) 如果嚴格定義,依我理解,射頻實際指的是高頻電磁頻率,而基帶則是指基帶訊號,沒有經過調製的原始電訊號。不過通常,這裡我們將射頻和基帶理

Ubuntu下檢視CPU記憶體和硬碟詳細資訊的命令

轉載自:【http://www.sijitao.NET/1749.html】 CPU: 型號:grep "model name" /proc/cpuinfo |awk -F ':' '{print $NF}' 數量:lscpu |grep "CPU socket" |

關於系統服務程序共享資料夾管理的方式

2008下可以使用組策略或安全模板來配置實現;2003下用微軟提供的subinacl工具實現,如: subinacl.exe /service * /grant=test=TOP 賦與test使用者啟動、停止、暫停所有服務的權利。 注意,萬用字元“*”有時候不包括一些特殊

C# ASP.NET 開源網上商城外貿產品網上展示的效果圖 -- 僅供大家參考

  “能抓老鼠就是好貓”,軟體產品也是一樣的道理。    有一個朋友是在浙江寧波開外貿公司,以前中國殼牌石油的高層主管,也是我的好朋友,我給他看了去年做的B2C網上商城,看了後就給跟我直接講多少錢,我只要原始碼,其他功能、介面、後臺都不需要,自己想把自己的外貿商品放到

C#中(int)Conver.Toint32()int.Parse()三種類型轉換方式的區別聯系--C#基礎知識

實例 文章 小數位 其他 返回 system roman static logs 自己也是剛學習C#程序設計語言,總結了一點知識點,想分享給大家。畢竟剛學習這門語言,學得不深,哪裏如果有錯誤,請幫個忙指出一下哈,謝謝! 1、(int)可用於單精度、雙精度等其他數值類型的轉

JDKJREJVM的區別聯絡

本文章僅供本人學習參考,如有錯誤和不妥,望指正~~ 轉載連結:https://jingyan.baidu.com/article/425e69e6077283be15fc16ed.html   前幾天面試的時候被問到JDK、JRE、JVM三者的區別,雖然答了出來,但是有些細節還

資料段資料報資料包幀的區別聯絡

幀與資料包 首先不容易理解的是資料包和幀。 資料包,就是從最上層,一層一層封裝,直到網路層的,最後藉由資料鏈路層傳送出去的資料單元。 幀,是資料鏈路層的傳輸單元。 這麼一看,資料包和幀好像沒什麼不一樣,好像資料傳遞的都是一樣的。可是為什麼會把它們區分開呢?學習 TCP/IP 協議的同

Python的例項方法類方法和靜態方法之間的區別聯絡

Python的例項方法、類方法和靜態方法 class Test: def test1(self): print('test......') @classmethod def test2(cls): print('test2......c

雜談(第1篇) | 程序執行緒協程的區別聯絡

作為程式設計師,在面試的時候經常被問到:說說程序、執行緒、協程的區別。下面我們就總結一下。 1.面試答案     1.1  程序與執行緒的區別 總述:執行緒是程序的一個實體,一個程序至少有一個執行緒。 1.根本區別;程序是作業系統資源分配的基本

Haddoop中的hdfshbase hive區別聯絡

Hive: Hive不支援更改資料的操作,Hive基於資料倉庫,提供靜態資料的動態查詢。其使用類SQL語言,底層經過編譯轉為MapReduce程式,在Hadoop上執行,資料儲存在HDFS上。 HDFS: HDFS是GFS的一種實現

web伺服器應用伺服器web容器反向代理伺服器區別聯絡

Web伺服器工作原理 HTTP協議基於TCP協議上,是一個應用層協議,用於使用者代理和Web伺服器進行通訊。Web伺服器通常採用一問一答的方式進行工作: 在使用者代理上使用者發起資源請求,請求內容包括但不限於:指定資源的唯一標識URI,指明動作型別(GET/POS

記憶體溢位記憶體洩露的區別聯絡,如何檢測解決

記憶體溢位 out of memory,是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是記憶體溢位 記憶體洩露 memory leak,是指程式在申請記

0JDKJREJVM區別聯絡

1.基本概念 JVM : 全稱 Java Virtual Machine,即java虛擬機器,是一個用於執行位元組碼的”虛擬計算機”。由於不同的作業系統有不同的虛擬機器,Java虛擬機器在執行位元組碼時,把位元組碼解釋成具體平臺上的機器指令執行。實現了“一次編譯,隨處執行”。 這也是J

Python,Pycharm,Anaconda三者的區別聯絡安裝過程及其注意事項

1、致歡迎詞 我將詳細講述在學Python初期的各種手忙腳亂的問題的解決,通過這些步驟的操作,讓你的注意力集中在Python的語法上以及後面利用Python所解決的專案問題上。而我自己作為小白,很不幸的沒有錯過任何的坑,都跳了進去,所以在這裡寫下經驗貼,一方面希望能給後來的學者能夠高效的避開這些

QtCreator中構建qmake執行清理等區別聯絡

qmake:根據實際環境建立專案檔案.pro   並且執行qmake生成適當的Makefile,並且執行qmake[qmake xx.pro]生成除錯[build-ttt-4_8_6-Debug]或者釋出[build-ttt-4_8_6-Release]目錄,裡面含有qmake後

CygwinMinGMSys區別聯絡(轉)

轉自:https://www.biaodianfu.com/cygwin-ming-msys.html 什麼是Cygwin? Cygwin,原Cygnus出品(已被紅帽收購),目前是RedHat名下的專案。專案的目的是提供運行於 Windows 平臺的類 Unix 環境(以 GNU 工具為代表)。為了達到這

資料倉庫和資料集市的概念區別聯絡

1.為什麼會出現資料倉庫和資料集市?     “資料倉庫”的概念可以追溯到80 年代中期。從本質上講,最初資料倉庫是想為操作型系統到決策支援環境的資料流提供一種體系結構模型,並嘗試解決和這些資料流相關的各種問題。     在缺乏“資料倉庫”體系結構的情