bfs 命令
用途
扫描文件。
语法
bfs [ - ] 文件
描述
bfs 命令读取由 File 参数指定的文件,但不处理该文件。 可以扫描该文件,但不能对它进行编辑。
bfs 命令基本上是 ed 命令的只读版本,只有两个特例:bfs 命令能够处理较大文件且具有附加子命令。
输入文件可长达 32,767 行,每行有多达 255 个字符。 对于扫描文件,bfs 命令通常比 ed 命令更有效,因为文件不会被复制至缓冲区。 bfs 命令对于标识可分的较大文件部分最有用,它使用 csplit 命令将较大文件分为对于编辑来说更易管理的片断。
如果输入 P 子命令,bfs 命令会以一个 *(星号)作为提示。 可以输入第二个 P 子命令来关闭提示。 bfs 命令在提示打开时会显示错误消息。
bfs 命令可在单字节和多字节环境中运行。 LANG 环境变量(在 /etc/environment 文件中)的设置确定 shell 的语言环境。
向前和向后搜索
bfs 命令支持在 ed 命令下描述的所有地址表达式。 此外,可以指示 bfs 命令在文件中向前或向后搜索,无论是否回绕。 如果指定了带回绕的向前搜索,bfs 命令到达文件末尾后会继续从文件开头搜索。 如果指定了带回绕的向后搜索,该命令在到达开头后会继续从文件末尾搜索。 指定四种搜索类型的符号如下:
| 项 | 描述 |
|---|---|
| /模式/ | 带回绕的向前搜索 Pattern 。 |
| ?模式? | 带回绕的向后搜索 Pattern 。 |
| >模式> | 不带回绕的向前搜索 Pattern 。 |
| <模式< | 不带回绕的向后搜索 Pattern。 |
bfs 命令的模式匹配例程与 ed 命令使用的模式匹配例程有所不同且包括 regcmp 子例程中描述的附加功能。 在标记名称方面也有细微不同:只可使用 a 到 z 的小写字母,且会记忆所有 26 个标记。
标志
| 项 | 描述 |
|---|---|
| - | 禁止文件大小的显示。 通常,bfs 命令以字节来显示正在被扫描的文件大小。 |
子命令
e、g、v、k、n、p、q、w、=、! 和空子命令按照 ed 命令中的解释运行。 然而,bfs 命令不支持地址和子命令间的空格。 诸如 —、+++-、+++=、-12 和 +4p 子命令是可接受的。 1、10p 和 1、10 都显示开头十行。 f 子命令仅显示正在扫描的文件名;没有记忆的文件名。 w 子命令独立于输出转换,截断或压缩 ( xo, xt, 和 xc 子命令)。 压缩输出方式禁止空行并用单个空格替代多个空格和跳格。
以下附加子命令是可用的:
| 项 | 描述 |
|---|---|
| xf 文件 | 从指定文件读取 bfs 子命令。 当 bfs 命令到达文件末尾或接收到中断信号,或者如果发生错误,bfs 命名会恢复扫描包含 xf 子命令的文件。 这些 xf 子命令可被嵌套至深度 10。 |
| xo [文件] | 从 p 和空子命令将进一步输出发送至指定的文件,该文件创建时将读写许可授权给所有用户。 如果不指定 File 参数,bfs 命令写至标准输出。 每个至文件的重定向将创建所指定文件,需要时删除现有文件。 |
| :标签 | 将标签定位于子命令文件中。 该标签以换行符结尾。 忽略 :(冒号)与标签开头间的空格。 该子命令可用于将注释插入子命令文件,因为无需引用标签。 |
| [Address1[,Address2]] xb/Pattern/标签 | 将当前行设置为包含指定模式的行,并转至当前命令文件中指定的标签(如果此模式在行的指定范围内匹配的话)。 在以下任何情况下跳转都会失败:
该子命令是仅有的不在坏地址上发出错误消息的子命令,因此在运行其他子命令前可用于测试地址是否是坏的。 子命令: 是无条件转移的。 仅当从除工作站以外的其他地方读取 xb 子命令时,该子命令才被允许。 如果是从管道读取该子命令,只可能向下转移。 |
| xt [Number] | 截断从 p 子命令和空子命令至字符号的输出。 Number 参数的缺省值是 192。 |
| xv[Digit] [值] | 将指定的 Value 指定给 Digit 参数。 Digit 参数的值可以是 0 到 9。 您可以在 Digit 和 Value之间放置一个或多个空格。 例如:赋值100到变量5和值1,100p到变量6. 要引用变量,请将%变量名称前面的 (百分号)。 给定变量的先前赋值5和 6,以下三个子命令: 每个会显示文件的开头 100 行。 逃避特殊意义%,在它之前\(反斜杠)。 例如: 匹配并列出包含 printf 变量(%c、%d 或 %s)的行。 也可以使用 xv 子命令将命令输出的第一行指定为变量的值。 要做到这点,使 Value 参数的第一个字符成为 ! (感叹号),命令名紧跟其后。 例如: 存储第一行junk变量中的文件5. 逃避特殊意义!作为 Value的第一个字符,在其前面添加一个\(反斜杠)。 例如: 存储值!date在变量中7. |
| xbz 标签 | 测试 shell 命令的最后保存退出值并转至当前命令文件中指定的标签(如果值是 0 的话)。 |
| xbn 标签 | 测试 shell 命令的最后保存退出值并转至当前命令文件中指定的标签(如果值不是 0 的话)。 |
| xc [交换机] | 关闭或打开压缩输出方式。 (压缩输出方式禁止空行并用单个空格替代多个空格和跳格。) 如果 Switch 参数具有值 1,那么来自 p 子命令和空子命令的输出会被压缩。 如果 Switch 参数是 0,那么该输出不会被压缩。 如果不为 Switch 参数指定值,那么 Switch 参数的当前值(初始设置为 0)逆向。 |
退出状态
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 在没有任何文件或命令错误的情况下成功完成。 |
| > 0 | 发生错误。 |
文件
| 项 | 描述 |
|---|---|
| /usr/bin/bfs | 包含 bfs 命令。 |