平時會偶爾忘記一些命令或者文件,下面的這些命令能夠幫我們快速的找到命令或者文件
1. 命令的搜尋
命令:which
功能:在PATH配置的目錄下搜尋命令
用法:which [-a] [command]
參數:
-a: 把從PATH配置的目錄找到找到的所有指令都列出,而不是只顯示第一個被找到的指令
例子1:查找man命令,有且僅顯示一條查詢結果
例子2:查找man命令,並顯示所有的查詢結果
由上面兩個可以看出有沒有參數-a的差別
注意點:
這個命令是根據PATH所配置的目錄去搜尋待查命令,並且which後面加的完整命令名。有一些命令是bash內建的命令,不能通過which去查出。
2. 文件或者目錄名的搜尋
命令:whereis
功能:在指定的特殊目錄下去搜尋文件或者目錄名
用法:whereis [-blmsu] [文件或者目錄名]
參數:
-b: 只查詢binary的文件
-l: 列出whereis查詢的所有目錄
-m: 只找在說明檔manual下面查找
-s: 只找source來源文件
-u: 搜尋不在-[bms]項目中的其它特殊文件
例子1:查找cat命令的相關的文件
例子2:在說明檔manual下面查找cat相關的文件
注意點:
whereis後面接的是完整的文件或者目錄名
命令:locate
功能:在已建立的數據庫裡面,查找文件或者目錄
用法:locate -[iclSr] 部分檔案名
參數:
-i: 忽略大小寫
-c: 不輸出文件名,只計算出找到的文件數量
-l: 後面加輸出的行數,例如輸出3行就加參數-l 3
-S: 輸出locate所使用的資料庫的詳細信息
-r: 後面可接正規表達式的顯示法
例子1:
查找含有history的文件名或者目錄中包含history的文件和目錄,並且只顯示6行
例子2:顯示locate所使用的資料庫的信息
這裡可以看到資料庫在系統裡面的目錄和文件名
注意:
使用locate查詢會有一定的限制,因為該命令會到指定的資料庫裡面去查詢,但資料庫一般一天才會自動更新一次(各個Linux的distribution會不同),這樣新建立文件或者目錄就會找不到。我們可以通過命令updatedb去手動更新資料庫,updatedb指令會讀取/etc/updatedb.conf文件裡面的設定,然後再去硬盤裡面搜尋文件或者目錄,然後更新資料庫,這樣新建的文件或者目錄就可以查詢到了。
命令:find
功能:搜尋文件或者目錄
用法:find [path] [option] [action]
參數:
1. 與時間有關的參數:共有-atime,-ctime和-mtime
-mtime n: n為數字,表示在n天之前的一天以內修改過內容的文件
-mtime +n: 顯示在n天之前(不含n天本身)被修改過內容的文件
-mtime -n: 顯示在n天之內(含n天本身)被修改過內容的文件
-newer file: file為一個存在的文件,顯示比file還新的文件
將系統過去24小時修改過內容的文件或者目錄列出
列出root家目錄下面比anaconda-ks.cfg文件更新的文件和目錄
2. 與使用者或者群組相關的參數
-uid n: n為數字,n是user的user id,記錄在文件/etc/passwd中
-gid n: n為數字,n是group的group id,記錄在文件/etc/shadow中
-user name: name為user的賬戶名,例如root
-group name: name為group的組名,例如users
-nouser: 尋找文件擁有者不在/etc/passwd中的文件
-nogroup: 尋找文件群組不在/etc/group中的文件
查詢home目錄下面屬於kelvin的所有文件和目錄
查詢根目錄下面不屬於任何人的檔案
3. 與文件權限和名稱相關的參數
-name filename: 搜尋檔案名稱為filename的文件
-size [+-]SIZE: 搜尋比SIZE還要大(+)或者小(-)的文件,size的單位有:c: 代表byte,k: 代表kbyte
-type TYPE: 搜尋文件的類型為TYPE的,類型主要有:一般正規文件(f),裝置檔案(b,c),目錄(d),連結檔(l),socket(s)及FIFO(p)
-perm mode: 搜尋文件權限等於mode的文件
-perm -mode: 搜尋文件權限必須要全部包括mode權限的文件
-perm /mode: 搜尋文件權限包括任何一mode的權限的文件
在根目錄下找出passwd的文件
在根目錄下查找含有passwd的文件
查找run目錄下的socket類型的文件
查詢根目錄下含有s或者t權限的文件
查詢根目錄下含有s或者t權限的文件,並且以ls -al的方式顯示結果
顯示根目錄下面大於1M的文件