Linux操作命令(四)
- ?which
- whereis
- locate
1.which
which命令的作用是,在PATH變量指定的路徑中搜索可執行文件的所在唔知。它一般用來確認系統中是否安裝了指定的軟件。
【命令格式】:which 可執行文件名稱 【常用參數】: 【常用范例】: 1.確認是否安裝了gcc which gcc?
2.查看cd命令的位置路徑
which cd?
從上面的顯示信息可以看到在實驗樓的系統中 cd 是一個 shell 函數。
再來在我本地 linux 系統上執行 which cd 命令,顯示的結果如下:
?
顯示在 PATH 變量指定的路徑下沒有 cd 命令。為什么顯示沒有呢?這是因為 cd 是 shell 內建命令,而 which 默認是找 PATH 內所指定的目錄,內建命令不在其指定的目錄中,所以當然一定找不到。
那么就有個問題,為什么實驗樓環境中 cd 是一個 shell 函數,而其他 linux 環境中 cd 是內建命令呢?這跟所使用的 bash 有關。
?
??
?
echo $SHELL 命令查看當前使用的 shell。
補充知識
到底什么是命令?
命令可以是下面四種形式之一:
是一個可執行程序,就像我們所看到的位于目錄/usr/bin 中的文件一樣。 屬于這一類的程序,可以編譯成二進制文件,諸如用 C 和 C++語言寫成的程序, 也可以是由腳本語言寫成的程序,比如說 shell,perl,python,ruby,等等。
是一個內建于 shell 自身的命令。bash 支持若干命令,內部叫做 shell 內部命令 (builtins)。例如,上面我本地環境中的 cd 命令,就是一個 shell 內部命令。
是一個 shell 函數。這些是小規模的 shell 腳本,它們混合到環境變量中。 比如上面講到的 cd 命令,在實驗樓環境中就是一個 shell 函數。
是一個命令別名。我們可以定義自己的命令,建立在其它命令之上。
3.whereis
whereis命令主要用于定位可執行文件、源代碼文件、幫助文件在文件系統中的位置。whereis命令還具有搜索源代碼、指定備用搜索路徑和搜索不尋常項的能力。
?
whereis命令查找速度非常快,因為它根本不是在磁盤中漫無目的亂找。而是在一個數據庫中(var/lib/mlocatr)查詢。這個數據庫是Linux系統自動創建的,包含有本地所有文件的信息,并且每天通過自動執行updatedb命令更新一次。也正是因為這個數據庫要每天才更新一次,就會使得whereis命令的搜索結果有時候會不準確,比如剛剛添加的文件可能搜不到。
?
【命令格式】:whereis [選項] 文件 【常用參數】: -b:定位可執行文件-m:定位幫助文件-s:定位源代碼文件-u:默認搜索路徑下除可執行文件、源代碼文件、幫助文件以外的其他文件-B:指定搜索可執行文件的路徑-M;指定搜索幫助文件的路徑-S:指定搜索源代碼文件的路徑?
【常用范例】: 1.搜索gcc可執行文件的路徑 whereis -b gcc2.搜索gcc源代碼的路徑
whereis -s gcc?
?
4.locate
locate和whereis類似。且它們使用的是相同的數據庫。但whereis命令只能搜索可執行文件、聯機幫助文件、源代碼文件,如果要獲得更全面的搜索結果,可以使用locate命令。
locate命令使用了十分復雜的匹配語法,可以使特殊字元(如'*'和'?')來指定需要查找的樣本。
【命令格式】:locate [選項] [搜索字符串] 【常用參數】: -q:安靜模式,不會顯示任何錯誤訊息 -n:至多顯示n個輸出 -r:使用正規表達式做尋找的條件 -V:顯示版本訊息?
【常用范例】: 1.搜索etc目錄下所有以sh開頭的文件 locate /etc/sh注意在實驗樓環境中一開始執行這個命令會報錯:locate 無法執行?stat() ‘/var/lib/mlocate/mlocate.db’:沒有那個文件或目錄。
解決辦法是執行sudo updatedb命令。
?
2.搜索etc目錄下文件名包含lou的文件
locate /etc/*lou*?
轉載于:https://www.cnblogs.com/Roni-i/p/10140968.html
總結
以上是生活随笔為你收集整理的Linux操作命令(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为链路汇聚命令(静态)
- 下一篇: 洛谷P4382 劈配