Linux / コマンド / info - GNU マニュアルを読む・検索する

infoはGNUプログラムのInfo形式の説明書を端末で読むコマンドです。manが1ページを上下に読む参照文書に近いなら、infoは文書をノードという単位で分け、メニューと相互参照でつなげて本のように探索できるようにします。

GNU Coreutilsのように説明が膨大なプログラムは、Info文書に概念、オプションの相互作用や例がより詳しく整理されている場合が多いです。この記事では文書を開く方法、ノードとメニュー移動、本文・索引検索、特定文書位置への直接移動方法や文書がないときの解決方法を説明します。

infoコマンドとは?

infoはTexinfo文書システムで作られたInfoファイルを読むテキストベースの文書ビューアです。一般的にInfoファイルは/usr/share/infoのようなディレクトリにインストールされ、1つのマニュアルが複数のノードに分かれ階層構造を形成します。

Info文書には下位トピックに移動するメニュー、他のノードやマニュアルを指す相互参照(cross-reference)、トピック別索引が含まれることがあります。必要な項目を順に読むだけでなく、関連する説明をたどったり索引で用語を探すのに適しています。

基本文法と開始方法

GNU Infoの基本文法は次の通りです。角かっこは省略可能な部分を意味し、省略記号は複数の項目を指定できることを示しますので、実際のコマンドには入力しません。

info [オプション...] [マニュアル] [メニュー-または-索引-項目...]

引数なしで実行すると、システムに登録されているInfoドキュメントを集めた最上位ディレクトリメニューが開きます。

info

info自体の一般使用案内と、独立実行型GNU Infoの詳細マニュアルは次のように開くことができます。

info info
info info-stnd

特定のプログラム名を指定すると、最上位ディレクトリから関連項目を探し、該当するマニュアルやノードに移動します。

info ls
info coreutils

info lsは、別のls.infoファイルではなく、GNU Coreutilsマニュアル内のls関連ノードに接続可能です。最上位ディレクトリの項目がマニュアル内部の特定ノードを直接指すことができるためです。

Infoドキュメントの構造を理解する

初めて実行すると、一般的なウェブページやmanとは異なる用語のため、複雑に感じるかもしれません。次の4つの概念を知っていれば、ドキュメント構造を理解しやすくなります。

用語 意味
ノード(Node) Infoドキュメントを構成するページ単位です。章や節にあたる場合が多いです。
メニュー(Menu) 現在のノードの下位テーマや関連項目に移動できる一覧です。
相互参照(Xref) 現在の説明と関連する他のノードまたは他のInfoマニュアルを指すリンクです。
ディレクトリノード システムに登録されている複数のInfoマニュアルを分類して表示する最上位メニューです。

画面の上部には現在のファイルとノード名、Next、Prev、Upなどの移動先が表示されることがあります。下部のモードラインには現在のマニュアルとノード、文書内の位置などの状態が表示されます。

画面移動と文書探索に使用するキー

以下は独立実行型GNU Infoの基本キーを基準にした表です。ユーザー設定や--vi-keysオプションを使用すると、一部のキーは異なる場合があります。

キー 動作
Space 次の画面に移動し、ノードの終わりでは次のノードに続けて移動できます。
Backspace, Delete 前の画面に移動します。端末によって動作するキーは異なる場合があります。
n 現在のノードのNextノードに移動します。
p 現在のノードのPrevノードに移動します。
u 1ステップ上のUpノードに移動します。
t 現在のInfoファイルのTopノードに移動します。
d インストールされたマニュアルを集めたディレクトリノードに移動します。
l 閲覧履歴で前に見ていたノードに戻ります。
m 名前を入力して現在のノードのメニュー項目を選択します。
Tab, Shift+Tab 画面の次または前のメニュー・相互参照項目にカーソルを移動します。
Enter カーソルが置かれたメニュー項目や相互参照を開きます。
H 基本キーを簡単にまとめたヘルプウィンドウを開きます。
h Infoの使い方を説明するヘルプノードに移動します。
q Infoを終了します。

