whereis指令用來尋找二進位檔案、原始程式碼和說明手冊。 whereis僅在常用的幾個安裝目錄的範圍內查找,不會查找整個系統上的所有檔案。這雖然是whereis的局限性,但也正是由於這個原因,whereis的查找速度非常快。另外值得注意的是,whereis不會查找那些shell內建的指令。
例如,我們要找ls指令:
whereis ls
結果如下,其中/bin/ls是ls的路徑,另外兩個是幫助手冊的路徑。
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
如果我們把ls複製到home目錄和/usr/bin/ls目錄,再次執行whereis指令:
cp /bin/ls ~ cp /bin/ls /usr/bin/ls whereis ls
結果如下,可以發現,whereis並沒有查找home目錄,因為home目錄並不是常用的安裝目錄之一。
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
用whereis找出cd這些shell內建的指令:
whereis cd
結果如下,只顯示了幫助手冊的路徑。
cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
locate指令是基於檔案資料庫(/var/lib/mlocate/mlocate.db)的尋找工具,檔案資料庫是整個檔案系統的一個鏡像。 locate指令的查找模式預設是模糊符合的,也就是說包含檔案名稱的所有檔案都會被查找到,因此傳回結果通常會比較多。值得注意的是,文件資料庫通常每天更新一次,因此可能無法找到一些剛剛建立或刪除的文件。我們可以執行updatedb指令手動更新這個資料庫。由於是基於文件資料庫而不是檔案系統進行查找,locate的執行速度也是相當快的。
仍然以ls為例進行查找:
locate ls
我們會得到大量含有ls的結果。為了讓輸出結果更精確,可以用-b指令,也就是使用精確匹配模式來找出。
locate -b "\ls"
這樣輸出結果就只包含ls指令的所在的路徑了。
/bin/ls
which指令的尋找範圍是環境變數PATH,並且預設只回傳第一個結果,執行速度很快。如果我們查找的是別名,which指令也會在尋找之前,對應到別名對應的真實路徑。
例如我們定義了一個名為ll的別名,查找指令如下:
which ll
結果如下:
alias ll='ls -l --color=auto' /bin/ls
如果我們要顯示全部結果,加上-a指令即可。
which -a your_command
type指令用來顯示某個指令的類型,例如別名、關鍵字、函數、內建指令、檔案等。和whereis指令一樣,type指令也只在常用的幾個安裝目錄的範圍內尋找。
顯示cd指令的類型:
type cd cd is a shell builtin
顯示某個二進位檔案的類型:
type sudo sudo is /usr/bin/sudo
顯示別名:
type ls ls is aliased to `ls --color=auto'
#在5種查找指令中,find指令是功能最強大的指令,也是執行速度最慢的指令。和其他4種指令不同,find指令是基於檔案系統的查找,一個檔案節點一個檔案節點的查找。 find指令甚至可以對尋找的結果進行後續的操作。
find指令的基本使用方法:
find [path] [option] [action]
在home目錄及其子目錄中,尋找檔案名稱為aaa的檔案:
find ~ -name 'aaa'
在整個檔案系統中,尋找修改時間24小時內的檔案:
find / -mtime 0
在nginx的網頁目錄及其子目錄中,找出所屬使用者為nginx的檔案:
find /usr/share/nginx/html/ -user nginx
在目前目錄中,找出權限為744的文件:
find -perm -0744
在目前目錄中,尋找文件名稱為aaa的文件,並顯示其詳細資訊:
find -name 'aaa' -exec ls -l {} \;
以上是Linux雲端伺服器的查找指令有哪些及怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!