剑侠盟·网游特攻队

  • 首页
  • 门派特辑
  • 情缘系统
  • 帮派战报
  • HOME> 帮派战报> Linux man 命令:查阅手册、选择节号与搜索文档
    Linux man 命令:查阅手册、选择节号与搜索文档
    帮派战报

    man 用于在终端阅读已安装的参考手册,包括命令、配置文件、系统调用和库函数。输入 man 页面名 就能查找相应文档;同名页面有多个类别时,用节号指定,例如 man 5 passwd。

    目录展开收起1. man 命令与手册页是什么?2. 基本语法与第一次查阅3. 在 less 分页器中移动、搜索和退出4. 怎样阅读手册页结构?5. 节号表示类别,不是版本6. 同名页面怎样逐一查找?6.1. 查看所有匹配与简短说明6.2. 直接指定所需节号7. 不知道命令名时按关键词搜索7.1. 先查名称和简短说明7.2. 需要时再查手册源文8. 常用 man-db 选项9. Bash 内建命令要配合 help10. 中文手册与区域设置11. 找不到手册时如何排查?11.1. 区分命令缺失与文档缺失11.2. 检查索引与搜索路径12. 三个常见查阅场景12.1. 快速定位命令选项12.2. 修改配置前查文件格式12.3. 沿相关页面深入查阅13. man、--help、info 与 help 的区别14. 常见问题15. 实际查阅时的顺序16. 官方参考资料

    本机手册通常更贴近已安装的软件,但仍应核对软件包版本和文档是否齐全。本文以 Linux 常见的 man-db 实现为主,说明如何打开、搜索和退出手册,以及如何排查页面缺失问题;其他实现的选项可能不同。

    man 命令与手册页是什么?

    man 按配置的搜索路径查找页面,将文档排版后交给分页器(pager)显示。分页器常用 less,但也受系统配置和 MANPAGER、PAGER 等环境变量影响,所以屏幕上的按键不完全由 man 决定。

    man 程序并不自带所有命令的说明。文档可能随软件包安装,也可能在独立的文档包或开发包中;即使两台机器发行版相同,可见的页面也可能不同。man-db 的选项与搜索规则见 man(1) 参考手册。

    基本语法与第一次查阅

    下面是语法示意,不是原样执行的命令。options、section 和 page 分别代表选项、节号与页面名,方括号表示可选内容,省略号表示可以重复:

    man [options] [[section] page...]

    打开 ls 的手册:

    man ls

    成功时会显示 ls 的名称、用法和选项等内容,通常可在 less 中按 q 退出。若出现找不到页面的提示,请检查文档安装情况,不要据此判断 ls 一定不存在。

    指定第 5 节:

    man 5 passwd

    这里查询的是 passwd 文件格式,通常对应 /etc/passwd,而不是更改密码的 passwd 命令。不指定节号时,man 按配置的顺序搜索并显示首先找到的页面,顺序不一定等于简单的数字升序。

    在 less 分页器中移动、搜索和退出

    以下按键适用于常见 less 配置;如果实际使用的是其他分页器或修改了按键绑定,应查看该分页器的帮助:

    按键

    作用

    Space、Page Down

    向前翻一屏

    b、Page Up

    向后翻一屏

    ↑、↓

    逐行移动

    g

    到开头

    G

    到末尾

    /模式

    向后文方向搜索

    ?模式

    向前文方向搜索

    n、N

    n 沿上次搜索方向继续;N 反向重复搜索

    h

    打开 less 自身帮助

    q

    退出当前分页器

    例如打开 man ls 后,输入 /-a 并按 Enter,可搜索 -a。less 默认使用正则表达式,且可能受搜索选项影响;搜索长选项 /--all 往往更容易定位。q 退出的是当前分页器,若用 man -a 打开多页,后面仍可能出现下一页提示。详细按键见 less 官方手册。

    怎样阅读手册页结构?

    常见页面包含以下内容,但不是每页都具备所有栏目;系统调用还可能有 RETURN VALUE、ERRORS 等专门说明:

    栏目

    内容

    NAME

    名称与简短说明

    SYNOPSIS

    调用格式

    DESCRIPTION

    行为与用途

    OPTIONS

    选项及效果

    EXIT STATUS

    进程退出状态

    ENVIRONMENT

    相关环境变量

    FILES

    配置和数据路径

    EXAMPLES

    用例,部分页面没有

    SEE ALSO

    相关手册引用

    SYNOPSIS 中的粗体通常表示原样输入,斜体表示应替换的参数,终端上也可能以颜色或下划线代替斜体。[ ] 表示可选项,... 表示重复,竖线常表示互斥选择。具体仍以该页约定为准,不要把语法占位符当成真实参数。

    节号表示类别,不是版本

    同一个名称可以对应命令、函数或配置格式,因此文档常写成 name(section)。Linux 常见分类如下:

    节号

    类别

    示例

    1

    用户命令

    ls(1)、grep(1)

    2

    系统调用

    open(2)、read(2)

    3

    库函数

    printf(3)、malloc(3)

    4

    特殊文件与设备

    null(4)

    5

    文件格式与约定

    passwd(5)、fstab(5)

    6

    游戏

    已安装游戏的手册

    7

    概念与其他约定

    signal(7)、man-pages(7)

    8

    系统管理命令

    mount(8)、useradd(8)

    9

    内核例程

    非标准类别,不是所有系统都有

    例如 passwd(1) 与 passwd(5) 可分别打开:

    man 1 passwd

    man 5 passwd

    前者说明用户命令,后者说明文件格式。若只安装了其中一个页面,另一个查询仍会失败。

    同名页面怎样逐一查找?

    查看所有匹配与简短说明

    -a 会按搜索顺序依次显示匹配页面,而不是把它们合成一页。退出当前页后,man-db 可能询问是否继续:

    man -a passwd

    -f 查询名称对应的简短说明,通常相当于 whatis,适合先看有哪些节:

    man -f passwd

    whatis passwd

    如果文档与索引都存在,可能得到 passwd(1)、passwd(5) 等条目;具体格式与语言取决于本机。如果没有结果,也可能只是索引尚未更新。

    直接指定所需节号

    man-db 支持以下几种表示法,带括号的形式应加引号,避免 shell 将括号当成语法:

    man 5 passwd

    man passwd.5

    man 'passwd(5)'

    为了易读并兼顾其他实现,优先使用 man 5 passwd。不要把 man-db 的所有便捷写法都当成任何系统都支持的标准。

    不知道命令名时按关键词搜索

    先查名称和简短说明

    man -k 与 apropos 搜索名称及简短说明,通常比全文搜索更快:

    man -k "copy files"

    apropos "copy files"

    引号可让包含空格的搜索词作为一个参数传给程序,不会自动转义正则表达式。包含特殊字符时,还要考虑 apropos 的匹配规则。英文短语可能无法匹配中文描述,结果也受本机索引内容影响。

    需要时再查手册源文

    大写 -K 执行更耗时的全局搜索,man-db 默认把搜索项作为普通字符串,使用 --regex 时才按正则表达式处理:

    man -K "environment variable"

    可指定节号缩小范围:

    man -K 5 "password database"

    man-db 搜索的是手册源文件,而不是最终排版文字。因此注释可能造成误命中,排版转义也可能导致漏查;没有匹配不能证明文档中完全没有相关概念。找到结果后仍要阅读上下文。

    常用 man-db 选项

    选项

    含义

    -a、--all

    按顺序显示所有匹配页面

    -f、--whatis

    按名称查询简短说明

    -k、--apropos

    搜索名称与简短说明

    -K、--global-apropos

    在手册源文件中搜索文本

    -w、--where

    不显示页面,只输出源文件位置

    -l、--local-file

    格式化指定本地手册文件

    -L locale、--locale=locale

    临时指定查找页面所用区域设置

    -M path、--manpath=path

    指定手册搜索层次的路径

    例如查看将读取的 ls 手册源文件位置:

    man -w ls

    成功时输出路径,可能以 .gz 等压缩扩展名结尾。-w 不负责显示已经格式化的全部正文。自定义 -M 路径应指向符合手册层次的目录;单个本地手册文件则应考虑 -l。

    Bash 内建命令要配合 help

    cd、alias、read 等可能由 shell 自身实现。先用 type 判断实际解析结果,再查当前 Bash 的内建帮助:

    type cd

    help cd

    help -m cd

    在 Bash 中,type cd 通常说明 cd 是 shell builtin;help cd 给出内建帮助,help -m cd 则使用类似手册页的结构。它们查询的是当前 Bash,不能替代其他 shell 的说明。相关用法可参阅英文版 Bash help 命令说明。

    若安装了 Bash 的手册,也可以阅读完整页面:

    man bash

    一个名称还可能同时对应别名、函数、内建命令和外部程序。查看所有解析位置:

    type -a printf

    例如 printf 可能既是 Bash 内建命令,又有独立的可执行文件;man 1 printf 不一定准确描述当前调用的内建版本。内建帮助的选项也见 Bash 官方参考手册。

    中文手册与区域设置

    区域设置(locale)影响语言选择。先查看当前设置:

    locale

    echo "$LANG"

    LC_ALL、LC_MESSAGES 等也可能覆盖 LANG,不能只看一个变量就确定实际语言。若安装了匹配的翻译页,man 可以优先选择它;缺少翻译时可能回退到英文。

    临时要求使用 C 区域的页面选择:

    man -L C ls

    -L C 不安装任何翻译,也不永久更改系统设置;man 自身早期输出的帮助等信息未必随该选项改变。译文可能滞后于原文,遇到疑问应同时核对英文页和软件包版本。

    找不到手册时如何排查?

    区分命令缺失与文档缺失

    出现 No manual entry for ... 时,先确认名称、节号和命令是否存在。下面以 ls 为例,查询其他程序时替换 ls:

    type -a ls

    command -v ls

    第一行可列出多个解析结果,第二行通常显示当前将使用的命令或路径;它们检查命令,不检查手册是否安装。精简镜像或容器可能缺少 man 本身以及基础文档。

    Debian、Ubuntu 常见安装方式如下;这是修改系统软件包的操作,需要管理权限和可用的软件源:

    sudo apt update

    sudo apt install man-db manpages

    Rocky Linux、RHEL 系通常使用:

    sudo dnf install man-db man-pages

    安装时先阅读软件包管理器给出的变更计划。基础手册包不保证包含所有应用文档;例如 Debian、Ubuntu 的部分系统调用和库函数页面还可能需要 manpages-dev,SSH 配置页可能随相应客户端、服务端或文档包提供。不同版本的包名和拆分方式应以本机仓库为准。

    检查索引与搜索路径

    能打开页面但 -k、whatis 查不到结果时,可能是索引未建立或过期。man-db 环境可更新索引:

    sudo mandb

    mandb 会更新手册数据库,不会替你安装缺失的页面;若失败,应检查报告的路径和权限。行为见 mandb(8) 手册。

    查看搜索路径和 MANPATH:

    manpath

    printf '%s\n' "$MANPATH"

    MANPATH 未设置或输出为空,不等于没有默认路径,manpath 仍可按配置推导路径。自定义 MANPATH 可能覆盖常规搜索;空路径元素等规则由实现决定。排查时可对照当前 shell 的设置与 manpath 输出,不要无目的地永久写入固定路径。

    三个常见查阅场景

    快速定位命令选项

    man tar

    进入后输入 /--exclude 并按 Enter,用 n 沿原方向继续搜索,用 N 反向查找。匹配项只是文字位置,应阅读完整选项解释和适用条件。

    修改配置前查文件格式

    man 5 fstab

    man 5 ssh_config

    man 5 sshd_config

    这些页面分别解释挂载表、SSH 客户端配置和 SSH 服务端配置。注意 ssh_config 与 sshd_config 对应不同程序,不能将选项互相套用。页面存在时再检查字段、允许值、注释和示例。

    沿相关页面深入查阅

    man 2 open

    man 7 path_resolution

    例如 open(2) 说明系统调用接口,path_resolution(7) 说明路径解析概念。当前页面末尾的 SEE ALSO 可作为进一步调查线索;引用页面也必须已经安装,man 才能在本地打开。

    man、--help、info 与 help 的区别

    方式

    适合用途

    注意事项

    程序 --help

    快速查看语法和选项

    需程序支持

    man 页面名

    详细参考、环境与文件

    依赖已安装手册及搜索配置

    info 主题

    章节式长文档和示例

    需要相应 Info 文档

    help 内建名

    查询当前 Bash 内建命令

    反映当前 Bash 的内建帮助

    可先用 --help 快速查看受支持的选项,再用 man 阅读细节;Bash 内建命令优先结合 help,GNU 工具的章节式长文档则可使用 info。并非每个程序都支持 --help 或 --version,也不是每个程序都有独立的 Info 文档。

    常见问题

    man 页面名后面的数字是版本号吗?

    不是。printf(1) 是用户命令页面,printf(3) 是库函数页面;数字表示文档类别,不能据此判断程序版本。

    怎样退出手册?

    less 通常按 q 退出。若 man -a 正在连续打开多页,还可能出现下一页提示;其他分页器请查询其帮助。

    本机 man 与网上文档为什么不同?

    软件版本、实现、发行版补丁或译文更新进度都可能不同。以实际安装的软件和对应文档为依据;支持版本查询的程序可再核对其 --version 输出。

    完全不知道命令名怎么办?

    先用 man -k 或 apropos 搜索名称和简短说明,必要时在支持的实现中用 -s 限制节号。注意语言、正则表达式与索引是否完整。

    实际查阅时的顺序

    先用 man man 确认本机实现,打开需要的页面后检查节号和 SYNOPSIS,再阅读选项、退出状态及相关文件。遇到同名页面时指定节号,不知道名称时先查 -k,需要定位文档来源时使用 -w。

    读完后用分页器的退出键返回终端。若页面缺失,依次区分命令、文档包、索引与路径问题,比反复尝试同一命令更容易找到原因。

    官方参考资料

    man-db man(1) 参考手册

    Linux man-pages 项目

    man-db 上游项目

    Bash 内建命令参考手册

    余承东口误24999说成2499,华为折叠屏火了
    蓝桥杯:栈 和 例题 :小邋遢的衣橱

    友情链接:


    Copyright © 2022 剑侠盟·网游特攻队 All Rights Reserved.