欢迎光临
我们一直在努力

Man!!! 别把 man 当摆设:一篇讲透 Linux 获取帮助

别把 man 当摆设:一篇讲透 Linux 获取帮助

本文是 Linux 命令行学习的第三篇,聚焦「Linux 中获取帮助」这一主题。
遇到不会用的命令怎么查?重点学习 man 手册页、help 内置帮助,以及它们的使用方式和区别。
示例提示符:普通用户为 [feiyun@centos7 ~ 时间]$,root 用户为 [root@centos7 ~ 时间]#。


一、Linux 中获取帮助

在 Linux 里,遇到不会用的命令或配置,通常有几种「查帮助」的途径:

  • man 命令:查看命令的完整手册页(最常用、最权威)。
  • help 命令:查看 shell 内置命令的帮助。
  • 命令 –help:命令自带的简短帮助。
  • info 命令:GNU 提供的更详细的说明文档。

本篇重点学习 man,并对比它和 help 的区别。

1. man:查看手册页

man 是 manual(手册)的缩写。基本用法:

man 命令名 # 查看某个命令的手册
man 章节 命令名 # 查看指定章节下的手册

直接查看 passwd 命令的手册:

[feiyun@centos7 ~ 16:52:38]$ man 1 passwd

2. man 的 SECTION(章节)

一个命令名可能对应多个「章节」,用 man 章节 命令 来指定。man 手册主要分为 9 个章节(section):

章节内容
1 用户命令(普通用户可执行的命令)
2 系统调用(内核提供的函数)
3 库函数(C 库函数)
4 设备文件(/dev 下的设备)
5 配置文件格式
6 游戏
7 杂项(宏、协议等)
8 系统管理命令(root 使用的命令)
9 内核例程

以 passwd 为例,它同时存在于两个章节,内容完全不同:

[feiyun@centos7 ~ 16:52:38]$ man 1 passwd # 第 1 节:passwd 命令
[feiyun@centos7 ~ 16:53:17]$ man 5 passwd # 第 5 节:/etc/passwd 配置文件格式

说明:man 1 passwd 讲的是「passwd 这个命令怎么用」,man 5 passwd 讲的是「/etc/passwd 这个配置文件的格式」。

怎么知道在哪一节? 用 man -k 关键词 搜索时,结果里括号中的数字就是章节号(见下文),例如 chgpasswd (8) 表示它在第 8 节。

3. man 的阅读模式(就是 less)

打开 man 手册后,会进入一个分页阅读界面,它底层用的正是我们第一篇学过的 less,所以快捷键完全一样:

快捷键作用
空格 / f 向下翻一页
b 向上翻一页
回车 向下翻一行
/关键词 向下搜索关键词
n / N 下一个 / 上一个匹配
g 跳到开头
G 跳到结尾
q 退出(回到命令行)

记忆:man 打开的手册 = 用 less 浏览一篇文章,翻页按空格、搜索按 /、退出按 q。

4. man -k:按关键词搜索

man -k(等价于 apropos)可以按关键词搜索相关的手册:

[feiyun@centos7 ~ 16:56:13]$ man -k passwd
chgpasswd (8) – update group passwords in batch mode
chpasswd (8) – update passwords in batch mode
fgetpwent_r (3) – get passwd file entry reentrantly
...

[feiyun@centos7 ~ 16:57:55]$ man -k ext4
debugfs (8) – ext2/ext3/ext4 file system debugger
dumpe2fs (8) – dump ext2/ext3/ext4 filesystem information
e2fsck (8) – check a Linux ext2/ext3/ext4 file system
ext4 (5) – the fourth extended file system
...

说明:输出里每行后面的 (数字) 就是章节号,例如 ext4 (5) 表示在第 5 节(配置文件格式)。

5. mandb:更新 man 数据库

man -k 能搜索,靠的是 man 的索引数据库,用 mandb 来更新它:

[feiyun@centos7 ~ 16:54:26]$ mandb
Purging old database entries in /usr/share/man...
Processing manual pages under /usr/share/man...
fopen: Permission denied

说明:普通用户执行 mandb 会报 Permission denied(权限不够),因为更新数据库需要写入系统目录。

切换到 root 后才能成功更新:

