man
是manual
的简写,中文是使用手册
。
man
的目标是让UNIX和GNU/Linux系统的使用者非常容易的查找到有关Shell命令、系统调用、库函数等的使用手册。
man
统一了不同软件的帮助系统,只要遵守man
的规定,就可以编写出风格一致的使用手册, 这大大简化了使用者的学习成本,也简化了软件开发者编写使用手册的难度。
man
是一个开源的软件包,由于实现的不同,大致可以分为2大版本:man 1.x
和man 2.x
。
man 2.x
是个新的独立项目,被称为man-db。
操作系统 | 包管理器 | 安装命令 |
---|---|---|
macOS | HomeBrew | brew install man-db |
GNU/Linux | HomeBrew | brew install man-db |
apt | sudo apt-get install -y man-db | |
CentOS | yum | sudo yum install -y man |
dnf | sudo dnf install -y man | |
openSUSE | zypper | sudo zypper install -y man |
Alpine Linux | apk | sudo apk add man |
pacman | sudo pacman -Syyu --noconfirm | |
Gentoo Linux | Portage | sudo emerge sys-apps/man-db |
大多数UNIX和GNU/Linux中都预安装了man
命令。 不过,有些裁剪过的系统就没有预安装该命令,比如Ubuntu、CentOS、Fedora等 的Docker基础镜像就没有预安装该命令,如果我们想把该镜像当作虚拟机来使用的话, 我们免不了要查看使用手册,就需要我们自己安装man
了。
man
仅仅是个使用手册系统。它只提供生成手册的工具和查看手册的工具,它并不提供手册内容, 手册内容由其他软件开发者提供。
一般的软件都会在安装该软件的同时也安装相关的使用手册,有的软件可能会把使用手册单独当成一个软件包, 通常这些软件的名称会带有doc
字样。
Linux Man Pages
官网:https://www.kernel.org/doc/man-pages
Linux Man Pages
就是GNU/Linux系统相关的使用手册, 由Linux内核组维护。
Linux Man Pages
是一个独立的软件包。某些裁剪过的系统中就没有预安装,如有查看的需要,需要自己安装。
通过包管理器安装Linux Man Pages
:
操作系统 | 包管理器 | 安装命令 |
---|---|---|
apt | sudo apt-get install -y manpages | |
CentOS | yum | sudo yum install -y man-pages |
dnf | sudo dnf install -y man-pages | |
openSUSE | zypper | sudo zypper install -y man-pages |
Alpine Linux | apk | sudo apk add man-pages |
pacman | sudo pacman -Syyu --noconfirm | |
Gentoo Linux | Portage | sudo emerge sys-apps/man-pages |
man
命令的使用格式:
man [参数] [章节号] 命令或函数
man
手册共有以下几个章节:
章节号 | 说明 |
---|---|
1 | Standard commands (标准命令) |
2 | System calls (系统调用) |
3 | Library functions (库函数) |
4 | Special devices (设备说明) |
5 | File formats (文件格式) |
6 | Games and toys (游戏和娱乐) |
7 | Miscellaneous (杂项) |
8 | Administrative Commands (管理员命令) |
章节号是可以省略的,省略了章节号,就会按照章节先后次序依次进行搜索的,找到就停止搜索,并显示。 比如,Shell
命令里有一个sleep
命令,而库函数里面也有一个sleep
函数, 如果你想查询sleep
库函数的用法,就必须要带上章节号3了,否则你只能查到sleep
命令。
示例:
man sleep
运行效果如下:
示例:
man 3 sleep
运行效果如下:
man xx
命令的本质就是使用cat xx | less
命令查看一个文本文件而已。所以, 在man xx
命令中需要退出,请按"q
"键!
w
是where
的首字母。
显示手册的所在路径。
示例:
a
是all
的首字母。
示例1:
显示手册的所有的所在路径。
示例2:
man -a ls
打开所有的手册。
/etc/man.conf
是man
命令的配置文件。
MANPATH
环境变量可以明确的指明使用手册文件的所在路径。
PATH
环境变量里的路径中存在兄弟目录是man
的,可以不加入MANPATH
环境变量。
在Ubuntu、CentOS、Fedora等 的Docker基础镜像中使用man
命令查看使用手册的时候,会出现No manual entry for xx
的提示,即便是安装了Linux Man Pages
也还是于是无补, 这是因为Docker基础镜像的制作者为了减小镜像的体积,故意修改了包管理器的逻辑, 使得安装Linux Man Pages
的时候没有安装真正的手册文件,不同的系统实现方法不一样,但是思路都是一样的, 就是在使用包管理器安装软件的时候把man
目录中的内容删除掉。
把/etc/dpkg/dpkg.cfg.d/excludes
配置文件删除,然后卸载掉Linux Man Pages
,重新安装。
把/etc/yum.conf
中的tsflags=nodocs
行注释掉,然后卸载掉Linux Man Pages
,重新安装。
把/etc/dnf/dnf.conf
中的tsflags=nodocs
行注释掉,然后卸载掉Linux Man Pages
,重新安装。