man page

来自 ArchWiki

man page—"manual pages" 的缩写 — 是几乎所有类 UNIX 操作系统(包括 Arch Linux)上可用的文档形式。用于显示它们的命令是 man(1)

尽管 man page 的范围很广,但它们被设计为独立的文档,因此在讨论相关主题时,仅限于参考其他 man page。这与支持超链接的 Info 文档形成鲜明对比,Info 文档是 GNU 试图取代传统 man page 格式的尝试。

安装

man-db 在 Arch Linux 上实现了 man,而 lessman 默认使用的分页器。mandoc 也可以使用。

man-pages 提供了 Linux 和 POSIX.1 的 man page [1]

一些本地化的 man page 也可用

你也可以在 官方仓库AUR 上搜索所有可用的本地化 man page。

访问 man page

要阅读 man page,只需输入

$ man page_name

手册分为几个 section。每个 section 都有一个介绍,例如 intro(1)intro(2) 等等。有关完整列表,请参阅 man-pages(7) § Sections of the manual pages

Man page 通常以其名称加上括号中的 section 编号来引用。通常有多个同名的 man page,例如 man(1)man(7)。在这种情况下,请为 man 提供 section 编号,后跟 man page 的名称,例如

$ man 5 passwd

阅读关于 /etc/passwd 的 man page,而不是 passwd 实用程序的 man page。

或者等效地,man page 后跟 section 编号,用句点分隔

$ man passwd.5

搜索手册

当不知道页面的确切名称时,可以使用以下任何等效命令搜索 man page

$ man -k expression
$ man --apropos expression
$ apropos expression

expression 默认被解释为正则表达式。

要在整个页面文本中搜索关键字,请改用 -K 选项。

注意: 搜索功能由专用缓存提供。默认情况下,该缓存的维护由 man-db.service 处理,该服务由 man-db.timer 定期触发。如果您每次搜索都收到“nothing appropriate”消息,请尝试以 root 身份运行 mandb 手动重新生成缓存。

可以使用 whatis 命令显示 man page 的单行描述。例如,要简要描述关于 ls 的 man page 部分,请输入

$ whatis ls
ls (1p)              - list directory contents
ls (1)               - list directory contents

页面宽度

man page 的宽度由 MANWIDTH 环境变量控制。

如果终端中的列数太小(例如,窗口宽度较窄),则换行符将不正确。这可能会严重影响阅读。您可以通过在 man 调用时设置 MANWIDTH 来解决此问题。对于 Bash,这将是

~/.bashrc
man() {
    local width=$(tput cols)
    [ $width -gt $MANWIDTH ] && width=$MANWIDTH
    env MANWIDTH=$width \
    man "$@"
}

阅读本地 man page

您可以使用一些应用程序来查看 man page

  • Emacs — 这种可扩展且自文档化的编辑器也可以通过内置的 M-x man 命令用于阅读 man page。
https://gnu.ac.cn/software/emacs/ || emacs
  • GNOME HelpGNOME 的帮助查看器。是 gnome 的一部分。它可以显示 man page,通过 yelp man:<name> 或来自现有窗口的未文档化的 Ctrl+L 快捷键。
https://apps.gnome.org/Yelp/ || yelp
  • KHelpCenter — 用于显示 KDE 应用程序文档的应用程序。是 kde-system 的一部分。Man page 位于UNIX manual pages 中,或者通过运行 khelpcenter man:<name>
https://apps.kde.org/khelpcenter/ || khelpcenter
  • Konqueror — KDE 文件管理器和 Web 浏览器。它可以通过 man:<name> 显示 man page。
https://konqueror.org/ || konqueror
  • neovim — 该编辑器可以使用内置的 :Man name 命令读取 man page,或者配置为 man 分页器,使用 export MANPAGER='nvim +Man!'。支持突出显示以及在命令行标志、关键字和其他 man page 之间导航。自动使用节标题、命令行标志和关键字生成大纲(可通过 gO 获得)。