初めて使用する場合は info info-stnd を開き、H を押して基本キーを確認し、Space と Backspace で文書を読むことをおすすめします。

メニューと相互参照をたどる方法

Tab と Enter で画面の項目を選択する

メニューや相互参照が画面に表示されている場合、Tab で項目の間を移動し、Enter で選択できます。Shift+Tab は前の項目に戻ります。文書の構造をまだ知らないときに最も直感的なナビゲーション方法です。

m でメニュー名を入力する

m を押すと、画面下の入力欄にメニュー項目名を入力できます。一部だけ入力して Tab で補完可能な項目を確認できるため、長いメニューでも素早く移動できます。

メニューをたどって他の文書を読んだ後、元の位置に戻るには l を使用します。構造上、上位ノードに移動したい場合は、訪問履歴ではなく u を使用する必要があります。

文書内で目的の内容を検索する方法

本文文字列を検索する

s または / を押してから検索語を入力すると、現在の Info ファイルで文字列を検索します。既定では拡張正規表現として解釈されるため、記号を文字として探したい場合は大文字 R で正規表現検索と文字列検索を切り替えます。大文字を含まない検索語は基本的に大文字と小文字を区別せず、大文字を含むと大文字と小文字を区別します。

? は現在位置より前の内容へ向かって逆方向に検索します。入力と同時に結果を確認するインクリメンタル検索は Ctrl+s、逆方向インクリメンタル検索は Ctrl+r を使用します。

索引から項目を探す

i は現在のマニュアルの索引で入力した用語を探し、最初に一致した項目が指すノードに移動します。長いマニュアルでオプション名や概念を探すとき、本文全体検索よりも速く正確な場合があります。

I は一致する索引項目を仮想ノードにまとめて表示します。i 検索後にカンマキー(,)を押すと、次の索引の一致項目に移動できます。

インストールされているすべての Info 索引を検索する

どのマニュアルに説明があるかわからない場合は、シェルで -k または --apropos オプションを使用します。インストールされているすべての Info ファイルの索引を検索するため、ドキュメントが多いと時間がかかる場合があります。

info -k permissions
info --apropos='regular expression'

特定のマニュアルとノードに直接移動する

マニュアルまたはプログラム名で開く

マニュアル名がわかれば、直接指定できます。GNU Coreutils 全文書は次のように開きます。

info coreutils

トップレベルディレクトリにプログラム別項目が登録されている場合、プログラム名だけでマニュアル内部の関連ノードに直接移動できます。

info ls
info cp
info date

これらのコマンドは、GNU Coreutils がインストールされ Info ディレクトリ項目が正常に登録されている環境を前提としています。

ノード名を明示する

-n または --node で最初に開くノードを指定できます。スペースを含むノード名は、シェルでひとつの引数として渡されるように引用符で囲みます。

info coreutils -n 'ls invocation'

Infoの相互参照形式である(マニュアル)ノードを1つの引数として指定する方法もあります。括弧や空白がシェルで解釈されないように、全体を引用符で囲みます。

info '(coreutils)ls invocation'

ノード名はインストールされているドキュメントのバージョンによって異なる場合があります。正確な名前がわからない場合は、info lsまたはインデックス検索でまず移動するのが安全です。

コマンドの実行方法を説明するノードを探す

-O、--show-options、または--usageは、指定したプログラムのコマンドライン実行方法を説明するInvocationノードを探します。

info ls -O
info --show-options ls

この例は、Coreutils マニュアル全体の名前ではなく、そこに収録されたプログラム ls の実行方法を探します。ドキュメント構成によっては、適切な Invocation ノードを見つけられない場合があります。その場合にはinfo プログラムを開き、iのインデックス検索を使用します。

よく使うinfoオプション

以下のオプションは独立実行可能なGNU Infoを基準としています。インストールされているバージョンの全オプションはinfo --helpまたはinfo info-stndで確認してください。

