Linux whatisコマンド徹底解説:マニュアルの要約を瞬時に表示する秘訣

この記事から得られる知識

  • whatisコマンドの基本的な使い方と考え方を理解できる。
  • コマンドがどのような仕組みで動作しているか(whatisデータベース)を学べる。
  • 類似コマンドであるaproposとの明確な違いと使い分けがわかる。
  • 便利なオプションを活用した、より高度な検索テクニックを習得できる。
  • 「情報が見つからない」といった一般的な問題のトラブルシューティング方法がわかる。

1. イントロダクション:whatisコマンドとは?

Linuxシステムを使っていると、数多くのコマンドに遭遇します。時には「このコマンド、一体何だっけ?」と目的を忘れてしまうこともあるでしょう。そんな時、分厚いマニュアルページ(man page)を最初から最後まで読むのは大変です。

ここで活躍するのがwhatisコマンドです。whatisは、指定したコマンドが何をするものなのか、その一行説明(one-line manual page description)を表示してくれる非常に便利なツールです。名前の通り、「それは何?」という問いに簡潔に答えてくれます。

この記事では、whatisコマンドの基本的な使い方から、その裏側にある仕組み、さらには応用的なテクニックまで、徹底的に解説していきます。このコマンドをマスターすれば、あなたのLinux上での作業効率が格段に向上することでしょう。

2. 基本的な使い方

whatisコマンドの使い方は非常に直感的です。ターミナルで以下のように入力するだけです。

whatis [調べたいコマンド名]

例えば、ディレクトリ内のファイル一覧を表示するlsコマンドについて調べてみましょう。

$ whatis ls
ls (1) - list directory contents

出力結果は、ls (1)list directory contentsという2つの部分から構成されています。

  • ls (1): lsはコマンド名、括弧内の数字(1)は、そのコマンドがマニュアルのどのセクションに属しているかを示しています。セクション1は一般的にユーザーが実行可能なコマンドを指します。
  • list directory contents: これがlsコマンドの機能を示す一行説明です。「ディレクトリの内容をリスト表示する」という意味ですね。

複数のコマンドを同時に調べることも可能です。スペースで区切ってコマンド名を並べます。

$ whatis cp mv rm
cp (1) - copy files and directories
mv (1) - move (rename) files
rm (1) - remove files or directories

このように、whatisはコマンドの概要を素早く把握するための第一歩として非常に有効です。


3. whatisコマンドの仕組み:whatisデータベース

whatisコマンドがこれほど高速に説明を表示できるのはなぜでしょうか。それは、実行のたびに全てのマニュアルページを検索しているわけではないからです。

実は、システム内にはwhatisデータベースと呼ばれる、コマンド名とその一行説明をまとめた専用のデータベースファイルが存在します。whatisコマンドは、このデータベースを検索して結果を表示しているのです。このデータベースは、各マニュアルページのNAMEセクションから情報を抽出して構築されています。

データベースの更新:mandbコマンド

このwhatisデータベースは、システムに新しいソフトウェアをインストールしたり、マニュアルページが更新されたりした際に、自動で更新されるとは限りません。そのため、時々手動でデータベースを最新の状態に保つ必要があります。

データベースの更新にはmandbコマンドを使用します。このコマンドは通常、管理者権限(rootまたはsudo)で実行する必要があります。

sudo mandb

注意: もしwhatisコマンドを実行して「…: nothing appropriate.」のようなメッセージが表示された場合、それはデータベース内に該当する情報がないか、データベース自体が古い、あるいは存在しないことを意味します。そのような場合は、まずsudo mandbを実行してデータベースを再構築してみてください。

mandbコマンドは、システム内のすべてのマニュアルページをスキャンし、インデックスデータベース(whatisデータベースを含む)を更新します。システムの規模によっては、完了までに数分かかることがあります。

古いシステムではmakewhatisというコマンドが使われていましたが、現在の多くのLinuxディストリビューションではman-dbパッケージに含まれるmandbに取って代わられています。

4. `apropos`コマンドとの違い

whatisと非常によく似たコマンドにaproposがあります。どちらもマニュアルページのデータベースを検索しますが、その検索方法に決定的な違いがあります。

  • whatis: キーワードと完全に一致するコマンド名(ページ名)を検索します。
  • apropos: キーワードを部分文字列として含む、または正規表現として解釈し、コマンド名やその説明文を検索します。

例えば、「zip」というキーワードで検索してみましょう。

$ whatis zip
zip (1) - package and compress (archive) files

whatisは`zip`という名前のコマンドだけを表示しました。一方、aproposで検索するとどうなるでしょうか。

$ apropos zip
bunzip2 (1) - a block-sorting file compressor, v1.0.6
bzip2 (1) - a block-sorting file compressor, v1.0.6
funzip (1) - filter for extracting from a ZIP archive in a pipe
gpg-zip (1) - encrypt or sign files into a GnuPG-zipped archive
gunzip (1) - compress or expand files
gzip (1) - compress or expand files
unzip (1) - list, test and extract compressed files in a ZIP archive
zip (1) - package and compress (archive) files
zipcloak (1) - cloak entries in a zipfile
zipinfo (1) - list detailed information about a ZIP archive
zipnote (1) - write the comments in a zipfile to stdout, edit comments
zipsplit (1) - split a zipfile into smaller zipfiles

aproposは「zip」という文字列を名前に含む、あるいは説明に含む可能性のある関連コマンドを大量にリストアップしてくれました。「何かを圧縮したいけど、どのコマンドを使えばいいかわからない」といった場合に非常に役立ちます。

