whereis コマンドの実行ファイル、マニュアル、ソースの場所を探す
whereis [オプション] 名前...試してみる
whereis ls実行ファイルとマニュアルの場所をまとめて表示します。
whereis -b ls-b で、実行ファイルだけを表示します。
whereis -m ls-m で、マニュアルだけを表示します。
whereis bash grep複数の名前を一度に調べます。
whereis nosuchcommand見つからなくても、「名前:」だけが表示されて終了コードは0です。
whereis -b -B /usr/bin -f ls-B で探す場所を指定します。-f はその場所指定の終わりを示します。
主なオプション
-b | 実行ファイル(バイナリ)だけを探す |
|---|---|
-m | マニュアルだけを探す |
-s | ソースだけを探す |
-B ディレクトリ... | 実行ファイルを探す場所を指定する(-f で終わる) |
-M ディレクトリ... | マニュアルを探す場所を指定する(-f で終わる) |
解説
探す場所
whereis は、PATH ではなく、決まった標準のディレクトリ(/bin、/usr/bin、/usr/share/man など)から探します。そのため、PATH に入っていない場所の実行ファイルも、標準の場所にあれば見つかります。
which との違い
which は PATH の中で最初に見つかった実行ファイルだけを表示しますが、whereis は実行ファイルに加えて、マニュアルとソースファイルの場所も表示します。たとえば whereis ls では、/usr/bin/ls と /usr/share/man/man1/ls.1.gz が並びます。
見つからないとき
見つからなくても、エラーにはなりません。nosuchcommand: のように、名前の後ろに何も付かない行が表示されます。終了コードも 0 なので、存在確認には which や type のほうが向いています。
探す対象を絞る
標準では3種類をすべて探します。-b(実行ファイル)、-m(マニュアル)、-s(ソース)で絞れます。
試験での注意
which は PATH、whereis は標準の場所、find はディレクトリの下をすべて、と探し方が違うことを区別しましょう。locate はデータベースを使う、さらに別の方法です。