オプション 説明
-k 文字列, --apropos=文字列 インストールされているすべてのInfoファイルのインデックスから文字列を検索します。
-n ノード, --node=ノード 最初に訪問するノードを指定します。
-f マニュアル, --file=マニュアル ディレクトリ項目を参照せず、特定のInfoファイルやマニュアルを開きます。
-w, --where ドキュメントを開かずに、選択されるInfoファイルのパスを出力します。
-d パス, --directory=パス Infoファイル検索パスを追加します。複数回指定することができます。
-o ファイル, --output=ファイル 対話型画面の代わりに、訪問するノードの内容をファイルに出力します。
--subnodes --outputと一緒に使用して、メニューの下位ノードを再帰的に出力します。
-O, --show-options プログラムのコマンドライン使用法を扱うノードを探します。
--vi-keys 一部のキーをviやLessに近い方式で再割り当てします。
--version インストールされている Info のバージョンを出力します。

Info ファイルの場所確認とテキスト出力

実際に選択される文書ファイルを確認する

-w は文書を開かずに Info が選択したファイルの場所を出力します。同じ名前のファイルが複数の検索パスにあるとき、どの文書を読むか確認できます。

info -w coreutils

一致するすべてのファイルパスをサポートする環境では、--all と一緒に使用できます。

info --all --where coreutils

文書をテキストファイルとしてエクスポート

-o により、対話画面の代わりにファイルに内容を記録できます。--subnodes を一緒に使用すると、メニューに接続されたサブノードを再帰的に出力します。

info --subnodes -o coreutils.txt coreutils

出力ファイルの代わりに - を指定すると、標準出力に送ることができ、他のコマンドと接続するのに便利です。

info -o - coreutils | less

全体のマニュアルは非常に大きくなる可能性があるため、ファイルサイズと必要な範囲をまず考慮してください。特定のノードだけが必要な場合は、-nを一緒に使用するのが効率的です。

独自のInfo文書と検索パスの指定

ローカルのInfoファイルを直接開く

現在のディレクトリにあるInfoファイルは、相対パスを指定して開くことができます。パスにスラッシュを含めると、通常の検索パスではなく、その場所のファイルを対象とします。

info ./project.info
info -f ./project.info

圧縮されたInfoファイルも、実装が対応する形式であれば直接読むことができます。

追加の検索ディレクトリを指定する

-dでドキュメントを検索するディレクトリを追加できます。システムパス外にインストールしたツールのドキュメントを一時的に開く際に便利です。

info -d /opt/example/share/info example

継続的な検索パスはINFOPATH環境変数の影響を受けることがあります。値を直接設定すると、基本パスの含め方が変わる可能性があるため、まず現在の状態とinfo -w マニュアルの結果を確認してください。

printf '%s\n' "$INFOPATH"
info -w info-stnd

infoとmanの違い

区分 info man
文書構造 ノード、メニュー、相互参照と索引でつながれた階層型文書 一般的に一つのページを上下に読む線形文書
適した用途 概念、章ごとの説明、長い例と関連テーマを深く読むとき 文法、オプション、ファイル、終了状態を素早く確認するとき
主な対象 GNUプログラムとTexinfo文書を提供するソフトウェア コマンド、設定ファイル、システムコール、ライブラリ関数など
探索方法 メニュー・ノード移動と本文・索引検索 ページャの画面移動と文字列検索
インストール状況 プログラムによってInfo文書がない場合があります パッケージによってマニュアルページがない場合があります

どちらか一方だけを使用しなければならないわけではありません。オプションの意味を素早く確認する場合はmanや--helpが便利であり、GNUプログラムの全体の概念とオプション間の関係を深く理解する場合はinfoが有用です。プログラムが提供する文書形式やインストール状況に応じて適したツールを選んでください。

infoがない、または文書を見つけられない場合

infoプログラムをインストールする

最小インストール環境ではinfoがない場合があります。Debian・Ubuntu系およびFedora・Rocky Linux系では、一般的にパッケージ名はinfoです。

