BBS水木清华站∶精华区
发信人: NightOwl (Owlet), 信区: Unix
标 题: Man Pages的一些秘密 (转载)
发信站: BBS 水木清华站 (Tue Apr 18 02:44:43 2000)
【 以下文字转载自 Linux 讨论区 】
【 原文由 NightOwl 所发表 】
发信人: NightOwl (Demon&Daemon), 信区: Linux
标 题: Man Pages的一些秘密
发信站: 紫 丁 香 (Mon Apr 17 13:52:30 2000), 转信
Man Pages的一些秘密
--version1.0
===================
NightOwl
2000.4.16
NightOwl2000@263.net
===================
这个题目也不知道过不过时。最近刚好看到又一本书上提了一下Unix下Man的格
式和用法,然后根据"man man"的结果和平时在BBS上看到的大虾高招,就自己总结
了一下。希望能对那些和我以前一样对Man Pages不大明白的朋友有些启发。;-)
Unix/Linux里最好的说明和帮助文档我认为就是那些在线帮助Manual Pages了,
很多时候,碰到不大明白的命令或者是一些函数的用法的时候,我就会开个man来看
看究竟。不过以前没有细究Man Pages里的名堂,现在才算是略知一二.下面就把我所
知的写下来,请各位补充未完尽或错误之处。(如有建议和意见,烦用EMail告知我一
声,谢谢!)
1。Unix/Linux下Man Pages的节(section)的含义说明:
Header : 标题;
NAME : 对你所Man的命令/函数的功能概述;
SYNOPSIS : 对你所Man的命令/函数用法的简单描述;
AVAILABILITY : 可用性说明;
DESCRIPTION : 对你所Man的命令/函数的详细描述;
OPTIONS : 该命令的所有可选项的详细说明;
RETURN VALUE : 如果是函数,则列出函数返回值;
ERRORS : 如果函数调用出错.则列出所有出错的值和可能引起错误的
原因;
FILES : 该命令/函数所用到的相关系统文件;
ENVIRONMENT : 和该命令/函数相关的环境变量;
NOTES : 表示不常用的用法或者是实现的细节;
BUGS : 已知的错误和警告(可能附有解决办法);
HISTORY : 该命令/函数的历史发展;
SEE ALSO : 可以参照的其他的相关命令/函数
Others.... : 和一些具体命名/函数有关的特殊节
比如在"man"自身的Man Pages里就有一个"CAT PAGES"节用来
描述如何保存Man Pages当前的格式.
举例如下:(请在你的系统中试验以获得感性了解;-)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$man apropos
apropos(1) apropos(1)
NAME
apropos - search the whatis database for strings
SYNOPSIS
apropos keyword ...
DESCRIPTION
apropos searches a set of database files containing short
descriptions of system commands for keywords and displays
the result on the standard output.
SEE ALSO
whatis(1), man(1).
Jan 15, 1991
废话:上面大写的词就是那些"节(section)"了.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2.Unix/Linux下的Man Pages的分类:
你想要通过man来得到在线帮助的主题可能会在Unix/Linux里扮演很多角色。比如
"write"既是一个命令同时它又是一个系统调用。那么怎么样才能得到你想要得到的�
个角色的帮助呢?原来,在Unix/Linux里,Man Pages已经按功能分好了8个类别了,
如下表所示:
------------------------------
| 类: | 内容: |
------------------------------
| 1 : | 用户命令 |
| 2 : | 系统调用 |
| 3 : | C库函数 |
| 4 : | 设备与网络的接口 |
| 5 : | 文件格式 |
| 6 : | 游戏和演示 |
| 7 : | 环境、表、Troff宏 |
| 8 : | 系统维护 |
------------------------------
<注:本表摘自本文末所注明的参考资料一>
在Unix/Linux里,可以用"man n command/fuction"来得到相关的功能说明;这
里"n"表示你所得到的功能的类号,比如,你想得到"write"作为命令时的man page,
就用"man 1 write"这个格式,如果你想得到的是"write"作为系统调用的man page时�
就要用"man 2 write"了。
将结果对比如下:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
WRITE(1) Linux Programmer's Manual WRITE(1)
NAME ↑
write - send a message to another user ← 看看这里
SYNOPSIS
write user [ttyname]
++++++++++++++++++++++++++++++++++++++++++++++++++
WRITE(2) Linux Programmer's Manual WRITE(2)
NAME ↑
write - write to a file descriptor ← 再看看这里
SYNOPSIS
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3. 和Man有关的部分常用环境变量
(与Man有关的环境变量可以在/etc/man.confl里设置,也可以通过命令行参数来
设置.)
MANPATH : 如果设置了该变量,则表示man根据MANPATH指定的路径来搜索
man pages;
MANSECT : 如果设置了该变量,则表示指定要搜索那些节(section);
MANWIDTH : 如果设置了该变量,则表示显示的宽度;
MANPAGER : 该变量是用来设置显示man page的程序.如果没有设该变量,则用
PAGER变量的值,如果PAGER变量也没有定义,则用默认的"/usr/bin/
less -is"程序来显示;
4.和Man Pages有关的一些技巧
Question1.如何把man显示在屏幕的内容输出到文件里以便打印出来?
Answer1 :大家可能都试过"man n foo >foo.txt"了,也发现了用编辑器看fo.txt
时会有很多的"N^HNA^HAM^HME^HE"之类的符号,这样的结果当然不能让人满意.那么怎
么做呢?下面的方法来自哈工大的baggio大虾:
"man n foo | col -b > foo.txt"。
这样一来,输出的结果就是你希望的了。原来,man为了能按照它的显示规则显示文
本的内容,在文本里加了一些控制字符。而col命令刚好可以用来消除控制字符的。通
过管道把man出来的结果送到col里处理一下就可以去掉那些讨厌的控制字符了。是不是
很方便?(感谢baggio的高招!;-)
Question2.怎么样才能知道某个主体有几种类别呢?
Answer2 : 这个问题也得靠一个和man相关的命令来解决--"whatis",比如你可
以用"whatis bar" 来得到bar的所有类别。"whatis bar"可以显示与bar有关的所有
的man page的名称和类别号。你快试试看。;-)
Question3....(我就知道这么多,其他的等你来补充;-)
Answer3....
5.后话:
本来还想把man的命令行参数也写出来,想想好像用的人的不是很多就罢了(因为
我不用)关于man的详细的介绍当然要看man的man pages了.我想通过上面的简单的描
述 ,你应该可以很顺手的用man来看"man"的manual page了.(呵呵,一大堆"man"),我
就不废话了.;-).
另外, 如果你有别的有关于man的操作技巧,拜托请你告诉我呀.
6.参考资料:
(1). <<Pratical Unix Programming, A Guide to Concurrency,Communication,
and Mutilthreading>> Kay A. Robbins & Steven Robbins
中译本:<<实用Unix编程>> 机械工业出版社1999.10第一版
(2). Manual Pages' "Man" page ,ie. "man man" ;-)
--
� @@@@ @@@@
@@@@@ @@ N @@ @@@@@ 得失随缘
\ @@@@ @ @@ i @@ @ @@@@ / 心无增减
@@@ @@ g @@ @@@
@@@ h @@@
\ t /
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.118.179.51]
BBS水木清华站∶精华区