pg [-number] [-p string] [-cefnrs] [+ linenumber] [+/ pattern /] [filename]...
pg 命令是一个过滤器,使用它可以在 CRT 上以一次一屏的方式细读 filenames 的内容。如果用户键入 RETURN,则会显示另一个页面;其他可能出现的情况如下文所述。
此命令不同于以往的分页程序,因为使用它可以后退并查看已经显示过的内容。下文解释了实现这一功能的方法。
为了确定终端属性,pg 会扫描 terminfo(4) 数据库,查找环境变量 TERM 指定的终端类型。如果 TERM 未定义,则假定终端类型为 dumb。
指定 pg 使用的窗口大小(行数)的整数,用来替代缺省窗口大小。(在含有 24 行的终端上,缺省窗口大小为 23)。
pg 会将 string 用作提示。如果提示字符串包含 %d,则提示中的第一个 %d 会在发出提示时替换为当前页号。缺省提示字符串为 ":"。
显示每个页面之前,将光标置于原位并清除屏幕内容。如果 terminfo(4) 数据库中未针对此终端类型定义 clear_screen,则会忽略此选项。
pg 在每个文件的结尾处不会暂停。
通常情况下,pg 会拆分长度超过屏幕宽度的行,但拆分正在显示的文本中的某些字符序列(例如,表示强调的转义序列)会产生意外结果。–f 选项会禁止 pg 拆分行。
通常情况下,命令必须以一个 <newline> 字符结尾。使用此选项时,只要输入一个命令字母,命令就会自动结束。
受限模式。禁止 shell 转义。pg 会输出错误消息,但不会退出。
pg 在标准输出模式下输出所有消息和提示(通常为反转显示)。
在行号处开始。
从含有正则表达式模式的第一行开始。
支持下列操作数:
要显示的文本文件的路径名。如果未指定 filename,或者如果指定了 −,则读取标准输入。
在 pg 暂停时可以键入的响应可分为三类,分别是有助于进一步细读、用来执行搜索以及用来修改细读环境的响应。
有助于进一步细读的命令通常会在前面加上一个 address,这是一个可选的有符号数字,指示应当从哪里开始显示要进一步细读的文本。此 address 可以解释为以页数或行数为单位,具体取决于命令。有符号 address 会指定一个相对于当前页或行的位置,而无符号 address 会指定一个相对于文件开头的地址。每个命令都有一个缺省地址,以便在未提供地址时使用。
细读命令及其缺省地址如下所示:
此命令会显示一页内容。指定的地址为页数。
使用相对地址时,此命令会使得 pg 模拟屏幕滚动情况,向前或向后滚动指定行数。使用绝对地址时,此命令会输出从指定行开始的一屏内容。
模拟屏幕滚动情况,向前或向后滚动半屏内容。
跳过 i 屏文本。
与 <newline> 相同,但使用 i 时除外,因为此时它会成为每屏行数的新缺省值。
以下细读命令未使用 address。
键入一个句点会重新显示当前页文本。
显示文件中的最后一个满屏窗口。当输入为管道时,需小心使用。
以下命令可用于在文本中搜索文本模式。正则表达式在 regex(5) 手册页上介绍。它们必须始终以一个 <newline> 结尾,即便指定了 –n 选项也是如此。
向前搜索第 i 个(缺省情况下 i=1)pattern。从紧接在当前页之后的内容开始搜索,一直持续到当前文件的结尾,而且不会回绕。
向后搜索第 i 个(缺省情况下 i=1)pattern。从紧接在当前页之前的内容开始搜索,一直持续到当前文件的开头,而且不会回绕。对于无法正确处理 ? 的 Adds 100 终端,符号 ^ 十分有用。
执行搜索后,pg 通常会在屏幕最上方显示找到的行。这种处理方式可以修改,具体方法是将 m 或 b 附加到搜索命令,以便今后将找到的行留在窗口中间或底部。后缀 t 可以用于恢复原状。
pg 用户可以通过以下命令修改细读环境:
开始细读命令行中之后的第 i 个文件。i 为无符号数字,缺省值为 1。
开始细读命令行中之前的第 i 个文件。i 为无符号数字,缺省值为 1。
显示另一个文本窗口。如果存在 i,则将窗口大小设为 i。
在指定文件中保存输入。仅保存正在细读的当前文件。s 和 filename 之间的空格可选。此命令必须始终以一个 <newline> 结尾,即便指定了 –n 选项也是如此。
通过显示可用命令的简短摘要来提供帮助。
退出 pg。
将 Command 传递给 shell,而命令名称取自 SHELL 环境变量。如果不可用,则使用缺省 shell。此命令必须始终以一个 <newline> 结尾,即便指定了 –n 选项也是如此。
无论何时将输出发送到终端,用户都能按退出键(通常为 CTRL-\)或中断键。这会使得 pg 停止发送输出并显示提示。接着,用户便能正常输入上述命令之一。遗憾的是,执行此操作时,某些输出会丢失,因为在终端输出队列中等待的字符都会在退出信号出现时被刷新。
如果标准输出不是终端,pg 的作用类似于 cat(1),只是会在每个文件(如果有多个文件)之前输出标题。
有关 pg 遇到大于或等于 2 GB(231 字节)文件时行为的说明,请参见 largefile(5)。
以下命令行使用 pg 读取系统消息:
example% news | pg –p "(Page %d):"
有关影响 pg 执行的以下环境变量的描述,请参见 environ(5):LC_CTYPE、LC_MESSAGES 和 NLSPATH。
以下环境变量会影响 pg 执行:
确定水平屏幕大小。如果未设置或设为 NULL,则使用 TERM 值、窗口大小、波特率或它们的某种组合来指示计算屏幕大小时采用的终端类型。
确定在屏幕上显示的行数。如果未设置或设为 NULL,则使用 TERM 值、窗口大小、波特率或它们的某种组合来指示计算屏幕大小时采用的终端类型。
确定为 !command 执行的命令解释程序的名称。
确定终端属性。也会尝试搜索系统相关数据库,具体取决于 TERM 环境变量的值。如果信息不可用,则假定终端不支持基于光标地址的移动。
将返回以下退出值:
成功完成。
出现错误。
输入来自管道时的临时文件
终端信息数据库
有关下列属性的说明,请参见 attributes(5):
|
cat(1)、grep(1)、more(1)、terminfo(4)、attributes(5)、environ(5)、largefile(5)、regex(5)
在等待终端输入的过程中,pg 通过终止执行来响应 BREAK、CTRL-C 和 CTRL−\。然而,在两次提示之间,这些信号会中断 pg 当前任务,将用户置于提示模式下。从管道读取输入时,应当谨慎使用这些命令,因为一次中断可能会终止管道中的其他命令。
终端 /、^ 或 ? 有可能被搜索命令忽略。
如果终端制表符不是按每八个位置设置的,有可能出现意外结果。
将 pg 作为过滤器与另一个更改终端 I/O 选项的命令一同使用时,可能无法正确恢复终端设置。