Linuxman命令详细介绍
知道linux帮助⽂件(man-pages,⼿册页)⼀般放在,$MANPATH/man ⽬录下⾯,⽽且按照领域与语⾔放到不同的⽬录⾥⾯。看了上⼀章,要那个命令使⽤相关⼿册,只要我们按照领域区分,到对于⽬录去查看与命令对应的⽂件解压,cat file 就可以看到⼀篇详细的⽂档了。但是与快速索引查帮助相差太远了。linux有⼀个很好⼯具,就是man 它会按照系统设计帮助⽬录,在各个⽂档⾥⾯查询,并且显⽰内容。接下来,主要讲⼀下这个命令使⽤以及配置说明,还有⼀些使⽤实例。
man命令使⽤
man命令:可以通过⼀些参数,快速查询linux帮助⼿册,并且格式化显⽰。
使⽤语法:
man [-adfhktwW] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] title..
参数⽤法:
参数备注
man命令常⽤参数
-a显⽰所有匹配项
-d显⽰man查照⼿册⽂件时候,搜索路径信息,不显⽰⼿册页内容
-D同-d,显⽰⼿册页内容
-f同命令whatis ,将在whatis数据库查以关键字开同的帮助索引信息
-h显⽰帮助信息
-k同命令apropos 将搜索whatis数据库,模糊查关键字
-S list指定搜索的领域及顺序如:-S 1:1p httpd 将搜索man1然后 man1p⽬
-t使⽤troff 命令格式化输出⼿册页默认:groff输出格式页
-w不带搜索title 打印manpath变量带title关键字打印到⼿册⽂件路径,
默认搜索⼀个⽂件后停⽌
-
W同-w
section搜索领域【限定⼿册类型】默认查所有⼿册
man命令其它参数
-c显⽰使⽤ cat 命令的⼿册信息
-C指定man 命令搜索配置⽂件默认是fig
-K搜索⼀个字符串在所有⼿册页中,速度很慢
-M指定搜索⼿册的路径
-P pro使⽤程序pro显⽰⼿册页⾯默认是less
-B pro使⽤pro程序显⽰HTML⼿册页默认是less
-H pro使⽤pro程序读取HTML⼿册,⽤txt格式显⽰,默认是cat
-p str指定通过groff格式化⼿册之前,先通过其它程序格式化⼿册
它带的参数⾮常多,其实只有上⾯常⽤参数我们才经常使⽤,其它很多参数⼏本不会去修改。
man命令获得帮助⼀般过程
实例代码
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65[chengmo@centos5 ~]$ man -w passwd
/usr/share/man/man1/
#显⽰passwd帮助⽂件路径,passwd.1 通过名称知道这个是passwd命令帮助⼿册,那它的其它命令的呢?
[chengmo@centos5 ~]$ man -aw passwd
/usr/share/man/man1/
/
usr/share/man/man5/
#加⼊-a获得所有帮助⼿册⽂件地址,默认只会查⼀个
[chengmo@centos5 ~]$ man 5 passwd
#只得到passwd配置⽂件帮助信息,可以加⼊领域类型限制,如果知道5,默认是查询man5 ⽂件配置信息说明⼿册⽬录
[chengmo@centos5 ~]$ man -d passwd
Reading config file /fig
.....
found man directory /usr/man
using /usr/bin/less -is as pager
using /usr/bin/less -is as browser
using /bin/cat to dump HTML pages as text
path directory /bin is in the config file
adding /usr/share/man/zh_CN to manpath
adding /usr/share/man to manpath
found 'NROFF_OLD_CHARSET' in path
old charset of '/usr/share/man/man1/' is 'ISO-8859-1'
man:
not executing command:
(cd /usr/share/man && (echo ".ll 11.8i"; echo ".nr LL 11.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c --legacy ISO-8859-1 -mandoc 2>/dev/null | /usr/bin/less -is)
#man -d 返回man 执⾏过程搜索查⽅法,以及查询⼿册通过怎么样格式化语句显⽰。都会列出来
#可以看到,指定pages,borwser输出命令对应⽂件,html输出⽂件,搜索路径,由于我当前LANG=zh_
CN.gb2312因此,添加了zh_CN ⽬录搜索
#最终执⾏命令时候,通过⼀系列格式转换命令,最终有less显⽰
[chengmo@centos5 ~]$ man -S 1:2 passwd
#在领域类型是:1:2 范围内查⼿册,对应⽬录分别是man1 ,man2
[chengmo@centos5 ~]$ man -f httpd
httpd                (8)  - Apache Hypertext Transfer Protocol Server
httpd              (rpm) - Apache HTTP Server
httpd-devel        (rpm) - Development tools for the Apache HTTP server.
#在whatis数据库(有所有⽹站man帮助以及cat,doc帮助信息索引)中查询,⽂件标题以:http开头信息的⽂档
#中间的(8) 对应我们可以⽤:man 8 httpd 调⽤,对于显⽰(rpm)实际上显⽰有个httpd帮助信息,是属于⼀个httpd rpm安装包,通过man rpm httpd查看不了。可以通过rpm -ql httpd 查安装包
[chengmo@centos5 ~]$ man -k httpd
CGI::Carp            (3pm)  - CGI routines for writing to the HTTPD (or other) error log
httpd                (8)  - Apache Hypertext Transfer Protocol Server
httpd              (rpm) - Apache HTTP Server
httpd-devel        (rpm) - Development tools for the Apache HTTP server.
httpd_selinux        (8)  - Security Enhanced Linux Policy for the httpd daemon
lighttpd            (1)  - a fast, secure and flexible webserver
lighttpd            (rpm) - Lightning fast webserver with light system requirements
lighttpd-fastcgi    (rpm) - FastCGI module and spawning helper for lighttpd and PHP configuration
ncsa_auth            (8)  - NCSA httpd-style password file authentication helper for Squid
#在whatis数据库中,查询包含httpd所有帮助⼿册,以及安装包. 可以通过:rpm -ql lighttpd
[chengmo@centos5 ~]$ rpm -ql lighttpd | grep gz
/usr/share/man/man1/
#其实这个包刚好是:lighttpd            (1)  - a fast, secure and flexible webserver 帮助⼿册
66 67[chengmo@centos5 ~]$ man -w
/usr/kerberos/man:/usr/local/share/man:/usr/share/man/zh_CN:/usr/share/man:/usr/local/man #显⽰man 命令查⼿册的路径
对于:whatis数据库,以及中⽂化linux帮助⽂件这⾥先不分析。
⼀般遇到⼀个不是很熟悉命令可以先通过:
man -k command1 查询所有类似帮助⽂件信息,这样输出最多也可以⽤:
man -f command1 查询以command1开头所有相关帮助信息列表如果发现有类似:command1 (5)
man 5 command1 通过直接定位5获得帮助信息
man命令搜索配置⽂件(fig配置⽅法)
man这个命令为什么功能这么神奇,能够这么⽅便快捷索引出系统帮助信息,其它与它的⼀个配置⽂件分不开。我们看⼀下它配置⽂件。Shell
1 2 3 4 5 6 7[chengmo@centos5 ~]$ man -f man
man                  (1)  - format and display the on-line manual pages
man                  (1p)  - display system documentation
man                  (7)  - macros to format man pages
man                (rpm) - A set of documentation tools: man, apropos and whatis.
man-pages          (rpm) - Man (manual) pages from the Linux Documentation Project. fig [man]    (5)  - configuration data for man
通过该命令,我们索引到所有与man有关的⼿册页了。根据前⾯提到的领域设置类型,(1)是man命令说明,(7)man⽂件使⽤的宏格式规定,下⾯有⼀个:fig (5) ,就是man的配置⽂件了。
读取fig⽂件:
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23[wangsl@centos5 ~]$ cat /fig | grep -v '^#'
FHS
MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
MANPATH /usr/local/share/man
MANPATH /usr/X11R6/man
MANPATH_MAP    /bin                    /usr/share/man
MANPATH_MAP    /sbin                  /usr/share/man
MANPATH_MAP    /usr/bin                /usr/share/man
MANPATH_MAP    /usr/sbin              /usr/share/man
MANPATH_MAP    /usr/local/bin          /usr/local/share/man
MANPATH_MAP    /usr/local/sbin        /usr/local/share/man
MANPATH_MAP    /usr/X11R6/bin          /usr/X11R6/man
MANPATH_MAP    /usr/bin/X11            /usr/X11R6/man
MANPATH_MAP    /usr/bin/mh            /usr/share/man
TROFF          /usr/bin/groff -Tps -mandoc
NROFF          /usr/bin/nroff -c --legacy NROFF_OLD_CHARSET -mandoc 2>/dev/null EQN            /usr/bin/geqn -Tps
NEQN            /usr/bin/geqn -Tutf8
TBL            /usr/bin/gtbl
REFER          /usr/bin/grefer
PIC            /usr/bin/gpic
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39VGRIND
html文件格式化
GRAP
PAGER          /usr/bin/less -is
BROWSER        /usr/bin/less -is
HTMLPAGER      /bin/cat
CAT            /bin/cat
CMP            /usr/bin/cmp -s
COMPRESS        /usr/bin/bzip2
COMPRESS_EXT    .bz2
MANSECT        1:1p:8:2:3:3p:4:5:6:7:9:0p:n:l:p:o:1x:2x:3x:4x:5x:6x:7x:8x .gz            /usr/bin/gunzip -c
.
bz2            /usr/bin/bzip2 -c -d
.z
.Z              /bin/zcat
.F
.Y
配置⽂件分类:
MANPATH 关键字
指定⼿册默认存放路径,man启动就会在这些⽬录中索引⼿册页,可以通过添加⼀⾏:MANPATH /home/chengmo/man 指定加⼊⾃⼰的⼿册路径,通过man -M可以添加⾃⼰的⼿册路径
MANPATH_MAP关键字
指定帮助⼿册与命令对应⽬录,如果⾃⼰增加搜索⽬录,这⾥需要增加对应⽅式
格式化⼿册页输出
linux系统⼿册页,⼤家在看到时候有⾼亮,然后还有加粗,下划线,倾斜,空⾏等固定格式。其实这些在本来的⼿册页⽂件⾥⾯,只是保存为⼀系列的代号。⼤家不妨解压个gz⼿册⽂件,然后通过cat查看下内容。你会发现显⽰⾥⾯有如下内容中(点开头,然后⼀系列数字,⽽且整个页⾯显⽰杂乱⽆章,跟我们man看到完全不⼀样),其它这些代号对应是linux⽂件⾥⾯的宏指令代码,如:
.B 粗体
.BI 粗体跟斜体
.BR 粗体跟正体
.I 斜体
.IB 斜体跟粗体
.IR 斜体跟正体
.RB 正体跟粗体
.RI 正体跟斜体
.
SM ⼩(缩放到正常⼤⼩的9/10)
.SB ⼩跟⿊体(所跟的⿊体不会缩⼩)
如果不清楚这个关系,把这些宏指令⽐拟为:html语⾔⼀些标签,在记事本中打开,⼤家都看不明⽩,但是如果⽤ie查看。就⼀⽬了然了。
这些宏指令在显⽰时候,必须通过⼀系列命令做格式转换,这⾥必须提到是:groff系列命令(它的⼯作有点像IE):
groff简介:
Groff (GNU Troff) 是 Troff 的最新开放源码实现,Troff 是从相同的输⼊源为各种设备⽣成打印和屏幕⽂档的⼀种⽂档格式化输出系统。Groff 是⼀种⽤于格式化输出⽂档的编程语⾔。它由⼀套⼯具组成,⽽不是单个的应⽤程序,groff ⼯具是使⽤这些⼯具的前端。其中包括处理特殊的输⼊⽂本的预处理器、⽤于处理输⼊的称为 troff 的主排版引擎、以及将 troff 的输出转换为打印和屏幕输出的各种格式的后处理器。
您可以在⽂本编辑器中编写输⼊或者从程序⽣成输⼊,⽆论采⽤哪种⽅式,⽂档的编写过程都发⽣在 Groff 系统之外。⽂档使⽤纯⽂本进⾏编写并使⽤ Groff 语⾔进⾏标记,后者指定了⽂档的格式和外观(
请参见为 Groff 编写输⼊部分)。然后将该输⼊⽂本发送到 Groff,以便对其进⾏处理从⽽获得所需的输出。
Groff包含⼏个处理⽂本格式的程序。Groff把标准的⽂本和特殊的命令翻译成格式化的输出,像你在 man ⼿册页⾥看到的那样。
安装下列程序: addftinfo, afmtodit, eqn, eqn2graph, geqn (link to eqn), grn, grodvi, groff, groffer, grog, grolbp, grolj4, grops, grotty, gtbl (link to tbl), hpftodit, indxbib, lkbib, lookbib, mmroff, neqn, nroff, pfbtops, pic, pic2graph, post-grohtml, pre-grohtml, refer, soelim, tbl, tfmtodit, troff and
zsoelim (link to soelim)
这⾥只是解析fig常见的解析命令:
gpic 将内嵌于troff或者TeX输⼊⽂件中的图像编译成troff或者TeX理解的指令。
gtbl 实现table表格输出。
neqn 将⽅程格式化,使其成为适应ASCII输出的脚本,如果⽂档要表⽰⼀些数字开⽅,根号之类需要它了
refer 将⼀个⽂件拷贝到标准输出,并丢弃.[和.]之间作为引⽤的内容和在.R1和.R2之间解释如何处理这些引⽤的命令。
troff groff依照合适的顺序并使⽤合适的参数来执⾏预处理程序和后处理程序。
PAGER、BROWER、HTMLPAGER
分别制定最终标准⼿册页,HTML⼿册页,HTML as TXT⼿册页由那个程序显⽰。其实基本都是交给了:less这个作为⼿册页显⽰程序。当我们打开了⼿册页后,对它进⾏翻页查等操作,其实就是运⽤less 程序快捷键完成的。如果命令⾏man –[PBH] 可以对当前索引,分别⽤新的程序覆盖系统设置。
COMPRESS,COMPRESS_EXT
设置压缩⽂件,已经压缩⽂件⽣成扩展名,如果需要将⼿册输出其它格式时候会⽤到
MANSECT
指定man 搜索⼿册⽬录顺序,假设设置是:
mansect 1:1p:8:2:3:3p:4:5:6:7:9:0p:n:l:p:o:1x:2x:3x:4x:5x:6x:7x:8x
如果直接man command1 ,它将按照这⾥指定的顺序查⼿册页,先是man1,然后man1p…… 直到到⼀个页⾯,就停⽌搜索。除⾮加了-a 参数。如果调⽤man -S 1:1p 是可以覆盖这项设置的
.gz .bz2
这个是如果⼿册页⾯是这⾥程序的,⽤什么程序进⾏解压。
我们还记得上次man -d 的参数吧!运⾏最后会输⼊⼀个脚本:
(cd /usr/share/man && (echo “.ll 11.8i”; echo “.nr LL 11.8i”; echo “.pl 1100i”; /usr/bin/gunzip -c ‘/usr/share/man/man1/’; echo “.\\\””; echo “.pl \n(nlu+10”) | /usr/bin/gtbl | /usr/bin/nroff -c –legacy ISO-8859-1 -mandoc 2>/dev/null | /usr/bin/less -is)
其实这个才是man命令执⾏后,通过各个格式化指令组合,最终shell脚本运⾏的命令。
突然想到⼀个问题,man之所以强⼤,与它的松散配置分不开,它只是实现了搜索查,⽽解压由:gunzip,格式化是由:groff处理,显⽰有less处理。
说到这⾥,man好像都说完了,对了,显⽰的页⾯怎么操作呢?接下来,我们在看看,less常⽤命令
man显⽰页⾯操作(less命令使⽤)
我们到了⾃⼰的帮助⽂件了,⽽且已经显⽰了页⾯。在这个⿊屏页⾯⾥⾯,我怎么样实现查,跳转等操作呢?
其实,它现在已经进⼊了less命令管理范围了(可能有朋友认为是vi的,因为它们快捷键很相似,其实是less的)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。