手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

pg(1)

名称

pg - 针对 CRT 的文件细读过滤器

用法概要

pg [-number] [-p string] [-cefnrs] [+ linenumber] 
     [+/ pattern /] [filename]...

描述

pg 命令是一个过滤器,使用它可以在 CRT 上以一次一屏的方式细读 filenames 的内容。如果用户键入 RETURN,则会显示另一个页面;其他可能出现的情况如下文所述。

此命令不同于以往的分页程序,因为使用它可以后退并查看已经显示过的内容。下文解释了实现这一功能的方法。

为了确定终端属性,pg 会扫描 terminfo(4) 数据库,查找环境变量 TERM 指定的终端类型。如果 TERM 未定义,则假定终端类型为 dumb

选项

number

指定 pg 使用的窗口大小(行数)的整数,用来替代缺省窗口大小。(在含有 24 行的终端上,缺省窗口大小为 23)。

–pstring

pg 会将 string 用作提示。如果提示字符串包含 %d,则提示中的第一个 %d 会在发出提示时替换为当前页号。缺省提示字符串为 ":"。

–c

显示每个页面之前,将光标置于原位并清除屏幕内容。如果 terminfo(4) 数据库中未针对此终端类型定义 clear_screen,则会忽略此选项。

–e

pg 在每个文件的结尾处不会暂停。

–f

通常情况下,pg 会拆分长度超过屏幕宽度的行,但拆分正在显示的文本中的某些字符序列(例如,表示强调的转义序列)会产生意外结果。–f 选项会禁止 pg 拆分行。

–n

通常情况下,命令必须以一个 <newline> 字符结尾。使用此选项时,只要输入一个命令字母,命令就会自动结束。

–r

受限模式。禁止 shell 转义。pg 会输出错误消息,但不会退出。

–s

pg 在标准输出模式下输出所有消息和提示(通常为反转显示)。

+linenumber

行号处开始。

+/pattern/

从含有正则表达式模式的第一行开始。

操作数

支持下列操作数:

filename

要显示的文本文件的路径名。如果未指定 filename,或者如果指定了 −,则读取标准输入。

用法

命令

pg 暂停时可以键入的响应可分为三类,分别是有助于进一步细读、用来执行搜索以及用来修改细读环境的响应。

有助于进一步细读的命令通常会在前面加上一个 address,这是一个可选的有符号数字,指示应当从哪里开始显示要进一步细读的文本。此 address 可以解释为以页数或行数为单位,具体取决于命令。有符号 address 会指定一个相对于当前页或行的位置,而无符号 address 会指定一个相对于文件开头的地址。每个命令都有一个缺省地址,以便在未提供地址时使用。

细读命令及其缺省地址如下所示:

(+1)<newline> 或 <blank>

此命令会显示一页内容。指定的地址为页数。

(+1) l

使用相对地址时,此命令会使得 pg 模拟屏幕滚动情况,向前或向后滚动指定行数。使用绝对地址时,此命令会输出从指定行开始的一屏内容。

(+1) d^D

模拟屏幕滚动情况,向前或向后滚动半屏内容。

if

跳过 i 屏文本。

iz

与 <newline> 相同,但使用 i 时除外,因为此时它会成为每屏行数的新缺省值。

以下细读命令未使用 address

.^L

键入一个句点会重新显示当前页文本。

$

显示文件中的最后一个满屏窗口。当输入为管道时,需小心使用。

以下命令可用于在文本中搜索文本模式。正则表达式在 regex(5) 手册页上介绍。它们必须始终以一个 <newline> 结尾,即便指定了 –n 选项也是如此。

i/pattern/

向前搜索第 i 个(缺省情况下 i=1)pattern。从紧接在当前页之后的内容开始搜索,一直持续到当前文件的结尾,而且不会回绕。

i^pattern^

i?pattern?

向后搜索第 i 个(缺省情况下 i=1)pattern。从紧接在当前页之前的内容开始搜索,一直持续到当前文件的开头,而且不会回绕。对于无法正确处理 ? 的 Adds 100 终端,符号 ^ 十分有用。

执行搜索后,pg 通常会在屏幕最上方显示找到的行。这种处理方式可以修改,具体方法是将 mb 附加到搜索命令,以便今后将找到的行留在窗口中间或底部。后缀 t 可以用于恢复原状。

pg 用户可以通过以下命令修改细读环境:

in

开始细读命令行中之后的第 i 个文件。i 为无符号数字,缺省值为 1。

ip

开始细读命令行中之前的第 i 个文件。i 为无符号数字,缺省值为 1。

iw

显示另一个文本窗口。如果存在 i,则将窗口大小设为 i

s filename

在指定文件中保存输入。仅保存正在细读的当前文件。sfilename 之间的空格可选。此命令必须始终以一个 <newline> 结尾,即便指定了 –n 选项也是如此。

h

通过显示可用命令的简短摘要来提供帮助。

qQ

退出 pg

!command

Command 传递给 shell,而命令名称取自 SHELL 环境变量。如果不可用,则使用缺省 shell。此命令必须始终以一个 <newline> 结尾,即便指定了 –n 选项也是如此。

无论何时将输出发送到终端,用户都能按退出键(通常为 CTRL-\)或中断键。这会使得 pg 停止发送输出并显示提示。接着,用户便能正常输入上述命令之一。遗憾的是,执行此操作时,某些输出会丢失,因为在终端输出队列中等待的字符都会在退出信号出现时被刷新。

如果标准输出不是终端,pg 的作用类似于 cat(1),只是会在每个文件(如果有多个文件)之前输出标题。

大型文件行为

有关 pg 遇到大于或等于 2 GB(231 字节)文件时行为的说明,请参见 largefile(5)

示例

示例 1 pg 命令示例。

以下命令行使用 pg 读取系统消息:

example% news | pg –p "(Page %d):"

环境变量

有关影响 pg 执行的以下环境变量的描述,请参见 environ(5):LC_CTYPE、LC_MESSAGES 和 NLSPATH。

以下环境变量会影响 pg 执行:

COLUMNS

确定水平屏幕大小。如果未设置或设为 NULL,则使用 TERM 值、窗口大小、波特率或它们的某种组合来指示计算屏幕大小时采用的终端类型。

LINES

确定在屏幕上显示的行数。如果未设置或设为 NULL,则使用 TERM 值、窗口大小、波特率或它们的某种组合来指示计算屏幕大小时采用的终端类型。

SHELL

确定为 !command 执行的命令解释程序的名称。

TERM

确定终端属性。也会尝试搜索系统相关数据库,具体取决于 TERM 环境变量的值。如果信息不可用,则假定终端不支持基于光标地址的移动。

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

文件

/tmp/pg*

输入来自管道时的临时文件

/usr/share/lib/terminfo/?/*

终端信息数据库

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
CSI
Enabled(已启用)

另请参见

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 选项的命令一同使用时,可能无法正确恢复终端设置。