13.10. 管道和分页器

在 Linux 中,管道连接着一个命令的标准输出和另一个命令的标准输入。

让我们考虑一下前面所讨论的 ls 命令。ls 有许多可用的选项,但是如果目录的内容卷动速度快得你无法查看时该怎么办呢?

使用以下命令来查看 /etc 目录的内容:

ls -al /etc

你怎么样才能在输出卷过屏幕之前仔细查看它们呢?

方法之一是把输出用管道导入到一个叫做 less 的工具。less 是一个分页工具,它允许你一页一页(或一个屏幕一个屏幕)地查看信息。

使用竖线(|)来把输出用管道导入到命令中。

ls -al /etc | less

现在,你就可以一个屏幕一个屏幕地查看 /etc 目录的内容了。要向前移动一个屏幕,按 [Space] 键;要向后移动一个屏幕,按 [b] 键;要退出,按 [q] 键。使用 less 命令时,你还可以使用箭头键来前后移动。

要使用 less 来搜索文本文件的输出,按 [/],然后键入你想在文件内搜索的内容。譬如:

/Linux

窍门窍门
 

要更仔细地阅读启动消息,在 shell 提示下,键入 dmesg | less。你将能够一个屏幕一个屏幕地阅读该文件。使用箭头键来前后翻阅文件。要搜索文件输出,按 [/] 并键入搜索内容。

管道还可以用来只打印一个文件中的某些行。键入:

grep coffee sneakers.txt | lpr

这将会打印 sneakers.txt 文件中提到“coffee”这个词的每一行(在第 13.11.3 节中可读到关于 grep 的详情)。

13.10.1. more 命令

moreless 的主要区别是,less 允许你使用箭头键来前后移动,而 more 使用[Spacebar][b]键来前后移动。

使用 lsmore 命令来列举 /etc 目录中的内容。

ls -al /etc | more

图 13-10. 把 ls 的输出管道输出给 more

要使用 more 在文本文件内搜索关键字,按 [/] 并键入搜索条目。譬如:

/foo

使用 [Spacebar] 来向前翻阅页码。按 [q] 来退出。