コマンドの実行ファイルだけでなくマニュアルの場所も知りたい
whichコマンドはPATH上の実行ファイルの場所しか調べられない。実行ファイルに加えて、ソースコードやマニュアルページの場所もまとめて知りたい場合はwhereisコマンドを使う。
whereis でバイナリ・ソース・マニュアルをまとめて検索する
whereisにコマンド名を渡すと、バイナリ・ソースコード・マニュアルページの場所を一度に検索して表示する。
$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
lsの実行ファイルとマニュアルページの場所が表示されている。この環境にはソースコードが存在しないため、ソースの場所は表示されていない。
-b でバイナリのみを検索する
-bオプションを使用すると、バイナリの場所のみを検索する。
$ whereis -b ls
ls: /usr/bin/ls
-m でマニュアルページのみを検索する
-mオプションを使用すると、マニュアルページの場所のみを検索する。
$ whereis -m ls
ls: /usr/share/man/man1/ls.1.gz
-s でソースコードのみを検索する
-sオプションを使用すると、ソースコードの場所のみを検索する。多くのディストリビューションではソースコードが標準でインストールされていないため、該当なしになることが多い。
$ whereis -s ls
ls:
該当するコマンドが存在しない場合
存在しないコマンド名を指定した場合は、コマンド名の後ろに何も表示されない。
$ whereis thiscommanddoesnotexist
thiscommanddoesnotexist:
whichとは異なりエラーメッセージを出さないため、シェルスクリプトで存在確認に使う場合は出力内容をパースする必要がある。
which との違い
whichはPATH上の実行ファイルの場所しか調べられないのに対し、whereisは標準的な場所にあるバイナリ・ソースコード・マニュアルページをまとめて検索できる。
$ which ls
/usr/bin/ls
実行ファイルの場所だけを素早く確認したい場合はwhich、マニュアルページやソースコードの場所も含めて調べたい場合はwhereisを使うとよい。
\第一線のプログラマーの行動原理を学べる!/
