Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1351350
  • 博文数量: 245
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3094
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 14:51
文章存档

2011年(2)

2009年(152)

2008年(91)

我的朋友

分类:

2009-01-08 13:39:45

man page

嗄?不知道怎么使用date这个指令?嘿嘿!不要担心,我们Linux上面的线上求助系统已经都帮你想好要怎么办了, 所以你只要使用简单的方法去寻找一下说明的内容,马上就清清楚楚的知道该指令的用法了!怎么看呢?就是找男人(man) 呀!喔!不是啦!这个man是manual(操作说明)的简写啦!只要下达:‘man date’ 马上就会有清楚的说明出现在你面前喔!如下所示:

[vbird@www ~]$ LANG="en"
# 还记得这个咚咚的用意吧?前面提过了,是为了‘语系’的需要啊!下达过一次即可!

[vbird@www ~]$ man date
DATE(1)                          User Commands                         DATE(1)
# 请注意上面这个括号内的数字
NAME  <==这个指令的完整全名,如下所示为date且说明简单用途为设定与显示日期/时间
       date - print or set the system date and time

SYNOPSIS  <==这个指令的基本语法如下所示
       date [OPTION]... [+FORMAT]
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

DESCRIPTION  <==详细说明刚刚语法谈到的选项与参数的用法
       Display  the  current  time  in  the given FORMAT, or set the system
       date.

       -d, --date=STRING  <==左边-d为短选项名称,右边--date为完整选项名称
              display time described by STRING, not 'now'

       -f, --file=DATEFILE
              like --date once for each line of DATEFILE

       -r, --reference=FILE
              display the last modification time of FILE
....(中间省略)....
       # 找到了!底下就是格式化输出的详细资料!
       FORMAT controls the output.  The only valid option  for  the  second
       form  specifies  Coordinated  Universal Time.  Interpreted sequences
       are:

       %%     a literal %

       %a     locale's abbreviated weekday name (e.g., Sun)

       %A     locale's full weekday name (e.g., Sunday)
....(中间省略)....
ENVIRONMENT  <==与这个指令相关的环境参数有如下的说明
       TZ     Specifies the timezone, unless  overridden  by  command  line
              parameters.   If  neither  is  specified,  the  setting  from
              /etc/localtime is used.

AUTHOR  <==这个指令的作者啦!
       Written by David MacKenzie.

REPORTING BUGS  <==有问题请留言给底下的email的意思!
       Report bugs to .

COPYRIGHT  <==受到著作权法的保护!用的就是 GPL 了!
       Copyright ? 2006 Free Software Foundation, Inc.
       This is free software.  You may redistribute copies of it under  the
       terms      of      the      GNU      General      Public     License
       < There is  NO  WARRANTY,  to
       the extent permitted by law.

SEE ALSO  <==这个重要,你还可以从哪里查到与date相关的说明文件之意
       The  full  documentation for date is maintained as a Texinfo manual.
       If the info and date programs are properly installed at  your  site,
       the command

              info date

       should give you access to the complete manual.

date 5.97                          May 2006                            DATE(1)

Tips:
进入man指令的功能后,你可以按下‘空白键’往下翻页,可以按下‘ q ’按键来离开man的环境。 更多在man指令下的功能,本小节后面会谈到的!    

看(鸟哥没骂人!)马上就知道一大堆的用法了!如此一来,不就可以知道date的相关选项与参数了吗?真方便! 而出现的这个萤幕画面,我们称呼他为man page, 你可以在里头查询他的用法与相关的参数说明。如果仔细一点来看这个man page的话,你会发现几个有趣的东西。

首先,在上个表格的第一行,你可以看到的是:‘DATE(1)’,DATE我们知道是指令的名称, 那么(1)代表什么呢?他代表的是‘一般使用者可使用的指令’的意思!咦!还有这个用意啊!呵呵! 没错~在查询资料的后面的数字是有意义的喔!他可以帮助我们瞭解或者是直接查询相关的资料。 常见的几个数字的意义是这样的:
代号    代表内容
1    使用者在shell环境中可以操作的指令或可执行档
2    系统核心可呼叫的函数与工具等
3    一些常用的函数(function)与函式库(library),大部分为C的函式库(libc)
4    装置档案的说明,通常在/dev下的档案
5    设定档或者是某些档案的格式
6    游戏(games)
7    惯例与协定等,例如Linux档案系统、网路协定、ASCII code等等的说明
8    系统管理员可用的管理指令
9    跟kernel有关的文件