コマンド検索対象一致条件主な用途
whatis keywordコマンド名(ページ名)完全一致特定のコマンドの目的を素早く確認したい時
apropos keywordコマンド名および説明文部分一致 (正規表現も可)ある機能を持つコマンドを探したいが、名前がわからない時

ちなみに、man -fwhatisと、man -kaproposとそれぞれ同等の機能を持っています。


5. 主要なオプション解説

whatisコマンドは、オプションを指定することで、より柔軟な検索が可能になります。ここでは主要なオプションを紹介します。

オプション長い形式説明
-d--debugデバッグ情報を表示します。データベースの検索パスなどを確認するのに役立ちます。
-v--verboseより詳細な警告メッセージを表示します。
-r--regexキーワードを正規表現として解釈します。これにより、aproposのように柔軟なパターンマッチングが可能になります。
-w--wildcardキーワード内でワイルドカード(*?など)を使用できるようにします。
-l--long説明文が長くても、ターミナルの幅で切り捨てずに全文を表示します。
-s list--sections=list検索対象を特定のマニュアルセクションに限定します。セクションはカンマまたはコロンで区切って複数指定できます。
-M path--manpath=pathデフォルト以外のマニュアルページのパスを指定します。
-C file--config-file=fileデフォルト以外の設定ファイルを使用します。

オプション活用例

ワイルドカードを使った検索 (-w)

printで始まるコマンドを検索したい場合、ワイルドカードが便利です。

$ whatis -w 'print*'
print (3) -
print.conv (5) - printer configuration file
printcap (5) - printer capability data base
printer (7) - spooler daemon interface
printf (1) - format and print data
printf (3) - formatted output conversion

ワイルドカード文字がシェルによって展開されてしまうのを防ぐため、キーワードをシングルクォート' 'で囲むことが重要です。

正規表現を使った検索 (-r)

正規表現を使えばさらに複雑な検索が可能です。例えば、名前に `zip` または `gzip` を含むコマンドを検索できます。

$ whatis -r '^(gun)?zip'
gunzip (1) - compress or expand files
zip (1) - package and compress (archive) files

セクションを指定した検索 (-s)

Linuxには、同じ名前でも機能が異なるコマンドやライブラリ関数が存在することがあります。例えばprintfは、ユーザーコマンド(セクション1)とC言語のライブラリ関数(セクション3)の両方に存在します。

セクションを指定しない場合:

$ whatis printf
printf (1) - format and print data
printf (3) - formatted output conversion

セクション1(ユーザーコマンド)のみを検索したい場合:

$ whatis -s 1 printf
printf (1) - format and print data

このように、-sオプションは、特定の種類の情報を探している場合にノイズを減らし、目的の情報に素早くたどり着くために非常に有効です。

6. マニュアルセクションについて

whatisの出力を正しく理解するためには、マニュアルセクションの概念を知っておくことが重要です。Linuxのマニュアルは、内容に応じていくつかのセクションに分類されています。

セクション内容
1実行可能なプログラムまたはシェルコマンド
2システムコール(カーネルが提供する関数)
3ライブラリコール(プログラムライブラリ内の関数)
4特殊ファイル(通常は /dev にある)
5ファイルフォーマットと規約(例: /etc/passwd の形式)
6ゲーム
7その他(マクロパッケージや規約など)
8システム管理コマンド(通常はrootのみが実行)
9カーネルルーチン [非標準]

例えば、ls (1)はセクション1のユーザーコマンドであり、reboot (8)はセクション8のシステム管理コマンドです。このセクション番号を意識することで、コマンドの性質をより深く理解できます。


7. トラブルシューティング

whatisコマンドを使用していると、期待通りの結果が得られないことがあります。ここでは、よくある問題とその解決策を紹介します。

問題: `bash: whatis: command not found`

原因: whatisコマンドを含むパッケージがインストールされていません。
解決策: man-dbパッケージ(またはディストリビューションによってはmanパッケージ)をインストールしてください。
# Debian/Ubuntu系
sudo apt-get update && sudo apt-get install man-db
# Red Hat/CentOS/Fedora系
sudo yum install man-db

問題: `ls: nothing appropriate.`

原因: このメッセージは、whatisデータベース内に指定されたキーワードの情報が見つからなかったことを示します。原因はいくつか考えられます。
  • whatisデータベースがまだ作成されていない。
  • データベースが古く、最近インストールしたコマンドの情報が含まれていない。
  • 単純に、そのキーワードに一致するマニュアルページが存在しない。
解決策: まずはデータベースを再構築してみましょう。ほとんどの場合、これで解決します。
sudo mandb
それでも解決しない場合は、キーワードのスペルが正しいか、そのコマンドが本当にシステムにインストールされているかを確認してください。

まとめ

whatisコマンドは、一見地味ながらも、Linuxのコマンドラインを扱う上で非常に強力な味方です。その主な利点を以下にまとめます。

  • 迅速性: コマンドの目的を一行で瞬時に確認できる。
  • 正確性: マニュアルページのNAMEセクションに基づいた信頼性の高い情報が得られる。
  • 探索性: aproposと組み合わせることで、未知のコマンドを探す手助けとなる。

manコマンドで詳細なドキュメントを読む前の下調べとして、あるいは単にコマンドの機能を再確認したい時に、whatisコマンドは最高のツールです。今回紹介した仕組みやオプション、トラブルシューティング方法を理解し、ぜひ日々の作業に取り入れてみてください。コマンドライン操作の効率と快適さが、一段と向上するはずです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です