目录
Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。
Linux 的man手册共有以下几个章节:
man相关说明
基本介绍
通过 man man 可以看到相关说明。
实际上man命令并非仅仅能查看命令或者函数的介绍,在linux中,有丰富的帮助手册信息,并且每一个手册都有一个编号。编号和对应内容如下:
编号 | 代表内容 |
---|---|
1 | 可执行程序或shell命令,如ls |
2 | 系统调用,如chdir |
3 | 库函数,如printf |
4 | 设备或特殊文件,如tty |
5 | 配置文件格式或约定 |
6 | 游戏 |
7 | 杂项 |
8 | 管理命令,通常只有root用户可以使用 |
9 | 内核例程 |
n | 内置命令,如cd |
对于内置命令,还可以使用help命令查看帮助手册,例如:
help cd
判断命令是什么类型可使用type命令,例如:
type cd
cd is a shell builtin
手册内容
多数手册包含以下几部分内容:
NAME 功能的简单描述
SYNOPSIS 语法格式
DESCRIPTION 描述
OPTIONS 选项
ERRORS 描述出错场景,这在排查错误时很有帮助
NOTES 注意事项
FILES 相关文件,例如对于man命令的FILES部分内容显示了它的配置文件位置等信息
EXAMPLES 使用示例,会提供一些简单的示例
BUGS 存在的bug,当遇到奇怪的问题时,不妨看看当前命令是否有已知的bug
基本查看
手册的查看和less查看文本类似,可以参考《文本查看篇》或查看less命令的使用,这里介绍基本操作:
空格 向下翻页
Home 回到第一页
End 跳到最后一页
/string 向前搜索string字符串
?string 向后搜索string字符串
n 下一个匹配字符
N 上一个匹配字符
q 退出
工作流程简述
1.搜索$PATH环境变量指定路径。
2.搜索/etc/manpath.config文件中MANPATH中指定的路径。
3.使用指定的解压工具进行解压处理。
4.使用文本查看命令显示手册内容。
配置文件的位置可通过查看man man FILES部分内容找到:
未指定章节时查找顺序
简单说明一下manpath.config中的SECTION,它指定了优先输出的手册顺序。例如:
SECTION 1 n l 8 3 2 3posix 3pm 3perl 5 4 9 6 7
这里它最先显示的是1,即shell命令的帮助手册,其次是n,即内置命令的帮助手册。以此类推。当然,前提是这些手册都有。
查看man手册的查找路径
也可以通过manpath命令查看man手册所在路径:
manpath
/usr/local/man:/usr/local/share/man:/usr/share/man:/usr/lib/jvm/java-8-oracle/man
安装man手册
软件包安装
man手册
yum install -y man man-db man-pages
yum list installed |grep -i man
man中文安装包
yum -y install manpages-zh
如果查不到manpages-zh中文包,则可以使用如下命令搜索
yum list |grep man.*zh
man-pages-zh-CN.noarch 1.5.2-4.el7 @base
由此可以找到以上安装包,如果找不到,执行 yum -y update 更新安装包。
执行安装命令
sudo yum install man-pages-zh-CN.noarch
源码安装
源码从这里下载
下载后解压缩,从终端进入解压后的文件夹,输入命令:
sudo make install
这个命令是把man安装到/user/man目录下面的,这样就已经成功的安装了man
但是如果你不想安装, 我们可以直接在解压后的目录使用
假设解压后文件夹路径是:/home/man,如果不想安装,可以用:
man –M /home/man + 所查询的命令
解释:man -M 路径 定义一组查找man手册页的目录。如果没有指定此参数,系统环境变量 MANPATH将使用。 如果查无到此环境变量,则按默认 /etc/man.config 文件中指定的查找。一个空的 MANPATH 子字 符串表示使用默认清单。
安装中文语言包手册
在安装之前,运行locale 命令来查看自己的语言环境是什么,主要有影响的是LC_ALL,LC_CTYPE 和 LANG 变量的值。
如果语言环境是 zh_CN.UTF-8,可以运行make u8 && makeinstall-u8;如果语言环境是GB2312,GBK 或者 GB18030,可以运行 make gb && makeinstall-gb;
或者,可以下载对应的rpm包来安装,同样简单。对于zh_CN.UTF-8,应当安装man-pages-zh_CN-1.x,对于 GB2312,GBK,GB18030,应当安装 man-pages-zh_CN-gb-1.x。请参阅讨论版上关于不同发行版的系统与其默认中文编码的说明。
环境变量配置
我们前面安装了中英文的man包, 可以通过设置中英文显示语言来设定其显示
如果希望终端显示为中文, 则可以通过设置LANG和LANGUAGE变量来更新语言环境
在~/.bashrc中设置
# chinese
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
英文则设定
# english
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
但是中文翻译的不太好, 我们多数情况下还是希望使用英文的, 而更改环境变量的方式总是很麻烦, 有什么方式可以一劳永逸呢.
首先差找到我们的man手册安装在哪里
可以使用sudo find / -name man
查找
我的man手册安装在了/usr/share/man下
其中zh_开头的就是中文包的man手册,
zh_CN简体中文
zh_HK香港繁体
zh_TW台湾繁体
我们可以使用-M选项指定man手册
比如使用
man -M /usr/share/man/zh_CN/ 2 read
就可以使用中文手册查看read系统调用
下面我们为其添加一个别名cman, 这样我们可以很方便的使用中文的man手册
在~/.bashrc中添加
alias cman='man -M /usr/share/man/zh_CN'
这样以来我们的man是英文的, 而cman则是一个中文的man手册
man手册的使用
我们输入 man ls,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章(对应编号, 每个编号对应一个章节)
同样,我们输入“man ifconfig”它会在最左上角显示“IFCONFIG(8)”。
但是有些名称可能对应很多章节的信息,因此可以这样输入命令:“man [章节号] 手册名称”, 来指定某个章节比如我们前面的man 2 read
就是查看第2章节(系统调用)中的read
而我们可以使用-f选项来查看命令所在的章节
查找指定章节手册
一般的命令或者库函数的帮助手册都很好查看,但是如果你想查看write函数的帮助手册,使用下面的命令是看不到的:
man write
因为它既是一个用户命令也是一个系统调用名称,按照前面所设置的顺序,它会优先显示用户命令的帮助手册。因此,如果我们想直接查看作为系统调用的write的帮助手册,直接使用下面的方式即可:
man 2 write #2表明从系统调用手册中查找
查找手册所在位置
如果仅仅是想查看手册在什么位置,可使用-w (where)参数,例如:
man -w ls
/usr/share/man/man1/ls.1.gz
查找包含关键字的手册
有时候我们需要查看包含某些关键字的手册,但是又不知道具体是那个手册,这个时候可以使用下面的方式:
man -k touch #查找包含touch关键字的手册(模糊匹配)
git-merge-tree (1) - Show three-way merge without touching index
synaptics (4) - touchpad input driver
syndaemon (1) - a program that monitors keyboard activity and disables...
touch (1) - change file timestamps
man -K XX 存在多个查找时,操作如下所示:
查看所有手册
-a, --all
By default, man will exit after displaying the most suitable manual page it finds. Using this option forces man to display all the manual pages with names that match the search criteria.
使用-a参数即可,它会展示所有相关手册
man -a open
# man -aw ip
/usr/share/man/man8/ip.8.gz
/usr/share/man/man7/ip.7.gz
# man -a ip
# man -aWw git diff
/usr/share/man/man1/git-diff.1.gz# man -a git diff