在Linux下自我学习获得各类需要的知识(http://www.linuxdiyf.com/viewarticle.php?id=4056)
作者: 恒善喜 发布日期: 2005-12-04 查看数: 324 出自: http://www.linuxdiyf.com
转贴:
安装好了Unix/Linux类操作系统,却不知道拿它做点什么、也不知道它能做些什么……这是大多数初这朋友的疑惑。
我认为首先要做的是学会如何在Unix/Linux下获得知识,掌握学习方法。如何真有一天你要用Linux来做点什么时觉得孤立无助,你一定要学会用man命令。
man是什么?
首先在命令行输入man man回车看一下吧。把NAME和DESCRIPTION那两段英文看完了你就明白了。man是显示Unix/Linux的在线手册的命令。
典型情况下,man是用来查看一些命令、函数或文件的帮助手册的,另外它还可以显示一些gzip压缩格式的文件。
Unix/Linux的在线手册是什么?
一般情况下Linux下所有资源都会随操作系统一起发行,包括内核源代码。而在线手册是操作系统所有资源的一本很好的使用手册。你有不懂的命令时可以man一下这个命令,写程序时有不会用的函数时可以man一下该函数,甚至你不懂某个文件时都可以man一下这个文件(当然,这个文件一般来说是系统用到的一个配置文件或某个系统服务用到的配置文件)。
man手册资源的位置
一般情况下man的资源主要位于/usr/share/man目录下面。但如果你仔细看了man man的结果,并且对man.config也感兴趣并且man man.config过后,你就会明白其位置是由MANPATH变量决定的,你可以more /etc/man.config来看有哪些地方有man内容的位置。
单个man资源内容的组成
一般来说,man内容会分为NAME、SYNOPSIS、DESCRIPTION、OPTIONS、SEE ALSO、BUGS等部分。NAME是该内容的一个简单说明(一般是一句话给个定义似的);SYNOPSIS是大致说明,对于命令来说是命令的语法,对于函数来说是函数的定义;DESCRIPTION是该内容的一个简明介绍,让你对你查的内容大致有个印象;OPTIONS是在查询命令时的命令参数的详细解释;SEE ALSO是给你一些提示,相当于介绍你一些参考内容;BUGS是指明该命令或函数存在什么BUG,提醒你防止出现。
man资源的组成
有很多朋友说man资源分为8章,我觉得这只是说了主要部分,你ls /usr/share/man看一下就知道了,有man1、man2……man7、man8这样8个目录存在呢,但除了这之外还有其它的目录啊,何况还有其它的MANPATH规定的目录呢。所以具体多少章不是固定的,但Linux下大致相同内容的会归在同一个目录下,比如man1和man2目录所在的大致是一些系统命令,而man3是编程时的一些函数的用法,man5是些配置文件手册所在的目录……同样在/usr/X11R*/man目录下也有一些目录。具体是按什么来分目录的呢?各人具体根据各目录的内容理解不同了。
man资源的使用技巧
1、如果你在MANPATH变量所设定的目录(比如/usr/share/man/man1目录)里看到一个ln.1.gz的文件,那么你就可以man ln来查看fileame到底是个什么命令了。
2、man的一般用法是man SECTION name,即在指定的章节(SECTION)里查看name命令或函数的用法。但如果你不知道某个命令或函数在哪一章,你可以man -a name这样在所有MANPATH设定的地方查看name的手册。默认情况下man是显示完第一个手册页后就会退出,如果有-a参数就会搜索所有的资源了。
3、如果你觉得在Linux下看太困难或者你英文不太好想要借助“XX词霸”或“XX快译”来帮忙,那么你可以先把man手册存成文本文件然后ftp或samba共享到windows下打开来看吧。使用这么个命令就行了:
man man | col -bfp > man.txt
把man手册生成了一个man.txt文件了,借助翻译工具来看吧
4、编写自己的man资源,如果你自己写了一个非常好的函数或命令加到系统了,比如你写了一个MyDate命令来显示你需要的格式日期,那你也可以为你的MyDate命令来写个手册。很简单,你编辑(用vi或其它任何文本编辑工具都可以)一个MyDate文件,里面是你的命令使用方法说明,然后用gzip MyDate命令把这手册压缩一下生成一个MyDate.gz,然后把这个文件copy到某个MANPATH指定的目录,比如cp MyDate.gz /usr/share/man/man2,以后你就可以man MyDate来查看你的命令使用方法了。
5、安装好一个Linux操作系统后能做什么呢?你要学系统管理?就把/usr/share/man1和/usr/share/man2目录里的所有命令都man一下吧,都掌握了你绝对是系统管理专家了!想要学C编程?man一下gcc、g++、gdb等命令。或者你ls一下各个bin目录,比如/usr/bin、/bin、/sbin等,然后依次man一下你所看到的吧。
学习Linux最大的资源在你电脑上,如果你没安装,在你的光盘上一定有。想要学内核吗?赶快去看看/usr/src/linux*目录下面的所有东西吧。
如果你有任何疑问,讨论问题等请点击这到红联论坛中来! 网址:http://www.linux110.com/bbs
【论坛浏览】 【我来说两句】 【打印】 字体 【大】 【中】 【小】
××××××××××××××××××××××××××××××××××××××××××××××
(转自:http://www.linuxforum.net/books/smth/Unix.AIX/00000006/00000014.htm)
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
[email protected]
===================
这个题目也不知道过不过时。最近刚好看到又一本书上提了一下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" ;-)