https://neovim.fullstack.org.cn/ || neovim
  • xman — 提供 man page 的分类视图。
https://xorg.freedesktop.org/ || xorg-xman

使用 lynxFirefox 等浏览器查看 man page 允许用户获得 info 页面超链接文本的主要优势。替代方案包括以下内容

转换为 HTML

mandoc

安装 mandoc 软件包。要转换页面,例如 free(1)

$ mandoc -Thtml -Ostyle=style.css /usr/share/man/man1/free.1.gz > free.html

现在在您喜欢的浏览器中打开名为 free.html 的文件。

man2html

首先,从官方仓库安装 man2html

现在,转换 man page

$ man free | man2html -compress -cgiurl man$section/$title.$section$subsection.html > ~/man/free.html

man2html 的另一个用途是导出为原始的、打印机友好的文本

$ man free | man2html -bare > ~/free.txt

man -H

man-db 实现也具有自行执行此操作的能力

$ man -H free

这将读取您的 BROWSER 环境变量以确定浏览器。您可以通过将二进制文件传递给 -H 选项来覆盖此设置。

roffit

首先安装 roffitAUR

要转换 man page

$ gunzip -c /usr/share/man/man1/free.1.gz | roffit > free.html

转换为 PDF

man page 一直都是可打印的:它们是用 troff(1) 编写的,troff(1) 本质上是一种排版语言。因此,您可以轻松地将 man page 转换为 groff 支持的任何输出设备格式,groff 由 man-db 使用。有关输出设备列表,请参阅 groff(1) 中的 -T 选项(如果您使用 mandoc 软件包,则为 mandoc(1))。

这将生成一个 PDF 文件

$ man -Tpdf manpage > filename

注意事项:字体通常仅限于硬编码大小的 Times 字体。一些 man page 专门为终端查看而设计,在 PS 或 PDF 格式下看起来可能不正确。

Qman

对于阅读 man page 的另一种界面,该界面支持超链接和历史记录等现代功能,请安装 qman-gitAUR。您现在可以使用 qman 代替 man

$ qman ls    # Display the manual page for ls
$ qman -k ls # Perform apropos on 'ls'

有关更多信息,请参阅项目的 GitHub 页面

配置 (可选)

Qman 的配置文件位于 ~/.config/qman.conf(用户特定)或 /etc/xdg/qman.conf(系统范围)。

如果您正在使用支持 256 色和 Unicode 的现代终端,您可能希望将 此代码 粘贴到您的配置文件中,以使软件具有更现代的外观。

默认情况下,Qman 使用 xdg-open 打开超链接和电子邮件链接。要覆盖此设置,请将以下内容添加到您的配置文件中

[misc]
browser_path=/path/to/your/browser
mailer_path=/path/to/your/email/client

在线 man page

警告: 某些发行版提供的 man page 可能已修补或已过时,与 Arch Linux 提供的 man page 不同。

请注意,虽然 man-pages 提供了 POSIX.1-2017 的 man page(请参阅 [2]),但也存在官方在线参考

还有一个 在线数据库的比较表

提示: 可以使用以下命令在终端中渲染在线 Arch man page:curl -sL 'https://man.archlinux.org/man/clang.raw' | man -l -

值得注意的 man page

以下是一个非详尽的值得注意的页面列表,这些页面可能有助于您更深入地理解很多事情。其中一些可以作为很好的参考(例如 ASCII 表)。

更广泛地说,请查看 category 7 (miscellaneous) pages

$ man -s 7 -k ".*" 

Arch Linux specific pages

本条目或章节需要扩充。

原因:添加关于编写 man page 的章节,包括 pandoc-cli、ruby-ronn-ng、asciidoc、help2man、go-md2man、txt2man、scdoc、info2manAUR、pod2manAUR、ruby-md2manAUR 等转换工具。(在 Talk:Man page 中讨论)

参见