2019年7月7日 星期日

Unix说明书页

1. Unix说明书页
刚开始,Unix用户使用慢速的终端将输出打印在纸上。因为那是还没有显示器,当有人希望学习一条命令时,他不得不打印联机手册的相关页。
现在,Unix手册中拥有大量的条目,其中许多条目已经不能在一张纸上打印。然而,无论条目有多长,习惯上会死啊 hi称一个单独的条目为一页,或者更正式的称之为一个说明书页。




2. 显示Unix说明书页
实际上联机手册中几乎每个条目都无法一屏显示。如果一次全部显示一个条目,那么大部分的内容将在您还没有来的及阅读的情况下滚动出计算机屏幕。
这是一种常见的情形,不过Unix有一种好的解决方法:将输出发送到一个程序,再让这个程序一次一屏的显示输出。Unix中常用的程序有这3种:less, morepg。最后也是最广泛的分页程序设计是less
如果您希望在系统上进行练习,可以输入下述命令之一,每条命令都会显示一个特定的shell(Bash, Korn shell或者C-shell)的信息:

man bash
man ksh
man csh


您可以显示您准备使用的,或者大多数人在您的系统上使用的shell说明书页。
分页程序的任务是每次一屏地显示数据。一屏显示满了之后,程序就会暂停并且在左下角显示一个提示。根据分页程序的不同,提示内容也有所不同。
lesspg程序显示一个冒号:



在一些系统上,less显示一个消息,而不是冒号。例如:

byte 1357

在这个例子中,less告诉您它已经显示的字符数量为1357个(每个字节可以存放一个字符)。当继续查看文件后面的页时,该数量将递增,从而可以使您粗略的知道,从开头开始,已经查看了多少内容。
more程序显示一个包含单词“more”的提示。例如,您可能看到:

--More--(10%)

这意味着您已经查看了10%的页面内容。
一旦看到提示,您就可以通过按<Space>键(对于pg,要按<Return>键)显示下一屏的内容。当您阅读结束后,按下q(字母“q”)键就可以退出。
在阅读说明书页时,有许多命令可供使用。但是,通常不需要它们。大堆书时候,只需简单的按<Space>键,阅读下一屏内容。当到达页面末尾时,或者找到自己希望的内容时,可以按下q(字母“q”)键就可以退出。

针对less使用饿命令系统如下表:
通用命令
q
退出
h
显示帮助信息
阅读说明书页

<Space>
显示下一屏
<PageDown>
显示下一屏
f
显示下一屏
<PageUp>
显示上一屏
b
显示上一屏
搜索

/pattern
向下搜索特定的模式
?pattern
向上搜索特定的模式
/
向下搜索一模式
n
向下搜索一模式
?
向上搜索一模式
N
向上搜索一模式
在说明书页移动
<Return>
向下移动一行
<Down>
向下移动一行
<Up>
向上移动一行
g
移动到页面顶部
G
移动到页面底部

对任何程序来说,最重要的命令就是显示帮助信息命令及Unix说明书页。在这种情况下,您只需按h(字母“h”)键就可以显示帮助信息。当您这样做时,说明书页信息将被所有分页命令的摘要信息取代。结束阅读帮助信息时,按下q就可以退出,并返回到说明书页中。注意,摘要信息页相当长,和说明书页本身一样,浏览信息必须按<Space>键才行。到那时最重要的命令都位于摘要信息的顶部。
接下来,我们来讨论针对less的分页程序,因为大多数Unix系统使用它。如果man命令使用的是 more 或者 pg,那么为了获得该特定分页程序的帮助摘要信息,您也只需按下h键。
下面开始,假设您正在查找一个特定的模式,输入/(斜线)字符,再键入模式,然后按下<Return>键。例如:

/output<Return>

这个例子告诉分页程序直接跳到下一个包含单词“output”的行上,一旦制定了一个模式,就可以通过输入字符/本身再次搜索该模式。

/<Return>

