對于Linux系統來說,我們經常面對的是字符界面環境。很多時候,我們無法很直觀地搜索、查找到我們需要的文件。另外,每個版本Linux系統的文件放置路徑也不盡相同。此刻,文件的搜索、查詢命令命令就顯得格外重要。為了降低學習、理解成本,我們可以將以下6個命令統一起來理解、記憶:which、type、whereis、locate、find、grep。
* * * * *
**which(“查找可執行文件”)**
which命令用于查找并顯示給定命令的絕對路徑,環境變量PATH中保存了查找命令時需要遍歷的目錄。which指令會在環境變量$PATH設置的目錄里查找符合條件的文件。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
| 參數 |說明 |
| --- | --- |
|-a| 選項all的縮寫,將所有PATH目錄中可以找到的命令均列出,而不僅僅是第一個 |
|-V| 或者v,顯示可執行文件的版本信息 |
【例5.1.2-1】查找文件、顯示命令useradd、which、cat的路徑。
~~~
[root@geeklp-test ~]# which adduser
/usr/sbin/adduser
[root@geeklp-test ~]# 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
[root@geeklp-test ~]# 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”指定的路徑中,顯示給定指令的信息,包括命令別名 |
【例5.1.2-2】分別使用type命令的t、p、a三個選項及無選項來展示輸出結果。
~~~
[root@geeklp-test ~]# type -t ls
alias
[root@geeklp-test ~]# type -t tree
file
[root@geeklp-test ~]# type -p tree
/usr/bin/tree
[root@geeklp-test ~]# type -p pwd
[root@geeklp-test ~]# type -a which
which 是 `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 的別名
which 是 /usr/bin/which
[root@geeklp-test ~]# 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|輸出有效查找路徑|
【例5.1.2-3】whereis命令的部分選項展示。
~~~
[root@geeklp-test ~]# whereis -b tree
tree: /usr/bin/tree
[root@geeklp-test ~]# whereis -m tree
tree: /usr/share/man/man1/tree.1.gz
[root@geeklp-test ~]# whereis tree
tree: /usr/bin/tree /usr/share/man/man1/tree.1.gz
[root@geeklp-test ~]# whereis -u tree
tree: /usr/bin/tree /usr/share/man/man1/tree.1.gz
~~~
* * * * *
**locate**
locate命令是一個外部命令,在最小化安裝的CentOS7中不能直接使用,需要安裝之后才能使用。
【例5.1.2-4】安裝locate工具。
~~~
[root@geeklp-test ~]# yum -y install mlocate
[root@geeklp-test ~]# updatedb
~~~
locate命令用于查找符合條件的文檔,該命令會去保存文檔和目錄名稱的數據庫內,查找合乎范本樣式條件的文檔或目錄,比find快很多。因為該命令是從數據庫內查找,并不是在磁盤上直接查找。
|參數|說明|
| --- | --- |
|-i|忽略大小寫差異查找|
|-r|可跟正則表達式的顯示方式|
【例5.1.2-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**
find是一個功能強大的命令。
- 前言
- 第一章 Linux簡介
- 第二章 CentOS7系統的安裝
- 第三章 環境初始化
- 3.1 準備工作
- 3.1.1 正常開關機流程
- 3.1.2 SSH連接
- 3.2 設置中文語言、字符集支持
- 3.3 修改主機名
- 3.4 時間、時區設置
- 3.5 網絡配置
- 3.6 系統更新
- 3.7 安裝常用工具
- 3.8 常用環境設置
- 第四章 FHS
- 第五章 常用命令
- 5.1 文件和目錄操作、管理
- 5.1.1 目錄基本操作
- 5.1.2 文件的搜索與查詢
- 5.2 文件傳輸與同步
- 5.3 網絡通信、管理
- 5.4 磁盤與文件系統管理
- 5.6 系統管理與維護
- 5.7 打包、壓縮、備份與還原
- tar備份
- vi和vim的使用
- 用戶管理
- ACL的使用
- Bash Shell基礎
- KVM簡介
- iptables