Linux 神秘對決:which vs. whereis vs. whatis
您可能已經(jīng)多次在 Linux 上使用過 which、whereis 和 whatis 命令。這三個命令都用于查找關(guān)于其他 Linux 命令的信息。這些命令看起來相似,但它們確實有一些區(qū)別。
以下是對 Linux 上 which、whereis 和 whatis 命令的詳細比較。
which 命令
某些命令在不同的目錄中具有多個可執(zhí)行文件。當(dāng)您運行一個命令時,Shell 會在 PATH 環(huán)境變量指定的目錄中搜索其可執(zhí)行文件。
要查找 PATH 環(huán)境變量中包含的目錄,請在 Linux 終端中運行以下命令:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ echo $PATH
小貼士:您還可以手動將目錄添加到您的PATH環(huán)境變量中。
在 Linux 中,當(dāng) shell 找到第一個可執(zhí)行路徑時,它會執(zhí)行該路徑。使用 which 命令,您可以確定該可執(zhí)行文件的路徑。
這在以下情況下非常有用:您的系統(tǒng)上安裝了同一程序的兩個不同版本,或者安裝了具有相同名稱的兩個不同程序。使用 which 命令,您可以找出哪個將首先被執(zhí)行。
以下是 which 命令的語法:
which [選項] [命令]
例如,要檢查 tar 命令的實際路徑,您可以輸入:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ which tar
該命令將顯示tar命令在PATH中找到的第一個可執(zhí)行路徑,即 /usr/bin。這意味著無論何時運行 tar 命令,shell 都會執(zhí)行位于 /usr/bin 目錄中的二進制文件。
要顯示命令的所有可用可執(zhí)行路徑,請使用 which 命令加上 -a 選項:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ which -a tar
您還可以同時顯示多個命令的可執(zhí)行路徑,如下所示:
which [命令1] [命令2] [命令3]
whereis 命令
whereis 命令會顯示與指定命令相關(guān)的二進制文件、源文件和手冊頁面文件的路徑。與 which 命令不同,它不僅在 $PATH 中搜索可執(zhí)行文件,還在 $MANPATH 和其他預(yù)定義位置進行搜索。
如果沒有任何命令行選項,whereis 命令會顯示命令的二進制文件、源文件和手冊頁面文件:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ whereis tar
要僅顯示二進制文件路徑,請使用 -b 選項:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ whereis -b tar
要僅顯示源文件,請使用-s標(biāo)志:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ whereis -s tar
要僅顯示手冊頁面,請使用 -m 選項:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ whereis -m tar
whatis 命令
whatis 命令提供了給定 Linux 命令的一行描述。它從命令的 man 頁面中獲取這些信息。
例如,要查找 tar 命令的功能,請運行:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ whatis tar
您還可以同時查找多個命令的信息,例如:
┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]
└─$ whatis ls cp mkdir cat head
which、whereis 和 whatis 之間的區(qū)別是什么?
如果您想找到在 shell 中運行命令時執(zhí)行的二進制文件的路徑,請使用 which 命令。而如果您想找到命令的源文件、二進制文件和 man 頁面,請使用 whereis 命令。
whereis 命令列出所有的二進制可執(zhí)行文件,而 which 命令僅顯示在 shell 中輸入該命令時執(zhí)行的第一個可執(zhí)行文件。
which 命令在 PATH 變量中進行搜索,而 whereis 命令在標(biāo)準(zhǔn)的Linux目錄中進行搜索,包括 $PATH 和 $MANPATH。
最后,whatis 命令會從命令的 man 頁面中提取出一行簡短的描述。
查找Linux命令的信息
which、whereis 和 whatis 命令可以幫助您找到其他 Linux 命令的信息,如可執(zhí)行文件的完整路徑、二進制文件、源文件、手冊頁面以及命令的功能。
除了 whatis 命令,您還可以使用其他命令,如 apropos、man、info 和 help,以獲得關(guān)于 Linux 命令及其功能的詳細信息和更好的理解。