man page

出自 ArchWiki
(重定向自 Man

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

尽管手册页范围广泛,但其设计目的是成为独立的文档,因此在讨论相关主题时,仅限于参考其他手册页。这与超链接感知的 Info 文档GNU 试图取代传统手册页格式形成鲜明对比。

安装

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

man-pages 提供了 Linux 和 POSIX.1 手册页 [1]

一些本地化的手册页也可用

您还可以 在官方仓库在 AUR 上 搜索所有可用的本地化 man pages。

访问 man pages

要阅读 man page,只需输入

$ man page_name

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

Man pages 通常以其名称加上括号中的章节号来引用。通常有多个同名的 man pages,例如 man(1)man(7)。在这种情况下,请在 man 命令中给出章节号,后跟 man page 的名称,例如

$ man 5 passwd

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

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

$ man passwd.5

搜索手册

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

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

默认情况下,expression 被解释为正则表达式。

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

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

可以使用 whatis 命令显示 man pages 的单行描述。例如,要获取关于 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 pages

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

  • Emacs — 这种可扩展和自文档编辑器也可以用于使用内置的 M-x man 命令读取 man pages。
https://gnu.ac.cn/software/emacs/ || emacs
  • GNOME HelpGNOME 的帮助查看器。是 gnome 的一部分。它可以通过 yelp man:<name> 或现有窗口中未记录的 Ctrl+L 键绑定来显示 man pages。
https://apps.gnome.org/Yelp/ || yelp
  • KHelpCenter — 用于显示 KDE 应用程序文档的应用程序。是 kde-system 的一部分。Man pages 位于UNIX manual pages 中,或者通过运行 khelpcenter man:<name>
https://apps.kde.org/khelpcenter/ || khelpcenter
  • Konqueror — KDE 文件管理器和 Web 浏览器。它可以通过 man:<name> 显示 man pages。
https://konqueror.org/ || konqueror
  • neovim — 编辑器可以使用内置的 :Man name 命令读取 man pages,或者配置为 man 分页器 export MANPAGER='nvim +Man!'。支持高亮显示和在命令行标志、关键字和其他 man pages 之间导航。使用节标题、命令行标志和关键字作为条目自动生成大纲(可通过 gO 获得)。
https://neovim.fullstack.org.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 pages 一直是可打印的:它们是用 troff(1) 编写的,它从根本上来说是一种排版语言。因此,您可以轻松地将 man pages 转换为 groff 支持的任何格式,groffman-db 使用。有关输出设备的列表,请参见 groff(1) 中的 -T 选项(如果您使用 mandoc 软件包,则为 mandoc(1))。

这将生成一个 PDF 文件

$ man -Tpdf manpage > filename

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

Qman

对于读取手册页的替代界面,一种支持现代功能(如超链接和历史记录)的界面,请安装 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 pages

警告: 某些发行版提供的手册页已修补或过时,与 Arch Linux 提供的手册页不同。

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

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

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

值得注意的 man pages

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

更一般而言,请查看 类别 7(杂项)页面

$ man -s 7 -k ".*" 

Arch Linux 特定页面

本文或章节需要扩充。

理由: 添加一个关于编写 man pages 的章节,包括转换工具,如 pandoc-cliruby-ronn-ngasciidochelp2mango-md2mantxt2manscdocinfo2manAURpod2manAURruby-md2manAUR 等。(在 Talk:Man page 中讨论)

参见