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で表示で事足りるので、余り使う機会はない気がしている。ただ、データベースを用意すれば検索は普通よりも早いらしい。
ちなみに、whatis
はman -f
と同じ。
いままでこれ関連はwhich
しか知らなかったのだけど、whereis
とwhatis
を知ってから、そっちも便利に使わせてもらっている。ちょっとした時使えたりする。
便利コマンド系の詳解は前回の記事含めてこれくらいかなと思う。次は、また少しシステム的な話を書こうかなと思う。