蚊帳の中の日記

ゆるく生きてます

lpic 101 - level 1に合格したけど、実務で使えそうな知識をまとめてみる【コマンド探索編】

これで第3段。

コマンドを探したい時に、whichを使ってコマンドの絶対パスが調べたり、$PATHに含まれてるかどうか確かめたりすると思うが、他にも似たようなコマンドがあって自分の中の整理の意味でもまとめようと思う。

とあるコマンドやファイルを探したい!という時に覚えておくと便利そう。

which

指定したコマンドが格納されている絶対パスを表示する。

重要なのは、検索するディレクトリは、環境変数PATHに設定されているパスになる。つまり、環境変数PATHに設定されていないと見つけられない。とあるコマンドをインストールしたけど、パスが通ってなくてコマンドを打ってもCommand not foundになってしまうので、

export PATH="$PATH:/usr/local/bin"

した経験はあるはず。上のように$PATHに追加すれば、whichの検索対象になるというわけ。

whereis

whichと同じくコマンドが格納されているパスを表示するが、こちらは環境変数PATHを検索対象とせず、コマンドが格納されている標準的なディレクトリから検索してくれる環境変数PATH以外で探したい場合に便利。

コマンドをインストールしたはずなのにwhichで見つけられない!という時に、このコマンドで見つけられることがあったりする。*1

locate

今回、コマンド探索編というタイトルで記事を書いているので、このコマンドをこの記事で紹介するのは違う気がするけど、一応コマンド探索は出来るので紹介してみる。

コマンドに限らず、指定した検索パターンにマッチしたファイルなどもすべて表示してくれる。
ただちょっと難点があり、検索をするのにデータベースを構築する必要。そのデータベースを元にfindなどよりも高速な検索を行ってくれる。
もう一つ難点があって、そのデータベースは定期的に更新処理をしないといけないこと。まあ使う機会は殆ど無いコマンドだと思う*2

whatis

manコマンドで表示されるコマンド名と、省略された説明1行が表示される。

$ whatis ruby
erb(1)                   - Ruby Templating
irb(1)                   - Interactive Ruby Shell
ri(1)                    - Ruby API reference front end
ruby(1)                  - Interpreted object-oriented scripting language

検索対象はlocateと同じ感じでwhatisデータベースと呼ばれるデータベースファイルがあり、makewhatisまたはmandbで更新することが可能。これもデータベースの管理が面倒だし、whereisで見つけて、manで表示で事足りるので、余り使う機会はない気がしている。ただ、データベースを用意すれば検索は普通よりも早いらしい。

ちなみに、whatisman -fと同じ

いままでこれ関連はwhichしか知らなかったのだけど、whereiswhatisを知ってから、そっちも便利に使わせてもらっている。ちょっとした時使えたりする。

便利コマンド系の詳解は前回の記事含めてこれくらいかなと思う。次は、また少しシステム的な話を書こうかなと思う。

*1:ちなみにバイナリファイルやマニュアル、ソースファイルが置かれている場所をオプションをつけて調べることも可能。

*2:じゃあ、なんで紹介したんだよ!!!