man
1.1、man简介

manmanual的简写,中文是使用手册

man的目标是让UNIXGNU/Linux系统的使用者非常容易的查找到有关Shell命令、系统调用、库函数等的使用手册。

man统一了不同软件的帮助系统,只要遵守man的规定,就可以编写出风格一致的使用手册, 这大大简化了使用者的学习成本,也简化了软件开发者编写使用手册的难度。

man是一个开源的软件包,由于实现的不同,大致可以分为2大版本:man 1.xman 2.x

man 2.x是个新的独立项目,被称为man-db

1.2、通过包管理器安装man
操作系统包管理器安装命令
macOSHomeBrewbrew install man-db
GNU/LinuxLinuxBrewbrew install man-db
aptsudo apt-get install -y man-db
CentOSyumsudo yum install -y man
dnfsudo dnf install -y man
openSUSEzyppersudo zypper install -y man
Alpine Linuxapksudo apk add man

Arch Linux

ArcoLinux

Manjaro Linux

pacmansudo pacman -Syyu --noconfirm
sudo pacman -S    --noconfirm man
Gentoo LinuxPortagesudo emerge sys-apps/man-db

大多数UNIXGNU/Linux中都预安装了man命令。 不过,有些裁剪过的系统就没有预安装该命令,比如UbuntuCentOSFedora等 的Docker基础镜像就没有预安装该命令,如果我们想把该镜像当作虚拟机来使用的话, 我们免不了要查看使用手册,就需要我们自己安装man了。

1.3、man-pages

man仅仅是个使用手册系统。它只提供生成手册的工具和查看手册的工具,它并不提供手册内容, 手册内容由其他软件开发者提供。

一般的软件都会在安装该软件的同时也安装相关的使用手册,有的软件可能会把使用手册单独当成一个软件包, 通常这些软件的名称会带有doc字样。

1.3.1、Linux Man Pages

Linux Man Pages官网:https://www.kernel.org/doc/man-pages

Linux Man Pages就是GNU/Linux系统相关的使用手册, 由Linux内核组维护。

Linux Man Pages是一个独立的软件包。某些裁剪过的系统中就没有预安装,如有查看的需要,需要自己安装。

通过包管理器安装Linux Man Pages

操作系统包管理器安装命令
aptsudo apt-get install -y manpages
CentOSyumsudo yum install -y man-pages
dnfsudo dnf install -y man-pages
openSUSEzyppersudo zypper install -y man-pages
Alpine Linuxapksudo apk add man-pages

Arch Linux

ArcoLinux

Manjaro Linux

pacmansudo pacman -Syyu --noconfirm
sudo pacman -S    --noconfirm man-pages
Gentoo LinuxPortagesudo emerge sys-apps/man-pages
1.4、man命令

man命令的使用格式:

man [参数] [章节号] 命令或函数

man手册共有以下几个章节:

章节号说明
1Standard commands (标准命令)
2System calls (系统调用)
3Library functions (库函数)
4Special devices (设备说明)
5File formats (文件格式)
6Games and toys (游戏和娱乐)
7Miscellaneous (杂项)
8Administrative Commands (管理员命令)

章节号是可以省略的,省略了章节号,就会按照章节先后次序依次进行搜索的,找到就停止搜索,并显示。 比如,Shell命令里有一个sleep命令,而库函数里面也有一个sleep函数, 如果你想查询sleep库函数的用法,就必须要带上章节号3了,否则你只能查到sleep命令。

示例:

man sleep

运行效果如下:

示例:

man 3 sleep

运行效果如下:

man xx命令的本质就是使用cat xx | less命令查看一个文本文件而已。所以, 在man xx命令中需要退出,请按"q"键!

1.4.1、man -w

wwhere的首字母。

显示手册的所在路径。

示例:

1.4.2、man -a

aall的首字母。

示例1:

显示手册的所有的所在路径。

示例2:

man -a ls

打开所有的手册。

1.5、/etc/man.conf

/etc/man.confman命令的配置文件。

1.6、相关环境变量
1.6.1、MANPATH

MANPATH环境变量可以明确的指明使用手册文件的所在路径。

PATH环境变量里的路径中存在兄弟目录是man的,可以不加入MANPATH环境变量。

1.7、No manual entry for xx

UbuntuCentOSFedora等 的Docker基础镜像中使用man命令查看使用手册的时候,会出现No manual entry for xx的提示,即便是安装了Linux Man Pages也还是于是无补, 这是因为Docker基础镜像的制作者为了减小镜像的体积,故意修改了包管理器的逻辑, 使得安装Linux Man Pages的时候没有安装真正的手册文件,不同的系统实现方法不一样,但是思路都是一样的, 就是在使用包管理器安装软件的时候把man目录中的内容删除掉。

1.7.1、Ubuntu的解决办法

/etc/dpkg/dpkg.cfg.d/excludes配置文件删除,然后卸载掉Linux Man Pages,重新安装。

1.7.1、CentOS的解决办法

/etc/yum.conf中的tsflags=nodocs行注释掉,然后卸载掉Linux Man Pages,重新安装。

1.7.2、Fedora的解决办法

/etc/dnf/dnf.conf中的tsflags=nodocs行注释掉,然后卸载掉Linux Man Pages,重新安装。