首页 > 代码库 > linux/unix man用法
linux/unix man用法
最近开始学习linux c编程,需要用到很多库函数和c标准库函数,发现原来man命令还可以用来查询函数原型。
比如输入man lseek可以获取函数lseek的原型和所属头文件。
有些函数名既是linux命令又是系统调用,如mkdir,可以输入man 2 mkdir获取该函数原型。只输入man mkdir获取的是命令mkdir的帮助。
对于库函数可以输入man 3 <库函数名> 获得帮助信息。man 3 opendir
对于系统开发经常需要查询函数还是非常方便的,另外在vim中可以用shift + k查询。
以下转自:http://blog.csdn.net/sunyubo458/article/details/5935248
在unix下面做开发,查看man手册是非常必要,也是非常需要的。如何更快速的使用man?
当然,平时有不会的命令,或者记不住命令的参数时,就会man一下,可是在unix man手册里有这样一个现象,比如你想查看一下read()这个C库函数的功能和参数以及用法。man read其结果呢?只会出shell的read命令的相关帮助信息,没有出现read()库函数的相关内容。
为何?
那是因为man的搜索顺序是根据man.cf中的设置来进行的。当man找到一个匹配时,就不再往下找了。所以当你想查看一下read()函数而不是想了解 read命令的使用时,光使用man read 是肯定不行。在我用的机子环境:
Machine hardware: sun4u
OS version: 5.8
Processor type: sparc
Hardware: SUNW,Ultra-250下.
这时使用man -s 2 read, 就强制man只搜索section 2中的文件(注意了:根据不同版本的unix可能不一样哦)
问题来了,什么是section?
Unix的man page(不用想太多了,man page 就是所说的参考手册页)是按照节(section)来组织的.当我们使用man ls的时候,会看到ls(1),这个括号中的1就表示ls的man page位于section 1。section通常是由一个主section名和一个可选的次section名组成.主section名通常是 一个数字,次section名通常是一个或多个字母组成. Solaris中各 section 所对应的内容:
1: User Commands and Utilities
2: System Calls
3: C Library Functions
4: File formats
5: Headers,tables and macros
6: Games and demos
7: Device and Network Interfaces
8: Maintance and Accounting commands
9: Device driver interfaces
使用-s参数就是要指写在哪一个session里找。要记住了,不同的版本,数字可能不一样,就是这样的方法了,试一下数字就可了,格式如:man -s 2 read.
附:man指令的其他相关资料
Linux系统提供了大量命令和许多实用工具软件。一些常用命令和实用软件的信息,我们可以使用系统提供的联机帮助手册获取。在 Linux联机帮助手册上,几乎每个命令都有说明。因此,当用户对于Linux上的一个命令不会用或是不太了解时,就请使用联机帮助命令。
Linux系统的联机手册中有大量的可用信息,根据其内容分成若干节。
1. 章节说明:
1 一般使用者的命令
2 系统调用的命令
3 C语言函数库的命令
4 有关驱动程序和系统设备的解释
5 配置文件的解释
6 游戏程序的命令
7 其他的软件或是程序的命令
8 有关系统维护的命令
n shell内部命令章节号
2. man 命令
这个命令格式化并显示在线的手册页。通常使用者只要在命令 man 后,输入想要获取的命令的名称(例如 ls ),man 就会列出一份完整的说明,其内容包括命令语法、各选项的意义以及相关命令等。
该命令的一般形式为∶man [选项] 命令名称
命令中主要选项的含义分别为∶
-M 路径 指定搜索 man 手册页的路径
-S 章节列表 指定所要查看的章节列表
-a 显示所有章节
章节号 指定所要查看的章节号
(1)所有的手册页都属于一个特定的领域,用一个字符来表示。
Linux下最通用的领域及其名称及说明如下:
领域 名称 说明
1 用户命令, 可由任何人启动的。
2 系统调用, 即由内核提供的函数。
3 例程, 即库函数。
4 设备, 即/dev目录下的特殊文件。
5 文件格式描述, 例如/etc/passwd。
6 游戏, 不用解释啦!
7 杂项, 例如宏命令包、惯例等。
8 系统管理员工具, 只能由root启动。
9 其他(Linux特定的), 用来存放内核例行程序的文档。
n 新文档, 可能要移到更适合的领域。
o 老文档, 可能会在一段期限内保留。
l 本地文档, 与本特定系统有关的。
例如:man ls就会有LS(1)
(2)man的一些常用参数和用法
man -a cmd
打开所有领域内的同名帮助,例如 man fam ,你首先会进入一个fam(1M)的命令版fam帮助,你再按q键
就会进入FAM(3X),库函数版的帮助
man -aw cmd
显示所有cmd的所有手册文件的路径,如 man -aw fam 就是
/usr/share/man/man1/fam.1m.gz
/usr/share/man/man3/fam.3x.gz
man 领域代号 cmd
直接指定特定领域内搜索手册页,如 man 3 fam 直接进入库函数版的帮助
man -M cmd
指定手册文件的搜索路径,如 man -M /home/mysql/man mysql 显示的就是你安装的mysql的帮助,
而不是系统自带的旧版mysql的帮助
man cmd | col -b > cmd.txt
把man手册信息输出到文本文件
LANG=语言代号
man -w cmd
man 特定语言manpage文件的路径
查看特定语言版本的手册页
例如,要查看mplayer的中文man
shell> LANG=zh
shell> man -w mplayer
/usr/share/man/zh/man1/mplayer.1.gz
新开一个shell窗口(或在原窗口 shell> LANG=en_US.UTF-8)
shell> man /usr/share/man/zh/man1/mplayer.1.gz
(3)man的配置文件/etc/man.config
如果你不想每次man cmd都要用-M指定路径,那么可以通过修改配置文件,添加内容如
MANPATH /home/mysql/man
man在各领域的搜索次序可以通过修改
MANSECT 1:8:2:3:4:5:6:7:9:tcl:n:l:p:o
实现,一般不推荐修改。