[feiyun@centos7 ~ 16:55:22]$ su -l root
[root@centos7 ~ 16:55:55]# mandb
正在删除 /usr/share/man 里的旧数据库条目...
正在处理 /usr/share/man 下的手册页...
正在为路径 /usr/share/man/man8 更新索引缓存。请等待...
[root@centos7 ~ 16:56:03]# exit

说明:从输出可以看出,手册页存放在 /usr/share/man 目录下(man8 对应第 8 章节)。

6. man 与 shell 内置 help 的区别

有些命令是 shell 的内置命令(如 cd、history、echo、alias),它们没有独立的 man 手册页,要用 help 查看:

[feiyun@centos7 ~ 16:58:04]$ man history # 可能没有独立手册页
[feiyun@centos7 ~ 16:58:35]$ help history # shell 内置命令的说明
history: history [-c] [-d offset] [n] or history -anrw [filename] ...

核心区别:

  • man:查看外部命令(独立的程序,如 ls、passwd、cp)的完整手册。
  • help:查看 shell 内置命令(cd、history、echo 等)的说明,因为这些命令是 shell 的一部分,没有独立手册。
  • 判断方法:可以用 type 命令 查看它是「内置命令」还是「外部命令」,例如 type cd 会显示 cd 是 shell 内建。

7. man 的存储与来源

  • 存储位置:手册页文件存放在 /usr/share/man 目录(按章节分子目录,如 /usr/share/man/man1、/usr/share/man/man8),通常是压缩文件(.gz)。
  • 来源:手册页由软件包提供,安装软件时一并安装对应的手册页。
  • 索引数据库:man -k 的搜索依赖 mandb 建立的索引数据库,所以更新手册后要运行 mandb 刷新索引。

8. 第一部分小结

命令 / 用法作用
man 命令 查看命令手册页
man 章节 命令 查看指定章节的手册
man -k 关键词 按关键词搜索手册(等价 apropos)
help 内置命令 查看 shell 内置命令的帮助
mandb 更新 man 索引数据库(需 root)

核心要点:

  • man 是查命令手册的权威方式,man -k 按关键词搜索。
  • man 分 9 个章节,最常见的是 1(用户命令)、5(配置格式)、8(管理命令)。
  • 打开手册后按 less 快捷键操作:空格翻页、/ 搜索、q 退出。
  • man 用于外部命令,help 用于 shell 内置命令(如 cd、history)。
  • 手册页存放在 /usr/share/man,man -k 依赖 mandb 建立的索引。

二、which 与 whereis:查找命令位置

除了 man 查手册,还有两个命令用来「找命令在哪里」。

1. which:查找命令的可执行文件路径

[feiyun@centos7 ~ 16:58:44]$ which vi
alias vi='vim'
/usr/bin/vim

说明:which 会在 PATH 环境变量指定的目录里查找命令。这里发现 vi 其实是一个别名(alias vi='vim'),真正的可执行文件是 /usr/bin/vim。

2. whereis:查找命令及相关的所有文件

[feiyun@centos7 ~ 17:07:55]$ whereis man
man: /usr/bin/man /usr/share/man /usr/share/man/man1/man.1.gz ...

[feiyun@centos7 ~ 17:08:02]$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

说明:whereis 比 which 查得更全,会同时列出二进制文件、配置文件、手册页等。例如 passwd 同时列出了:

  • /usr/bin/passwd:命令本体(第 1 节)
  • /etc/passwd:配置文件
  • …/man1/passwd.1.gz:命令手册(第 1 节)
  • …/man5/passwd.5.gz:配置文件手册(第 5 节)

这正好印证了前面 man 1 passwd 和 man 5 passwd 的章节区分。

3. which 与 whereis 的区别

命令作用
which 只在 PATH 里找命令的可执行文件,显示路径(含别名信息)
whereis 查找命令的二进制、源代码、手册页等所有相关文件,范围更广

三、实战练习:查找并查看 man 手册

下面是 5 道关于「查找 / 查看手册」的练习,附详细答案和示例。

题目 1:查看 man 命令的使用方法

答案:用 man man 查看 man 命令自己的手册(也可以用 man –help 看简短帮助)。

man man # 查看 man 命令的完整手册
man –help # 查看 man 命令的简短帮助

题目 2:gedit 打开文件,并定位到指定行、列

查找方法:man gedit 查看手册。

答案:gedit 是图形界面编辑器,打开文件用 gedit 文件名;定位用 +行号 和 +行号:列号。

man gedit # 查看 gedit 手册