如果您在搜索一种模式,但是搜索到的行并不是希望的那一行,那么您可以继续搜索相同的模式,一遍又一遍的进行,知道找到希望的那一行。这是只需要不停地输入/<Return>。
另外,也可以通过按下n(next, 下一个)键一次或者多次搜索同一个模式。
如果要向后搜索,可以使用来取代/。例如:

?output<Return>

如果要向后搜索相同的模式,可以使用本身:

?<Return>
另外,也可以按下N(next,下一个)键向后搜索同一种模式。
向下移动一屏,按下<Space>键,还可以按下f(forward,向前)。向上移动一屏,可以按下b(backward,向后)键。另外也可以通过按下<PageDown>键和<PageUp>键向下或者向上移动。
为了一行一行的向下移动,可以使用<Return>键或者<Down>键(也就是向下箭头)。为了一行一行的向上移动,可以使用<Up>(也就是向上箭头)。
为了跳转到页面的顶部,可以使用g(“go to top”,跳到顶部)键。为了跳到页面的底部,可以使用G(“go to bottom”,跳到底部)键。

3. Unix说明书页的引用方式
在阅读Unix手册的过程中,经常会看到命令后面跟有一个括号括起来的数字。这个数字用来说明在手册的哪一节查找该命令的信息。
例如,下面一段从BSD(伯克利)版本的chmod命令的说明说页中摘录的句子。现在,不用关心该句子的含义,只是看看引用的命令:

…but the setting of the file creation mask, see umask(2), is taked into account…”
umasks(2)“说明可以在手册的第2节中查找umask的说明书页。如果阅读这部分的信息,可以使用:

man 2 umask

因为已经知道第2节内容描述的是系统调用,所以我们可以猜到只有在编程时才会用到这一部分。
但是,在chmod命令说明书页的最后,有这样两行:

SEE ALSO
ls(1), chmod(2), stat(2), umask(2), chown(8)

这是与chmod命令相关的其他5个命令的引用。可以看出,其中3个引用在第2节中,它们针对程序员的。最后一个引用在第8节中,是针对系统管理员的。
第一个引用指向了一个命令,即ls,它的说明书页位于第1节中。因为第1节描述一般命令,所以这一引用对很多人来说都极有价值。为了显示说明书页,可以使用下述两条命令中的任意一条:

man ls
man 1 ls

顺便说一下,ls命令的目的是显示文件的名称。



提示
在查找信息或者处理问题时,如果看到了手册第1节中命令的引用,就应该花点时间看看该引用。即便所显示的信息并不是现在所需的信息,它至少对日后有利。
但是,如果看到其他节的引用,则可以忽略它们,除非该信息看起来特别吸引人。

每一个说明书页都解释一个主题,退通常是一个命令,系统调用或者库函数。一些页较短,但有些页则相当长。例如,描述shell的说明书页都非常长,足以成为一个独立的参考手册。为了明白我的意思,可以试试下面几条命令:

man bash
man ksh
man csh


为了方便起见,每个Unix说明书页,无论大小都按照标准格式组织,在这种组织方式中,每个页都分成几个部分,每部分都拥有自己的标头。其中最常见的标头如下表,更有趣的是,这些标头与许多年以前,由贝尔实验室开发的原始Unix手册中的标头一样。(但是内容已经进行了大幅度的修改)。


标头
含义
Name
命令的名称和用途
Synopsis
命令语法
Description
完整描述(可能很长)
Environment
命令使用的环境变量
Author
程序员的名字
Files
对该命令重要的文件列表
See also
查看相关信息的位置
Diagnostics
可能的错误和警告
Bugs
错误,缺点,警告

