マニュアルページウィンドウで使用できるコマンドはどこに文書化されていますか?これらのコマンドはシステムに依存していますか?


9

Linuxを何年も使用していて、manコマンドを適切に使用する方法がわからないことに突然気付きました。qmanページを終了したり、/検索したりするためにタイプ入力できることはよく知られています。しかし、これらがどこに文書化されているのかはわかりません。私は試しましたがman man man -a man info man、運がありませんでした。

この情報を探すために適切な位置を教えてください。たとえ情報が正しく、man man見落としてしまったとしても、問題はありません。お知らせください。

これらのコマンドは、OSやLinuxのディストリビューションによって異なりますか?


manページが表示されただけではありませんlessか?(少なくとも私のディストリビューションにあり、コマンドのh概要を示していlessます)
Rastapopoulos

@Rastapopoulos マンページが表示されただけではないlessですか? いいえ 。これは標準のユーティリティではないためlessです。
Andrew Henle

readlink -f /usr/bin/pagerまたはreadlink -f $(which pager)を使用して、使用しているポケットベル/bin/lessよりも(デフォルトで)man使用しているポケットベルを確認できると思います。直接機能する可能性があります(man pager
すべき

2
moreまたはを使用してマニュアルページを読んだ場合は、ヘルプlessを入力できhます。(または、そのまま使用できますemacs...)
Alex Vong

1
あなたが入力した場合?hページャプロンプトで、それはあなたのコマンドのリストを与える必要があります。
Barmar

回答:


11

これは確かにのマニュアルページmanの「フォーマットされた出力の制御」の小見出しの下にあり、後で「環境」セクションで適切な方法で繰り返されます。

デフォルトでは、manはを使用しpager -sます。
マニュアルページには、環境変数やコマンドラインオプション(の階層がある方法について説明しPAGERMANPAGER、および--pagerデフォルトを上書きするには)。

これは、Debian Linuxなどのシステムで読み取る方法です。対照的に、Oracle Linuxなどのシステムでは、man-dbパッケージは異なるデフォルトでビルドされていますが、それは同じ場所のマニュアルページにそのまま反映されています。

デフォルトでは、manはを使用しless -sます。

man-dbコンパイル時に自動検出し、へパッケージを試み、デフォルトのページャコマンドにでビルド、およびそのマニュアルページ内の文書へのアウトlessmorepager

Debian Linuxなどのシステムでは、pagerコマンドは「代替」システムの一部であり、いくつかの実際のコマンドの1つにマップできます。

jdebp%update-alternatives --listポケットベル
/ bin / less
/ bin / more
/ usr / bin / pg
/ usr / bin / w3m
jdebp%

そのため、どの代替策が選択されたかに応じて、キーボードからそれらを駆動する方法についてはそれぞれのマニュアルページを参照してください。便利なことに、Debian代替システムは、選択されたコマンドと同期してマニュアルページを維持するため、このマニュアルページを読むのは非常に簡単です。

マニュアルポケットベル


5

男はポケットベルを使用してコンテンツを表示します。

正確な詳細は、man使用しているバージョンによって異なります。

多くのシステムで使用されているバージョンの場合:

  • オプション-p pagerを指定すると、そのページャーが使用されます。
  • それ以外の場合、環境変数MANPAGERが設定されていればそれが使用されます。
  • それ以外の場合PAGERは、設定されていれば使用されます。
  • それ以外の場合、デフォルトは /usr/bin/less

マニュアルページがHTML形式の場合、/のBROWSER代わりに使用されますMANPAGERPAGER

Debianはman-dbデフォルトの異なるものを使用しています。

man man詳細を読む


お返事ありがとうございます。答えはどのようにman機能するかを説明していますが、この動作が文書化されている適切な場所を私に示すようにお願いできますか。ありがとうございました。
Weijun Zhou

私のman man出力(ここでも、manバージョン:2.6.3)には、「デフォルトではless -sが使用される」と記載されているので、これはバージョンとシステムに依存すると思いますか?
Weijun Zhou

1
これは、標準のUnix哲学の単なる例です。テキストストリームを操作し、正確に1つのことを実行し、うまく実行する小さくて単純なコマンドです。マニュアルの書式設定とページ付けは2つのことなので、2つの異なるツールで実行されます。このようにして、ページ付けツールは、マニュアルページの表示だけでなく、他のタスクにも再利用できます。
イェルクWミッターク

2

@Rastapopoulosのおかげで、私はに関連する行を見つけるlessにはman man(旧Linuxマシン上のmanバージョン:1.6F)で環境の状態というセクション、

BROWSER HTMLマニュアルページの表示に使用するブラウザの名前。設定されていない場合は、/usr/bin/lessが使用されます。

ただし、新しいボックス(manバージョン:2.6.3)では、この行は

ブラウザー $ BROWSERが設定されている場合、その値はコロンで区切られたコマンドのリストであり、各コマンドはman --htmlのWebブラウザーの起動を試行するために使用されます。各コマンドで、%sはファイルに置き換えられますか?groffからのHTML出力を含む名前、%%は単一のパーセント記号(%)に置き換えられ、%cはコロン(:)に置き換えられます。

これらの情報に基づいてless、デフォルトでフォーマットされていると思います(少なくとも最初のケースでは)。ただし、これが当てはまる場合でも、私にはわかりにくい方法で文書化されています(またはmanコマンドを間違った方法で学習しました)。


2

さまざまなオペレーティングシステムの一般的な質問に完全に答える実際の方法manはありません。実装は実際には完全に指定されていないためです。

Linux固有ではないPOSIX標準の回答は、POSIX manドキュメントにあります

名前

man - display system documentation

あらすじ

man [-k] name...

...

環境変数

次の環境変数は、manの実行に影響します。

ラング

未設定またはnullの国際化変数のデフォルト値を指定します。(ロケールカテゴリの値を決定するために使用される国際化変数の優先順位については、XBD国際化変数を参照してください。)

LC_ALL

空でない文字列値に設定した場合、他のすべての国際化変数の値を上書きします。

LC_CTYPE

テキストデータのバイトシーケンスを文字として解釈するためのロケールを決定します(たとえば、引数とサマリーデータベースのマルチバイト文字ではなくシングルバイト)。LC_CTYPEの値は、名前オペランドについて書き込まれる情報の形式に影響を与える必要はありません。

LC_MESSAGES

標準エラーに書き込まれる診断メッセージと標準出力に書き込まれる情報メッセージの形式と内容に影響を与えるために使用するロケールを決定します。

NLSPATH

LC_MESSAGESを処理するためのメッセージカタログの場所を決定します。

ページャ

端末に出力を書き込むための出力フィルタリングコマンドを決定します。コマンドのcommand_stringオペランドとして受け入れられる文字列はすべて 有効です。標準出力が端末デバイスの場合、リファレンスページの出力はコマンドを介してパイプ処理されます。PAGER変数がヌルまたは設定されていない場合、コマンドは、システムドキュメントに記載されている、または別のページ編集ユーティリティのいずれかです。sh-cmore

man十分に指定されていない理由を説明しているRATIONALEセクションに注意してください。

根拠

manユーティリティは、指定されたように最小限の有用性しかないことが認識されています。標準の開発者の意見は、人が提供する必要がある情報の量についてどの程度かについては大きく分かれました。ただし、ドキュメントにアクセスするためのポータブルな方法を提供すると、ユーザーの移植性が向上すると考えました。より完全な仕様に対する議論は次のとおりです。

  • 過剰なディスク容量がないシステムでは、大量のドキュメントは必要ありません。

  • 現在の手動システムは、ユーザーの移植性を大幅に支援する方法で情報を提示していません。

  • 「より良いヘルプシステム」は現在、ベンダーがPOSIX実装に付加価値を付けることができると感じている領域です。

-fオプションが検討されましたが、実装の違いにより、このボリュームはPOSIX.1-2008のこのボリュームには含まれていませんでした。

ユーティリティに表示する必要があるものについてより具体的に説明が変更されました。標準の開発者は、各オプションとオペランドの機能の簡単な説明を提供せずに、あらすじのみの表示を許可するには不十分であると考えました。

データベースに含まれる「目的」エントリは、各ユーティリティのPOSIX.1-2008のこのボリュームのセクションタイトル(数値のプレフィックスを除く)に似ています。これらのタイトルは、この目的のために歴史的なシステムで使用されているタイトルに似ています。

デフォルトのページネーターに関する根拠については、mailxを参照してください。

LC_CTYPEの説明に警告が追加されました。実装が各システムでサポートされるすべてのロケールのリファレンスページを提供する必要がないためです。LC_CTYPEを変更しても、リファレンスページが別の言語に翻訳されるとは限りません。これは、POSIX.1-2008-locale固有のメッセージのLC_MESSAGESの現在の状態に相当し、まだ要件ではありません。

歴史的なMANPATH変数はPOSIXに含まれていません。これは、リファレンスページファイルの命名規則を指定したり、ファイルであることを強制したりすることはないためです。一部の実装では、真のデータベース、ハイパーテキストファイル、または実行可能ファイル内の固定文字列でさえあります。標準の開発者は、リファレンスページの移植性は作業範囲外であると考えていました。ただし、MANPATHは多くの歴史的なシステムに実装されており、システム管理者がさまざまなカテゴリ(ユーティリティ、関数、ファイル形式など)からリファレンスページの検索パターンを調整するために使用できることをユーザーは認識しておく必要があります。システムのリファレンスページの場所と規則を示します。

...

mailxページからのページ付けの根拠の議論:

PAGERがnullまたは設定されていない場合に選択されるページネーターは、デフォルトでpgを使用するSystem Vの歴史的慣行を可能にするために部分的に指定されていません。catがページ編集者であることを宣言するなどの方法でページ編集機能をバイパスすると、この説明の意図した意味が満たされなくなります。ただし、すべてのシステムで自分の好みのページネーターを取得するには、「ポータブルユーザー」が明示的にPAGERを設定する必要があります。ほとんどの履歴ページャーはユーザー入力の共通のテーマに従っていますが、エディターは劇的に異なるため、ページ編集者の選択はVISUALエディターの選択(viにする必要がある)とは異なり、部分的に指定されていません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.