man所代表的的是英文单词manual,也就是帮助手册的意思,Linux中的man手册就是提供给用户在有不明白的命令或者函数的时候,去查询它的功能、使用方法、头文件以及所需参数的帮助手册。
man man命令可以查看man手册的内容(部分如下):
MAN(1) Manual pager utils MAN(1)
NAME
man - an interface to the on-line reference manuals
SYNOPSIS
man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-m system[,...]] [-M path] [-S list] [-e extension] [-i|-I]
[--regex|--wildcard] [--names-only] [-a] [-u] [--no-subpages] [-P pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justification] [-p
string] [-t] [-T[device]] [-H[browser]] [-X[dpi]] [-Z] [[section] page[.section] ...] ...
man -k [apropos options] regexp ...
man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ...
man -f [whatis options] page ...
man -l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-P pager] [-r prompt] [-7] [-E encoding] [-p string] [-t] [-T[device]]
[-H[browser]] [-X[dpi]] [-Z] file ...
man -w|-W [-C file] [-d] [-D] page ...
man -c [-C file] [-d] [-D] page ...
man [-?V]
在我们查看man手册中可以发现如下man手册的分类:
1 Executable programs or shell commands//可执行程序和shell命令
2 System calls (functions provided by the kernel)//系统调用函数
3 Library calls (functions within program libraries)//库调用函数
4 Special files (usually found in /dev)//设备或特殊文件
5 File formats and conventions eg /etc/passwd//文件格式和规则
6 Games//游戏及其他
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)//宏、包及其他杂项
8 System administration commands (usually only for root)//系统管理员相关的命令
9 Kernel routines [Non standard]//跟kernel内核有关的文件
其中我们常用前3个手册,第1手册中是用来存放可执行程序和shell命令的;第2个手册用来存放系统调用函数的,这些函数由内核提供;第3个手册是用来存放库调用函数的,这些函数由第三方库来提供。
那么我们如何区分我们要查的函数是属于系统调用还是库函数呢?
我们可以首先对此函数调用man -k来看看它属于哪些手册,有的也可能同时属于多个手册,举例:
:~$ man -k printf
Printf (3o) - Formatted output functions.
asprintf (3) - print to allocated string
caca_conio_cprintf (3caca) - The libcaca public header.
caca_conio_printf (3caca) - The libcaca public header.
caca_printf (3caca) - These functions provide low-level character printing routines and higher level graphics functions.
caca_vprintf (3caca) - These functions provide low-level character printing routines and higher level graphics functions.
dprintf (3) - formatted output conversion
fprintf (3) - formatted output conversion
fwprintf (3) - formatted wide-character output conversion
printf (1) - format and print data
printf (3) - formatted output conversion
set_matchpathcon_printf (3) - set flags controlling the operation of matchpathcon or matchpathcon_index and configure the behaviour of validity checking and er...
snprintf (3) - formatted output conversion
sprintf (3) - formatted output conversion
Stdlib.Printf (3o) - no description
swprintf (3) - formatted wide-character output conversion
vasprintf (3) - print to allocated string
vdprintf (3) - formatted output conversion
vfprintf (3) - formatted output conversion
vfwprintf (3) - formatted wide-character output conversion
vprintf (3) - formatted output conversion
vsnprintf (3) - formatted output conversion
vsprintf (3) - formatted output conversion
vswprintf (3) - formatted wide-character output conversion
vwprintf (3) - formatted wide-character output conversion
wprintf (3) - formatted wide-character output conversion
可以见得printf在1手册和3手册里都有,而通过我们自己的分析可以判断想要查询的是哪一个(不确定,也可以对应手册都试一下来做判断)。
举例(查询printf库函数):
:~$ man 3 printf
我们可以在手册中具体得到printf库函数的头文件和参数等:
#include <stdio.h>
int printf(const char *format, ...);
以上就是今天要讲的内容,本文简要介绍了man手册和man命令,讲解了man命令的使用方法,希望通过本章可以让才开始使用Linux的小伙伴学到man这个方便的工具,并在之后的学习中充分用到此工具。