gedit file.txt # 打开 file.txt
gedit +10 file.txt # 打开并定位到第 10 行
gedit +10:5 file.txt # 打开并定位到第 10 行第 5 列

说明:+行号 定位到指定行,+行号:列号 定位到指定行列。

题目 3:su 不带参数与带 – 的区别

查找方法:man su 查看手册。

答案:

man su # 查看 su 手册
su # 不带参数:切换到 root,但保留当前环境(非登录 shell)
su# 带 -(等价 su -l):完整登录,加载 root 环境(登录 shell)

区别:

  • su:默认切到 root,但不改变当前目录、不加载 root 的登录环境变量(还保留普通用户的环境)。
  • su -:模拟完整登录,会加载 root 的环境变量,并把工作目录切换到 root 的家目录 /root。
  • 日常更推荐用 su -,环境更完整、更接近真实登录。

题目 4:查找「调整内核(kernel)启动(boot)参数」的手册

查找方法:用 man -k 按关键词搜索。

man -k boot # 搜索 boot 相关手册
man -k kernel # 搜索 kernel 相关手册

答案:内核启动参数的手册是 bootparam,位于第 7 节(杂项)。

man -k bootparam # 会找到 bootparam (7)
man 7 bootparam # 查看内核启动参数手册

说明:bootparam(7) 专门介绍 Linux 内核启动时的参数,想调整内核启动参数就看这一节。

题目 5:查找「创建 archive 工具」,创建和提取 archive(不用 zip/unzip)

查找方法:用 man -k 搜索 archive 相关工具。

man -k archive # 搜索 archive 相关工具
man tar # 查看 tar 的手册

答案:最常用的 archive 工具是 tar(Tape Archive)。

创建 archive:用 tar -cvf

tar -cvf myarchive.tar file1.txt file2.txt dir1
# -c 创建、-v 显示过程、-f 指定文件名

提取 archive:用 tar -xvf

tar -xvf myarchive.tar
# -x 提取、-v 显示过程、-f 指定文件名

查看 archive 内容(不解压):用 tar -tvf

tar -tvf myarchive.tar
# -t 列出内容

tar 常用选项小结:

选项作用
-c create,创建归档
-x extract,提取归档
-t list,列出归档内容
-v verbose,显示过程
-f file,指定归档文件名
-z 用 gzip 压缩(.tar.gz)
-j 用 bzip2 压缩(.tar.bz2)

说明:题目要求「不使用 zip/unzip」,tar 正是替代方案。它可以把多个文件/目录打包成一个 archive 文件,需要压缩时再加 -z(gzip)或 -j(bzip2)。


四、man 查询技巧:以 passwd 为例

查 man 手册可以类比「组装一个东西」,有一套固定流程。下面以 passwd 为例,走一遍完整流程。

1. 查询流程(四步「组装法」)

步骤类比操作
① 找零件 先知道有哪些零件 man -k 关键词 搜索
② 拿说明书 找到对应说明书 man 命令 打开手册
③ 读说明书 看懂结构和语法 读 NAME / SYNOPSIS / OPTIONS
④ 动手组装 按说明使用 按 OPTIONS 实际执行

2. 第一步:man -k 搜索定位

不知道确切的命令名时,先用关键词搜:

[feiyun@centos7 ~ 17:28:06]$ man -k password

结果里能找到 passwd (1),其中 (1) 表示它在第 1 节(用户命令)。于是确定要看 passwd。

3. 第二步:man 打开手册

man passwd # 等价于 man 1 passwd

打开后就是 passwd 的完整手册页。手册内容分成很多小段,下面逐段拆开对照着看。

4. 第三步:看懂 man 手册的结构

一个标准 man 手册通常包含以下几部分:

部分含义
NAME 命令名 + 一句话说明
SYNOPSIS 语法格式(最重要,快速看用法)
DESCRIPTION 详细描述
OPTIONS 每个选项的作用(重点)
EXIT STATUS 退出码的含义
FILES 相关的配置文件
SEE ALSO 相关手册(延伸阅读)

下面用 man passwd 的实际输出,逐段对照着看:

① NAME —— 命令是干嘛的

NAME
passwd – update user's authentication tokens

意思:passwd 用于更新用户的认证令牌(也就是改密码)。

② DESCRIPTION —— 详细描述

