LEXGROG

Section: Manual pager utils (1)
Updated: 2019-10-23
Index Return to Main Contents
 

名前

lexgrog - man ページのヘッダ情報を解析する  

書式

lexgrog [-m|-c] [-dfw?V] [-E encoding] file ...  

説明

lexgrog は昔の "groff guess" ユーティリティを lex で実装したものである。 このプログラムは、コマンドラインから man ページソースファイルまたは 整形済みの "cat" ページのファイルのリストを読み込む。 そして、 aproposwhatis で使われる名前と要約文を表示するか、 nroff または troff もしくはその両方に渡される前に man ページに必要とされる前処理フィルタのリストを表示する。

入力のフォーマットが不正な場合、 lexgrog は "parse failed" と表示する。 これは、他のプログラムが man ページの正しさをチェックする必要がある場合に役立つ。 lexgrog の入力ファイルの 1 つが "-" の場合、標準入力を読み込む。 入力ファイルが圧縮されている場合、展開されたものが自動的に読み込まれる。  

オプション

-d, --debug
デバッグ情報を表示する。
-m, --man
入力を man ページソースファイルとして解析する。 これは、 --man--cat も指定されない場合のデフォルトである。
-c, --cat
入力を整形済みの man ページ ("cat ページ") として解析する。 --man--cat は同時に指定できない。
-w, --whatis
man ページのヘッダから名前と要約文を表示する。 これは、 aproposwhatis で使われる。 これは --whatis--filters も指定されない場合のデフォルトである。
-f, --filters
nroff または troff で整形する前に、man ページを前処理するのに必要なフィルタのリストを表示する。
-E encoding, --encoding encoding
ページについて推測された文字セットを、 encoding で上書きする。
-?, --help
ヘルプメッセージを表示して、終了する。
--usage
短い使用法のメッセージを表示して、終了する。
-V, --version
バージョン情報を表示する。
 

返り値

0
プログラムの実行に成功した。
1
使用法のエラー。
2
lexgrog が 1 つ以上の入力ファイルの解析に失敗した。
 

  $ lexgrog man.1
  man.1: "man - an interface to the system reference manuals"
  $ lexgrog -fw man.1
  man.1 (t): "man - an interface to the system reference manuals"
  $ lexgrog -c whatis.cat1
  whatis.cat1: "whatis - display manual page descriptions"
  $ lexgrog broken.1
  broken.1: parse failed
 

WHATIS の解析

(lexgrog と同じコードを使っている) mandb は、各マニュアルページにドキュメント化された特徴の 名前と要約文を見つけるために、先頭にある NAME セクションを解析する。 歴史的に使われてきたいろいろな形式に対応しているため、 パーサーはとても堅牢ではあるが、 ときどき必要な情報の抽出に失敗すること場合もある。

伝統的な man マクロセットを使う場合、正しい NAME セクションは以下のようである:

.SH NAME
foo \- program to do something

マニュアルページャーによっては、見た目通りに表示するためには、'\-' が必要になる。 mandb はより堅牢であるが、他のシステムとの互換性を保つためには、 バックスラッシュを使うのは良い考えである。

(ハイフンの) 左側には、複数個の名前をカンマで区切って置くことが出来る。 不正な形式の NAME セクションに対して、異常な動作を避けるため、空白を含む名前は無視される。 (ハイフンの) 右側のテキストは、自由形式であり、複数行に渡って書くことが出来る。 複数の特徴についての異なる要約文を、同じマニュアルページに ドキュメント化する場合、以下の形式が使用される:

.SH NAME
foo, bar \- programs to do something
.br
baz \- program to do nothing

(.PP のような新しい段落を開始するマクロが、 改行 (break) マクロ .br の代わりに使える場合もある。)

BSD 由来の mdoc マクロセットを使う場合、正しい NAME セクションは、以下のようになる:

.Sh NAME
.Nm foo
.Nd program to do something

whatis の解析が失敗するいくつかの一般的な理由がある。 マニュアルページの著者が '.SH NAME' を '.SH MYPROGRAM' に置き換えてしまい、 mandb が必要な情報を抽出するセクションを見つけられない場合がある。 また、著者が NAME セクションを書いているが、 'name \- description' ではない、自由形式で書いている場合もある。 しかし、上記のような書式も受け付けるべきである。  

関連項目

apropos(1), man(1), whatis(1), mandb(8)  

注意

lexgrog は .so リクエストを含むファイルを解析しようとするが、 ファイルがマニュアルページ階層に正しくインストールされている場合にのみ、 正しく解析することが出来る。  

作者

man ページをスキャンする lexgrog のコードは、以下の作者によって書かれた:

Wilf. (G.Wilford@ee.surrey.ac.uk).
Fabrizio Polacco (fpolacco@debian.org).
Colin Watson (cjwatson@debian.org).

Colin Watson が、現在のコマンドラインフロントエンドの実装と、 この man ページを書いた。


 

Index

名前
書式
説明
オプション
返り値
WHATIS の解析
関連項目
注意
作者

This document was created by man2html, using the manual pages.
Time: 13:41:05 GMT, December 27, 2020