Linux man命令:显示联机帮助手册

Linux 自带的帮助命令是最准确、最可靠的资料。笔者不止一次发现通过其他途径搜索到的信息都不准确,甚至是错误的。所以,虽然 Linux 自带的帮助命令是英文的,但是我们要静下心来慢慢学习。

main 是最常见的帮助命令,也是 Linux 最主要的帮助命令,其基本信息如下。
  • 命令名称:man。
  • 英文原意:format and display the on-line manual pages。
  • 所在路径:/usr/bin/man。
  • 执行权限:所有用户。
  • 功能描述:显示联机帮助手册。

命令格式

[root@localhost ~]# man [选项]命令

选项:
  • -f:査看命令拥有哪个级别的帮助
  • -k: 査看和命令相关的所有帮助

man 命令比较简单,我们举个例子:

[root@localhost -]# man ls
#获取ls命令的帮助信息

这就是 man 命令的基本使用方法,非常简单。但是帮助命令的重点不是命令如何使用,而是帮助信息应该如何使用。这些信息较多,我们通过下面一小节来详细讲解。

man命令的使用方法

还是查看 ls 命令的帮助,我们看看这个帮助信息的详细内容。

[root@localhost -]# man ls

该命令会输出以下信息:

点此查看高清大图

虽然不同命令的 man 信息有一些区别,但是每个命令 man 信息的整体结构皆如演示这样。在帮助信息中,我们主要査看的就是命令的格式和选项的详细作用。

不过大家请主意,在 man 信息的最后,可以看到还有哪些命令可以查看到此命令的相关信息。这是非常重要的提示,不同的帮助信息记录的侧重点是不太一样的。所以,如果在 man 信息中找不到想要的内容,则可以尝试看其他相关帮助命令。

man命令的快捷键

man 命令的快捷键可以参考表 1。

表 1 man 命令的快捷键
快捷键 作 用
上箭头 向上移动一行
下箭头 向下移动一行
PgUp 向上翻一页
PgDn 向下翻一页
g 移动到第一页
G 移动到最后一页
q 退出
/字符串 从当前页向下搜索字符串
?字符串 从当前页向上搜索字符串
n 当搜索字符串时,可以使用n键找到下一个字符串
N 当搜索字符串时,使用N键反向查询字符串。也就是说,如果使用“/字符串”方式搜索, 则N键表示向上搜索字符串;如果使用“?字符串”方式搜索,则N键表示向下搜索字符串

man命令的帮助级别

不知道大家有没有注意到,在执行 man 命令时,命令的开头会有一个数字标识这个命令的帮助级别。例如:

[root@localhost -]# man ls
LS(1)       User Commands       LS(1)
#这里(1)就表示这是 ls 的 1 级别的帮助信息

这些命令的级别号代表什么含义呢?我们通过表 2 来说明。

表 2 man命令的帮助级别
级 别 作 用
1 普通用户可以执行的系统命令和可执行文件的帮助
2 内核可以调用的函数和工具的帮助
3 C语言函数的帮助
4 设备和特殊文件的帮助
5 配置文件的帮助
6 游戏的帮助(个人版的Linux中是有游戏的)
7 杂项的帮助
8 超级用户可以执行的系统命令的帮助
9 内核的帮助

我们来试试,ls 命令的帮助级别是 1,我们已经看到了。那么我们找一个只有超级用户才能执行的命令,如 useradd 命令(添加用户的命令),来看看这个命令的帮助:

[root@localhost ~]# man useradd U
SERADD(8)  System Management Commands    USERADD(8)
#我们可以看到,默认useradd命令的帮助级别是8,因为这是只有超级用户才可以执行的命令


命令拥有哪个级别的帮助可以通过"-f"选项来进行査看。例如:

[root@localhost -]# man -f ls
ls(1) - list directory contents
#可以看到ls命令只拥有1级别的帮助


ls 是一个比较简单的 Linux 命令,所以只有 1 级别的帮助。我们再査看一下 passwd 命令(给用户设定密码的命令)的帮助:

[root@localhost ~]# man -f passwd
passwd (1) - update user's authentication tokens
#passwd命令的帮助
passwd (5) - password file
#passwd配置文件的帮助
passwd[sslpasswd] (1ssl) - compute password hashes
#这里是SSL的passwd的帮助,和passwd命令并没有太大关系


passwd 是一个比较复杂的命令,而旦这个命令有一个相对比较复杂的配置文件 /etc/passwd。所以系统既给出了 passwd 命令的帮助,也给出了 /etc/passwd 配置文件的帮助。大家可以使用如下命令查看:

[root@localhost ~]# man 1 passwd
#查看passwd命令的帮助
[root@localhost ~]# man 5 passwd
#查看/etc/passwd配件的帮助

至于 useradd 和 passwd 命令,我们会在后续章节中详细讲解,这里只是用这个例子说明 man 命令的不同帮助级别。

man 命令还有一个"-k"选项,它的作用是査看命令名中包含指定字符串的所有相关命令的帮助。例如:

[root@localhost ~]# man -k useradd
luseradd(1) - Add an user
useradd(8) - create a new user or update default new user information
useradd [adduser] (8) - create a new user or update default new user information
useradd_selinux (8) -Security Enhanced Linux Policy for the useradd processes
#这条命令会列出系统中所有包含useradd字符串的命令,所以才会找到一些包含"useradd"字符串,但是和我们要査找的useradd无关的命令。

如果我们使用"man-k ls"命令,则会发现输出内容会多出几页,那是因为很多命令中都包含"ls"这个关键字。这条命令适合你只记得命令的几个字符,用来査找相关命令的情况。

在系统中还有两个命令。
  • whatis:这个命令的作用和 man -f 是一致的。
  • apropos:这个命令的作用和 man -k 是一致的。
不过这两个命令和 man 基本一致,所以了解就好。不过 Linux 的命令很有意思,想知道这个命令是干什么的,可以执行 whatis 命令;想知道命令在哪里,可以执行 whereis 命令;想知道当前登录用户是谁,可以执行 whoami 命令。

如果执行以上两个命令报错,那是因为 whatis 数据库没有建立。只要手工执行以下命令,重新建立 whatis 数据库即可。