上述的表格内容可以使用‘man 7 man’来更详细的取得说明。透过这张表格的说明, 未来你如果使用man page在察看某些资料时,就会知道该指令/档案所代表的基本意义是什么了。 举例来说,如果你下达了‘man null’时,会出现的第一行是:‘NULL(4)’,对照一下上面的数字意义, 嘿嘿!原来null这个玩意儿竟然是一个‘装置档案’呢!很容易瞭解了吧!
Tips:
上表中的1, 5, 8这三个号码特别重要,也请读者要将这三个数字所代表的意义背下来喔!    

再来,man page的内容也分成好几个部分来加以介绍该指令呢!就是上头man date那个表格内, 以NAME作为开始介绍,最后还有个SEE ALSO来作为结束。基本上,man page大致分成底下这几个部分:
代号    内容说明
NAME    简短的指令、资料名称说明
SYNOPSIS    简短的指令下达语法(syntax)简介
DESCRIPTION    较为完整的说明,这部分最好仔细看看!
OPTIONS    针对 SYNOPSIS 部分中,有列举的所有可用的选项说明
COMMANDS    当这个程式(软体)在执行的时候,可以在此程式(软体)中下达的指令
FILES    这个程式或资料所使用或参考或连结到的某些档案
SEE ALSO    可以参考的,跟这个指令或资料有相关的其他说明!
EXAMPLE    一些可以参考的范例
BUGS    是否有相关的臭虫!

有时候除了这些外,还可能会看到Authors与Copyright等,不过也有很多时候仅有NAME与DESCRIPTION等部分。 通常鸟哥在查询某个资料时是这样来查阅的:

   1. 先察看NAME的项目,约略看一下这个资料的意思;
   2. 再详看一下DESCRIPTION,这个部分会提到很多相关的资料与使用时机,从这个地方可以学到很多小细节呢;
   3. 而如果这个指令其实很熟悉了(例如上面的date),那么鸟哥主要就是查询关于OPTIONS的部分了! 可以知道每个选项的意义,这样就可以下达比较细部的指令内容呢!
   4. 最后,鸟哥会再看一下,跟这个资料有关的还有哪些东西可以使用的?举例来说,上面的SEE ALSO就告知我们还可以利用‘info coreutils date’来进一步查阅资料;
   5. 某些说明内容还会列举有关的档案(FILES 部分)来提供我们参考!这些都是很有帮助的!

大致上瞭解了man page的内容后,那么在man page当中我还可以利用哪些按键来帮忙查阅呢?首先, 如果要向下翻页的话,可以按下键盘的空白键,也可以使用[Page Up]与[Page Down]来翻页呢!同时,如果你知道某些关键字的话, 那么可以在任何时候输入‘/word’,来主动搜寻关键字!例如在上面的搜寻当中,我输入了‘/date’会变成怎样?

DATE(1)                          User Commands                         DATE(1)

NAME
       date - print or set the system date and time

SYNOPSIS
       date [OPTION]... [+FORMAT]
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

DESCRIPTION
       Display  the  current  time  in  the given FORMAT, or set the system date.

....(中间省略)....

/date <==只要按下/,游标就会跑到这个地方来,你就可以开始输入搜寻自串咯

看到了吗,当你按下‘/’之后,游标就会移动到萤幕的最下面一行, 并等待你输入搜寻的字串了。此时,输入date后,man page就会开始搜寻跟date有关的字串, 并且移动到该区域呢!很方便吧!最后,如果要离开man page时,直接按下‘ q ’就能够离开了。 我们将一些在man page常用的按键给他整理整理:
按键    进行工作
空白键    向下翻一页
[Page Down]    向下翻一页
[Page Up]    向上翻一页
[Home]    去到第一页
[End]    去到最后一页
/string    向‘下’搜寻 string 这个字串,如果要搜寻 vbird 的话,就输入 /vbird
?string    向‘上’搜寻 string 这个字串
n, N    利用 / 或 ? 来搜寻字串时,可以用 n 来继续下一个搜寻 (不论是 / 或 ?) ,可以利用 N 来进行‘反向’搜寻。举例来说,我以 /vbird 搜寻 vbird 字串, 那么可以 n 继续往下查询,用 N 往上查询。若以 ?vbird 向上查询 vbird 字串, 那我可以用 n 继续‘向上’查询,用 N 反向查询。
q    结束这次的 man page

要注意喔!上面的按键是在man page的画面当中才能使用的! 比较有趣的是那个搜寻啦!我们可以往下或者是往上搜寻某个字串,例如要在man page内搜寻vbird这个字串, 可以输入 /vbird 或者是 ?vbird ,只不过一个是往下而一个是往上来搜寻的。而要 重复搜寻 某个字串时,可以使用 n 或者是 N 来动作即可呢! 很方便吧!^_^

