Manpages

名 称

lexgrog - 解 析 man 手 册 页 的 头 部 信 息

概 述

lexgrog [-m|-c] [-dfw?V] [-E 编 码 ] 文 件 ...

描 述

lexgrog 是 传 统 的 “groff guess” 工 具 的 一 个 lex 实 现 。 它 从 命 令 行 读 取 man 手 册 源 文 件 或 预 格 式 化 的 “cat” 页 文 件 列 表 , 并 显 示 aproposwhatis 所 使 用 的 手 册 名 称 和 描 述 。 在 它 之 前 man 页 面 需 要 的 预 处 理 过 滤 器 列 表 会 传 递 给 nroff 和 /或 troff。 如 果 它 的 输 入 错 误 , lexgrog 会 打 印 “parse 失 败 ”; 这 有 助 于 外 部 程 序 检 查 man 页 面 是 否 正 确 。 如 果 lexgrog 的 某 个 输 入 文 件 是 “-”, 它 会 从 标 准 输 入 读 取 ; 如 果 输 入 文 件 是 压 缩 文 件 , 将 自 动 读 取 解 压 的 版 本 。

选 项

-d, --debug 打 印 调 试 信 息 。
-m
, --man 将 输 入 当 作 man 页 面 源 文 件 来 解 析 。 如 果 指 定 了 --man--cat, 这 将 是 默 认 值 。
-c
, --cat 将 输 入 当 作 预 格 式 化 的 man 页 面 来 解 析 (“cat 页 面 ”)。 不 能 同 时 指 定 --man--cat
-w
, --whatis 显 示 来 自 man 页 面 头 部 的 名 称 和 描 述 (aproposwhatis 就 使 用 这 些 信 息 )。 这 是 未 指 定 --whatis--filters 时 的 默 认 值 。
-f
, --filters 显 示 在 用 nrofftroff 格 式 化 之 前 对 man 页 面 预 处 理 所 需 的 过 滤 器 列 表 。
-E
编 码 , --encoding 编 码 将 页 面 编 码 设 置 为 编 码 , 而 非 自 动 推 测 的 编 码 。
-?
, --help 打 印 帮 助 消 息 并 退 出 。
--usage
打 印 简 短 的 帮 助 消 息 并 退 出 。
-V
, --version 显 示 版 本 信 息 。

退 出 状 态

0 程 序 成 功 执 行 。

1 用 法 错 误 。

2

lexgrog 无 法 解 析 一 个 或 多 个 输 入 文 件 。

示 例

$ 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 解 析

mandb(使 用 与 lexgrog 相 同 的 代 码 )解 析 每 个 手 册 页 顶 部 的 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 来 代 替 换 行 的 宏 .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 请 求 的 文 件 , 但 只 有 文 件 正 确 安 装 到 手 册 页 层 次 结 构 路 径 中 时 才 能 正 确 处 理 。

作 者

lexgrog 所 使 用 的 扫 描 man 页 面 的 代 码 的 作 者 :

Wilf. (G.Wilford [AT] ee.uk).
Fabrizio Polacco (fpolacco [AT] debian.org).
Colin Watson (cjwatson [AT] debian.org).

Colin Watson 编 写 了 命 令 行 前 端 的 当 前 实 现 , 以 及 本 man 手 册 页 。

BUGS

https://gitlab.com/man-db/man-db/-/issues
https://savannah.nongnu.org/bugs/?group=man-db