Linuxのコマンドの情報を調べるwhich、whereis、whatis、apropos、man
2020/06/05
Linuxのコマンドの情報を調べるコマンドの紹介
which、whereis、whatis、apropos、manコマンド
Linuxで実行するコマンドには様々なものがあります。
システムを管理するために必要なシステムコマンドや、ユーザが利用するコマンド、ユーザがインストールしたソフトウェアのコマンドなどもあります。
それらのコマンドの実行ファイルがどこにあるのか、マニュアルがどこにあるのか、また、マニュアルを検索して使い方を確認したい場合など、コマンドについての情報を集めるための下記のコマンドについて解説します。
which:コマンドのパスを表示するコマンド
whereis:コマンドのパスや、ソース、マニュアルのパスを表示するコマンド
whatis:コマンドのマニュアルを検索するコマンド(完全一致)
apropos:コマンドのマニュアルを検索するコマンド(部分一致)
man:コマンドのマニュアルを表示するコマンド
なお、記事中のコマンドの実行結果は、CentOS 7.5で行ったものになります。
(GNU bashのバージョンは 4.2.46です。)
whichコマンド
指定したコマンドのフルパスを表示するコマンドです。
次項の「whereis」コマンドとよく似ていますが、「which」はコマンドのパスを調べたいとき専用のコマンド、という感じです。
whichコマンドの基本形
基本形は以下になります。
1 |
$ which コマンド名 |
whichコマンドの使用例は以下のようになります。
1 2 3 4 5 6 7 8 |
$ which cp /usr/bin/cp $ which perl /usr/bin/perl $ which composer /usr/local/bin/composer |
上記の通り、「cp」コマンドは「/usr/bin/cp」にあり、「perl」コマンドは「/usr/bin/perl」、「composer」コマンドは「/usr/local/bin/composer」にあることが分かります。
whichコマンドの使い所としては、
Perlを使った CGIのプログラムの先頭に記述する「#!/bin/bash」の Perlのパスを調べるときなどに便利です。
なお、whichコマンドを使う際には注意する点があります。
whichコマンドは、環境変数 PATHに基づいて検索を行いますので、一般ユーザが管理者用のコマンドを検索することが出来ない場合があります。
その場合は、何も表示されないか、コマンドがないと言うメッセージが表示されますので、権限を確認してみてください。
whichコマンドのオプション
「which」コマンドには下記のオプションがあります。
オプション | 説明 |
---|---|
-a | 「which」コマンドには「-a」というオプションがあり、指定したコマンドが実行可能なすべてのパスを表示します。エイリアスがある場合は、エイリアスも表示します。 |
「-a」オプションの使用例としては以下のようになります。
1 2 3 4 5 6 7 8 |
$ which ll alias ll='ls -l --color=auto' /bin/ls $ which -a ll alias ll='ls -l --color=auto' /bin/ls /usr/bin/which: no ll in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin) |
whereisコマンド
指定したコマンドのバイナリ、ソース、マニュアルページなどコマンド関連のファイルのパスを表示するコマンドです。
前項の「which」とよく似ていますが、「whereis」の方が高機能でコマンドのパスを調べることもできますし、ソースやマニュアルの場所も調べることができます。
whereisコマンドの基本形
基本形は以下になります。
1 |
$ whereis コマンド名 |
whereisコマンドの使用例は以下のようになります。
1 2 3 4 5 6 7 8 |
$ whereis cp cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz $ whereis perl perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz $ whereis composer composer: /usr/local/bin/composer |
前項の「which」の結果と比べてみると分かりやすいのですが、コマンドのパスの表示と同時に、マニュアルがあればそのパスも記載されています。
whereisコマンドのオプション
「whereis」コマンドには下記のオプションがあります。
オプション | 説明 |
---|---|
-l | 検索対象のディレクトリの一覧を表示します。 |
-b | バイナリファイルの情報のみ表示します。 |
-m | マニュアルページの情報のみ表示します。 |
-s | ソースファイルの情報のみ表示します。 |
-B | バイナリファイルを検索するディレクトリを指定します。 |
-M | マニュアルファイルを検索するディレクトリを指定します。 |
-S | ソースファイルを検索するディレクトリを指定します。 |
-f | -B、-M、-Sオプションを指定する際に指定するディレクトリの終了を表す記号として指定します。 |
「-l」オプションの使用例としては以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 |
$ whereis -l bin: /usr/bin bin: /usr/sbin bin: /usr/lib (中略) man: /usr/share/man/man1 man: /usr/share/man/man8 man: /usr/share/man/man5 (中略) src: /usr/src/debug src: /usr/src/kernels |
「-l」オプションを付けてコマンドを実行すると、「whereis」コマンドを実行した際にデフォルトで検索対象とするパスの一覧が表示されます。
デフォルトのパスは、環境変数「PATH」「MANPATH」、「/etc/man_db.conf」ファイルの設定内容を参照します。
環境変数の扱い方については「Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説」「Linuxのbashで変数に値を追加する方法を多数紹介。+=や""を使う方法など」に記事を書いていますので、参考にしてください。
「-b」「-m」オプションの使用例としては以下のようになります。
1 2 3 4 5 6 7 8 |
$ whereis cp cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz $ whereis -b cp cp: /usr/bin/cp $ whereis -m cp cp: /usr/share/man/man1/cp.1.gz |
オプションを付けない場合は、バイナリファイルとマニュアルページのパスが表示されます。
「-b」オプションを付けるとバイナリファイルのパスのみが、「-m」オプションを付けるとマニュアルページのパスのみが表示されます。
「-B」オプションの使用例としては以下のようになります。
1 2 3 4 5 |
$ whereis -B /tmp/ /home/ -f cp cp: /usr/share/man/man1/cp.1.gz $ whereis -B /tmp/ /home/ -f -b cp cp: |
前項は、「-B」オプションを使ってディレクトリを指定していますので、バイナリファイルは指定されたディレクトリの中だけを検索します。
指定するディレクトリは、「/tmp/」のように「/」で始まる絶対パスで指定します。(「/tmp/*」の様に「*」を付けると書かれた記事もありましたが、私の環境では付けると正しく動作しませんでした。)
また、スペースを区切り文字として複数のディレクトリを指定することができます。複数のディレクトリを指定することができるため、指定するディレクトリの終了地点には「-f」オプションを指定します。(「-f」を付けないと正しい動作になりません。)
この指定の仕方は、「-B」「-M」「-S」のいずれも同じです。
また、「-B」「-M」「-S」を指定した際も「-b」「-m」「-s」のオプションも付与することができます。
そのため、1つめのコマンドでは、バイナリファイルは存在しないため、マニュアルページのパスのみが表示されています。
2つめのコマンドでは「-b」を指定していますので、バイナリファイルが存在しないため、「cp:」のみ表示されています。
whatisコマンド
指定したコマンドをマニュアルから検索するコマンドです。
「which」「whereis」は、コマンドのパスを調べるコマンドでしたが、「whatis」はマニュアルページのデータベースから該当のコマンドを検索するコマンドです。
また、次項の「apropos」コマンドも同じくマニュアルページを検索するコマンドですが、「whatis」は完全一致で検索するコマンドで、「apropos」は部分一致で検索するコマンドです。
whatisコマンドの基本形
基本形は以下になります。
1 |
$ whatis コマンド名 |
whatisコマンドの使用例は以下のようになります。
1 2 |
$ whatis cp cp (1) - copy files and directories |
「cp」コマンドについてオンラインマニュアルから情報が表示されます。
makewhatis、mandbコマンドでマニュアルのデータベースを作成
whatisコマンドで検索するオンラインマニュアルの情報は、makewhatis、mandbコマンドで作成する whatisデータベースに入っています。
そのため、新しいコマンドをインストールした場合は、makewhatis、mandbコマンドで whatisデータベースを更新しておく必要が発生します。
makewhatis、mandbコマンドについては下記に記事を書いていますので、こちらを参考にしてください。
makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新
aproposコマンド
指定したコマンドをマニュアルから検索するコマンドです。
aproposコマンドの基本形
基本形は以下になります。
1 |
$ apropos コマンド名 |
aproposコマンドの使用例は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ apropos cp rpm2cpio (8) - RPM (RPM Package Manager)パッケージから cpio アーカイブを 抽出する BN_div_recp (3ssl) - modular multiplication using reciprocal : (中略) : chcpu (8) - configure CPUs cp (1) - copy files and directories cpio (1) - copy files to and from archives cpp (1) - The C Preprocessor : (後略) |
前項にも書きましたが、「whatis」は完全一致で検索するコマンドで、「apropos」は部分一致で検索するコマンドです。
そのため、同じ「cp」をキーワードの検索を行った場合、「whatis」の場合は「cp」のみがヒットしますが、「apropos」の場合は「cp」の文字列を含むコマンドが複数ヒットします。
manコマンド
指定したコマンドのマニュアルページを表示するコマンドです。
manコマンドの基本形
基本形は以下になります。
1 |
$ man コマンド名 |
manコマンドの使用例は以下のようになります。
1 |
$ man cp |
コマンドを入力すると「cp」コマンドのマニュアルが表示されます。
表示されたマニュアルは「q」キーを入力することで終了させることができます。
オンラインマニュアルの 9区分
Linuxのオンラインマニュアルには下記の 9区分あります。
1.ユーザーコマンド
2.システムコール(カーネルの機能を使うための関数)
3.ライブラリ(C言語の関数)
4.デバイスファイル(/dev 以下にあるファイル)
5.設定ファイル
6.ゲーム
7.その他
8.システム管理コマンド(root権限で実行するコマンド)
9.Linux独自のカーネル用ドキュメント
この区分は、「man」コマンドや前出の「whatis」「apropos」を実行したときに「cp(1)」と表示される「(1)」の数字にあたります。
「cp」は「(1)」と表示されますが、これにより「ユーザーコマンド」であることが分かります。
「man -f」「man -k」でも「whatis」「apropos」と同等の検索可能
マニュアルを表示表示する「man」コマンドにもマニュアルを検索するオプションがあります。
オプション「-f」で完全一致検索、「-k」で部分一致検索となります。
「man -f」は「whatis」と同等の機能で、「man -k」は「apropos」と同等の機能になります。
(man、whatis、aproposの各コマンドでの検索は、いずれも whatisデータベースを参照します。)
使い方も同じで、それぞれ下記の様に記述します。
1 2 3 4 5 |
$ whatis cp $ man -f cp $ apropos cp $ man -k cp |
「man」コマンドについては、下記により詳しい解説記事を書いていますので、あわせて参考にしてください。
Linuxのマニュアルページ表示コマンドmanの解説
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
less、moreはページャー、ファイルの中身を表示するLinuxのコマンド
Linuxにはコマンドで実行した結果が長い場合、1画面ごとに区切って表示するコマンドが用意されている。それがページャーと呼ばれるmore、lessだ。この使い方を解説。
-
Linuxのファイル表示・結合catの逆処理のtac、revコマンドの解説
Linuxにtac、revというコマンドがある。catの逆の処理なのだが、tacは最終行から逆に表示し、revは行末の文字から逆に表示をすることを解説しつつその使い方について詳しく解説をする。
-
UNIX・Linuxの sedコマンドで特定の文字列を置換する方法
UNIX・Linuxのコマンドで特定の文字列を置換する sedコマンドの使い方と、perlコマンドを使っての方法を解説しています。
-
makewhatis、mandbコマンドでLinuxのオンラインマニュアル索引情報を更新
Linuxコマンドのオンラインマニュアルを検索するwhatis、aproposなどのコマンドはwhatisデータベースを対象に検索する。このデータベースを更新するmandb、makewhatisコマンドを解説。
-
Linuxのbashで変数に値を追加する方法を多数紹介。+=や””を使う方法など
Linuxのbashで変数に値を代入する方法を解説。bashの変数の処理は柔軟で様々な方法を採れる。デリミタなしで値を追加する方法などを解説。
-
Linuxのbashのコマンドの履歴をhistoryで確認し!、↓、↑で実行する
Linuxで実行したコマンドの履歴を確認するコマンド「history」。「history」の使い方、設定の変更、設定ファイルの設置場所について解説。「!番号」「!文字列」「!?文字列」など。
-
Linuxの wcコマンドでファイルの行数、単語数、バイト数、文字数をカウントする
Linuxの行数、単語数、文字数、バイト数をカウントする「wc」コマンドの使い方の解説。find、lsと組み合わせてファイル数のカウント方法などを解説。
-
Linuxで使用される主な環境変数・PATH、HOME、PS1・printenv、set、declare
Linuxに設定されている主な環境変数の解説。PWD、HOSTNAME、USER、LANG、HOME、LOGNAME、PS1、PS2、HISTSIZE、HISTFILE、HISTFILESIZE、TERMなどがある。
-
Linuxの環境変数でパスの設定をする方法とシェル変数の扱い方を解説
Linuxでコマンドを設置するパスの設定情報である環境変数「PATH」の確認方法と環境変数「PATH」に新しいパスを追加する方法の解説。Linuxのシェルでの変数の扱い方についての解説も。
-
Linuxのsplitコマンドは指定したサイズにファイルを分割する
Linuxのsplitコマンドはファイルを分割する機能を有する。分割するサイズ、行数、ファイル数を指定するオプションや、分割後のファイルの接尾辞を指定するオプションなどがある。