既然有man page,自然就是因为有一些文件资料,所以才能够以man page读出来啰!那么这些man page的资料 放在哪里呢?不同的distribution通常可能有点差异性,不过,通常是放在/usr/share/man这个目录里头,然而,我们可以透过修改他的man page搜寻路径来改善这个目录的问题!修改/etc/man.config (有的版本为man.conf或manpath.conf)即可啰!至于更多的关于man的讯息你可以使用‘ man man ’来查询呦!关于更详细的设定,我们会在bash的章节当中继续的说明喔!

    * 搜寻特定指令/档案的man page说明文件

在某些情况下,你可能知道要使用某些特定的指令或者是修改某些特定的设定档,但是偏偏忘记了该指令的完整名称。 有些时候则是你只记得该指令的部分关键字。这个时候你要如何查出来你所想要知道的man page呢? 我们以底下的几个例子来说明man这个指令有用的地方喔!
例题:
你可否查出来,系统中还有哪些跟‘man’这个指令有关的说明文件呢?
答:
你可以使用底下的指令来查询一下:

[vbird@www ~]$ man -f man
man                  (1)  - format and display the on-line manual pages
man                  (7)  - macros to format man pages
man.config [man]     (5)  - configuration data for man

使用 -f 这个选项救可以取得更多与man相关的资讯,而上面这个结果当中也有提示了 (数字) 的内容,举例来说,第二行的‘ man (7) ’表示有个man (7)的说明文件存在喔!但是却有个man (1)存在啊!那当我们下达‘ man man ’的时候,到底是找到哪一个说明档呢?其实,你可以指定不同的文件的,举例来说,上表当中的两个 man 你可以这样将他的文件叫出来:

[vbird@www ~]$ man 1 man  <==这里是用 man(1) 的文件资料
[vbird@www ~]$ man 7 man  <==这里是用 man(7) 的文件资料

你可以自行将上面两个指令输入一次看看,就知道,两个指令输出的结果是不同的。那个1, 7就是分别取出在man page里面关于1与7相关资料的文件档案啰!好了,那么万一我真的忘记了下达数字,只有输入‘ man man ’时,那么取出的资料到底是1还是7啊?这个就跟搜寻的顺序有关了。搜寻的顺序是记录在/etc/man.conf这个设定档当中, 先搜寻到的那个说明档,就会先被显示出来! 一般来说,通常会先找到数字较小的那个啦!因为排序的关系啊!所以, man man 会跟 man 1 man 结果相同!

除此之外,我们还可以利用‘关键字’找到更多的说明文件资料喔!什么是关键字呢? 从上面的‘man -f man’输出的结果中,我们知道其实输出的资料是:

    * 左边部分:指令(或档案)以及该指令所代表的意义(就是那个数字);
    * 右边部分:这个指令的简易说明,例如上述的‘-macros to format man pages’

当使用‘man -f 指令’时,man只会找资料中的左边那个指令(或档案)的完整名称,有一点不同都不行! 但如果我想要找的是‘关键字’呢?也就是说,我想要同时找上面说的两个地方的内容,只要该内容有关键字存在, 不需要完全相同的指令(或档案)就能够找到时,该怎么办?请看下个范例啰!
例题:
找出系统的说明档中,只要有man这个关键字就将该说明列出来。
答:

[vbird@www ~]$ man -k man
. [builtins]         (1)  - bash built-in commands, see bash(1)
.TP 15 php [php]     (1)  - PHP Command Line Interface 'CLI'
....(中间省略)....
zshall               (1)  - the Z shell meta-man page
zshbuiltins          (1)  - zsh built-in commands
zshzle               (1)  - zsh command line editor

看到了吧!很多对吧!因为这个是利用关键字将说明文件里面只要含有man那个字眼的(不见得是完整字串) 就将他取出来!很方便吧! ^_^(上面的结果有特殊字体的显示是为了方便读者查看,实际的输出结果并不会有特别的颜色显示喔!)

事实上,还有两个指令与man page有关呢!而这两个指令是man的简略写法说~就是这两个:

[vbird@www ~]$ whatis  [指令或者是资料]   <==相当于 man -f [指令或者是资料]
[vbird@www ~]$ apropos [指令或者是资料]   <==相当于 man -k [指令或者是资料]

Tips:
一般来说,鸟哥是真的不会去背指令的,只会去记住几个常见的指令而已。那么鸟哥是怎么找到所需要的指令呢? 举例来说,列印的相关指令,鸟哥其实仅记得 lp (line print)而已。那我就由 man lp 开始,去找相关的说明, 然后,再以 lp[tab][tab] 找到任何以 lp 为开头的指令,找到我认为可能有点相关的指令后, 再以 man 去查询指令的用法!呵呵!所以,如果是实际在管理 Linux , 那么真的只要记得几个很重要的指令即可,其他需要的,嘿嘿!努力的找男人(man)吧! 
阅读(741) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~