4.说明书页的格式
并不是所有的说明书页都包含每一个标头,而有些说明书页所含的标头也并不位于该列表中。例如,我就曾经遇到过Examples, Reporting Bugs, Copyright, History,Standards标头。但是,不考虑实际设计,各个说明书页的基本格式都是相同的。实际上,我曾经看到的每个说明书页都以3个标头Name, SynopsisDescription开始。
上表示范了一个说明书页样本。该说明书页实际上取自一个较早的Unix系统,您的系统上等效的说明书页·极有可能要比这长许多。
注意,在阅读上表中的说明书页时,要记住单词“print”通常指的是在终端上显示文本,而不是实际打印。
在讨论之前,首先快速地浏览一遍每个基本的标头。正如前面所述,您有时候会看到其他标头的名称,但是一旦拥有一些经验之后,就可以毫无困难地理解各种变体。
(1)NAME:这是一个单行命令或功能摘要。要意识到有些摘要会比较含糊,因此,如果觉得迷惑,可以多进行些RTFM。
(2)SYNOPSIS:本节说明命令的语法。这是如何输入命令的权威性解释。
一般而言,在输人命令时,首先键入命令的名称,后面跟着选项,选项后是参数。
首先,您可能只看到单词OPTION。在这种情况下,实际选项在下面的Description节中列举并解释。下面举个例子,取自ls命令的Linux版本的说明书页。

ls [OPTION] ...[FILE]…











GUN实用工具提供的说明书页使用这种约定。因为几乎所有的Linux系统都使用GUN实用工具,所有大多数Linux的说明书页都是这种形式。
(3) DESCRIPTION该节是最大的一部分,通常占据说明书页的主体位置。该节的目的是解释您所需知道的大多数细节,包括如何使用选项。在一些系统上,将完整的解释分为两个独立节:DESCRIPTIONOPTIONS
在阅读过程中,记住自己在看的是一本参考手册。而不是一本技术指南将会有所帮助。要做好有一切描述非常难懂的思想准备,也许直到您理解了自己正在做什么才能理解这些描述。这很平常,即使遇到了困难,也要耐心读下去。
还要意识到,有一些描述(例如关于各种shell的描述)或许永远也不会完全理解。
(4)FILES:本节说明该命令所使用文件的名称。如果本节中的信息对您没有价值,那么可以忽略它。
(5)SEE ALSO:这一节非常重要。它指出手册中可以查阅更多相关信息的其他地方。特别是您将看到正在讨论的命令以某种方式相关的命令。这些引用是一种良好的学习途径。要特别注意第1节中说明书页的引用。
(6)ENVIRONMENT:在解释这一节前,显特别介绍一下有关变量的思想。
变量是一个拥有名称和值的实体。在Unix中,有这样一些变量,它们的值可被所有的程序和shell脚本(shell脚本是一个文件,其中包含可自动执行的一串命令)。根据上下文的不同,这些变量还有其他几个不同的名称:环境变量,全局变量,或者shell变量。根绝约定,环境变量和全局变量的名称完全由大写字母构成。
Unix说明书页的这一节描述程序使用的环境变量。例如,date命令的说明书页引用了一个称为TZ的环境变量,该环境变量显示所使用的时区。
(7)AUTHOR:开发该程序的人的姓名。GUN实用工具的说明书页通常提供这一节的内容。这是因为运营GUN项目的自由软件基金会喜欢赞扬程序员。
(8)DIAGNOSTICS:本节包含两种类型的信息。第一类信息对可能的错误信息进行解释;第二类信息是命令结束时返回错误代码。
错误代码对程序员很重要,特别是在程序员希望在程序中或者shell脚本中调用命令,然后测试命令是否成功完成时。如果命令成功执行,那么错误代码的值为0(零)。否则,错误代码值为非0。
(9)BUGS:所有程序都有两种类型的bug:一类是已知的bug。最初的Unix开发人员已经意识到没有程序是完美的,用户应该知道程序的不足之处。因此,许多说明书页中专门有一节致力于记录已知的问题。
一些商业Unix厂商认为将这一节命名为Bugs可能会让付费客户产生误解。因此,您可能会发现这一节被修改为一个不太明显的名称,例如Notes或者Limitation。别被忽悠了,bug就是bug,如果使用这个程序,那么您有权知道这个程序的bug

沒有留言:

張貼留言