DESCRIPTION
The passwd utility is used to update user's authentication token(s).
This task is achieved through calls to the Linux-PAM and Libuser API.

意思:passwd 通过调用 Linux-PAM 和 Libuser API 来完成认证并更新密码。

③ EXIT CODE —— 退出码(报错时对照看)

EXIT CODE
0 success
1 passwd/libuser operation failed
2 unknown user
252 unknown user name
253 bad arguments or passwordless account
254 invalid application of arguments
255 libuser operation failed

意思:0 表示成功,其他数字对应不同的错误类型,排查问题时可以对照。

④ FILES 和 SEE ALSO —— 相关文件与延伸阅读

FILES
/etc/pam.d/passwd – the Linux-PAM configuration file

SEE ALSO
pam(8), pam.d(5), libuser.conf(5), and pam_chauthtok(3).

FILES 列出相关配置文件,SEE ALSO 列出可以延伸查看的相关手册。

重点:其中 SYNOPSIS(语法)和 OPTIONS(选项)是最常用的两部分,下面两节单独详解。

5. 读懂 SYNOPSIS(语法摘要)

passwd 的 SYNOPSIS 是:

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]

看懂它要掌握几个符号约定:

符号含义示例
[ ] 可选(可加可不加) [-k] 表示 -k 可选
[-u [-f]] 嵌套:-u 可单独用,也可再带 -f -u 或 -u -f
mindays 需要跟一个参数(值) -n 7 中 7 就是 mindays
[username] 可选的位置参数 可指定用户名

技巧:先看 SYNOPSIS 能快速知道「这个命令能带哪些选项、哪些选项需要参数」,再看 OPTIONS 了解每个选项的具体含义。

6. 详解 passwd 各选项(OPTIONS)

结合 man passwd 的 OPTIONS 部分,各选项含义如下:

选项作用权限
-k, –keep 只更新已过期的密码,保留未过期的 一般
-l, –lock 锁定密码(给加密密码加 ! 前缀使其失效) 仅 root
-u, –unlock 解锁密码(移除 ! 前缀),配合 -f 可强制 仅 root
-f, –force 强制执行(如强制解锁无密码账户)
-d, –delete 删除密码,让账户变为无密码 仅 root
-e, –expire 让密码立即过期,下次登录强制改密码 仅 root
-n, –minimum DAYS 设置密码最小寿命(天) 仅 root
-x, –maximum DAYS 设置密码最大寿命(天) 仅 root
-w, –warning DAYS 设置过期前警告天数 仅 root
-i, –inactive DAYS 设置过期后不活动天数 仅 root
-S, –status 显示账户的密码状态 一般
–stdin 从标准输入读取新密码(可用管道传入)

几个要点:

  • -l(锁定)并不是完全锁死账户,用户仍可能通过 SSH 公钥等方式登录;要完全锁定用 chage -E 0 用户名。
  • -u(解锁)默认拒绝解锁「只有 ! 的无密码账户」,需要加 -f 强制。
  • -d 删除密码后账户无密码;-e 则是强制下次登录改密码。

7. 实际使用 passwd

结合第一篇文章学过的内容,以及这里的新选项,实际使用示例:

passwd # 普通用户改自己密码
passwd -S feiyun # 查看 feiyun 的密码状态
passwd -l feiyun # root 锁定 feiyun 密码
passwd -u feiyun # root 解锁 feiyun 密码
passwd -d feiyun # root 删除 feiyun 密码(无密码)
passwd -e feiyun # root 让 feiyun 密码立即过期
passwd -n 7 -x 90 -w 7 feiyun # 设置最小 7 天、最大 90 天、提前 7 天警告
echo "NewPass123" | passwd –stdin feiyun # 通过管道设置密码

说明:–stdin 常用于脚本里批量设置密码,例如把密码通过 echo + 管道 | 传给 passwd。

8. 小结

man 查询技巧的核心口诀:

  • 不会用命令 → man -k 关键词 先搜索定位。
  • 找到后 → man 命令 看手册,重点看 SYNOPSIS 和 OPTIONS。
  • 看懂符号:[ ] 可选、| 二选一、… 可重复、mindays 需跟参数。
  • OPTIONS 里每个选项都有说明,含「仅 root 可用」这类权限提示,用之前要留意。
赞(0)
未经允许不得转载:171主机测评 » Man!!! 别把 man 当摆设:一篇讲透 Linux 获取帮助
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址