sudo apt update
sudo apt install info
sudo dnf install info

ディストリビューションのバージョンやリポジトリの構成によりパッケージ名が異なることがあるため、インストールできない場合は該当ディストリビューションのパッケージ検索結果を確認してください。

特定プログラムのInfo文書のインストール状況を確認する

info実行ファイルがあっても、目的のマニュアルがインストールされていない場合があります。まずはトップレベルのリストと検索結果を確認します。

info
info -k 'プログラムまたはテーマ'
info -w マニュアル

プログラム本体と文書が別パッケージになっている場合は、ディストリビューションのパッケージマネージャで該当プログラムの文書パッケージを探す必要があります。

ディレクトリメニューに文書が表示されないとき

ファイルは存在するが最上位ディレクトリに登録されていない場合、パスまたはファイルを直接指定して開くことができます。

info -d /追加/文書/経路 マニュアル
info -f /全体/パス/マニュアル.info

ソフトウェアをソースから直接インストールした場合は、インストール過程でInfoディレクトリのファイルが更新されたかどうかも確認する必要があります。システム文書の登録を勝手に変更する前に、パッケージのインストール記録と該当プログラムのインストール案内を先に確認してください。

実践活用手順

  1. info プログラムで関連文書が開けるか確認します。
  2. Hで現在のキーのヘルプを確認し、Space、n、p、uで構造を探索します。
  3. 画面に表示されるメニューはTabおよびEnterまたはmで選択します。
  4. 正確な用語が分かればiで索引を検索し、一般的な表現はsまたは/で本文を検索します。
  5. どのマニュアルか分からない場合は、シェルで info -k キーワード にインストールされた全体索引を検索します。
  6. 繰り返し見る場所であれば、-n でノードを直接指定するか、-o で必要な内容を出力します。

よくある質問

info を終了するにはどうすればよいですか?

q を押すと終了します。現在のキー設定が分からない場合は、大文字の H を押してクイックヘルプを確認できます。

n を押したところ、検索結果ではなく別の文書に移動します

デフォルトのキー設定では n は検索結果ではなく、現在のノードの Next ノードに移動します。本文検索は s または / を使用し、索引検索は i を使用してください。--vi-keys を使用するとキー割り当てが異なる場合があります。

info ls と info coreutils は何が違うのですか?

info lsは最上位ディレクトリでls項目を探して関連ノードに直接移動し、info coreutilsはCoreutilsマニュアルの開始位置を開きます。インストールされたディレクトリ項目やドキュメントのバージョンによって、実際の開始ノードは異なる場合があります。

すべてのコマンドにInfoドキュメントはありますか?

いいえ。InfoはGNUプロジェクトで広く使われていますが、すべてのLinuxプログラムがInfoドキュメントを提供しているわけではありません。Infoドキュメントがない場合は、man コマンド、コマンド --help、またはプログラムの公式ドキュメントを確認してください。

Infoドキュメントはmanより常に正確ですか?

必ずしもそうではありません。プロジェクトごとに基準ドキュメントと更新方法が異なります。GNU CoreutilsのようにInfoマニュアルを詳細な基準ドキュメントとして提供するプロジェクトもありますが、他のプログラムではmanページやウェブドキュメントを優先することがあります。現在インストールされているプログラムのバージョンとプロジェクトの公式ドキュメントの案内を併せて確認することをお勧めします。

まとめ

infoはGNUプログラムの詳細なマニュアルを、ノード、メニュー、相互参照、索引で探索できるようにしてくれます。最初はinfo プログラム、H、Space、n、p、u、i、qだけ覚えても、ほとんどの文書を読むことができます。

簡単な文法とオプションは--helpやmanで素早く確認し、背景の概念や例まで必要な場合はinfoを続けて使う方式が効率的です。他の基本コマンドも見てみたい場合は、Linuxコマンド一覧と概要を参照できます。

公式文書を参照