跳转至内容

man page

来自 ArchWiki

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

尽管 man page 的范围很广,但它们被设计成独立的文档,因此在讨论相关主题时,只会有限地引用其他 man page。这与支持超链接的 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

手册被分为几个 部分。每个部分都有一个介绍,例如 intro(1)intro(2) 等等。完整的列表请参见 man-pages(7) § 手册页的章节

Man page 通常通过其名称后跟括号中的节号来引用。通常有多个同名 man page,例如 man(1)man(7)。在这种情况下,请在 man 命令后跟节号,然后是 man page 名称,例如

$ man 5 passwd

以阅读关于 /etc/passwd 的 man page,而不是 passwd 工具。

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

$ man passwd.5

搜索手册

当不确定 man page 的确切名称时,可以使用以下任一等效命令来搜索 man page

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

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

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

注意 搜索功能由专用缓存提供。默认情况下,该缓存的维护由 man-db.service 处理,它会由 man-db.timer 定期触发。如果您收到“没有合适的结果”的消息,请尝试以 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 pages

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

使用 lynxFirefox 等浏览器查看 man pages 可以让用户获得 info pages 的主要好处,即超文本链接。替代方法包括以下选项

转换为 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 手册页一直以来都是可打印的:它们是用 troff(1) 编写的,而 troff 本质上是一种排版语言。因此,您可以轻松地将 man 手册页转换为 groff 支持的任何输出格式,groffman-db 使用。有关输出设备的列表,请参阅 groff(1) (或如果您使用 mandoc 包,请参阅 mandoc(1))中的 -T 选项。

这将生成一个 PDF 文件

$ man -Tpdf manpage > filename

注意:字体通常限于 Times 字体,并使用硬编码的尺寸。有些 man pages 是专门为终端查看设计的,在 PS 或 PDF 格式下看起来不会很好。

Qman

如果您需要一个支持现代功能(如超链接和历史记录)的 man pages 阅读替代界面,请安装 qmanAURqman-gitAUR。您现在可以使用 qman 来代替 man

$ qman ls    # Display the manual page for ls
$ qman -k ls # Perform apropos on 'ls'
注意 Qman 在没有正确配置的 mandb 搜索缓存的情况下将无法运行。有关如何设置此缓存的说明,请参见 #搜索手册 部分。

有关更多信息和故障排除,请参见项目的 GitHub 页面

在线 man page

警告 一些发行版提供的 man pages 经过修改或已过时,与 Arch Linux 提供的 man pages 不同。

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

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

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

值得注意的 man page

以下是一个非详尽列表,其中包含值得注意的页面,它们可能会帮助您更深入地理解许多内容。其中一些页面可能是一个很好的参考(例如 ASCII 表)。

更广泛地说,可以查看 第 7 类(杂项)页面

$ man -s 7 -k ".*" 

Arch Linux 特有页面

本文章或章节需要扩充。

原因: 添加一个关于编写 man 手册页的部分,包括转换工具,如 pandoc-cliruby-ronn-ngasciidochelp2mango-md2mantxt2manscdocinfo2manAURpod2manAURruby-md2manAUR 等。(请在 Talk:Man page 中讨论)

参见