Red Hat Linux 有一个工具程序,它能够帮助你保留简短列表,将这些列表收集起来,甚至向你透漏一点你的系统信息。
这个工具叫做 cat,它是 concatenate(连锁) 的简写,意思是合并文件。
cat 命令还会在屏幕上显示整个文件的内容(譬如,键入 cat filename.txt)。如果文件较长,它会在屏幕上飞快地滚过。要防止这一效果的发生,使用 cat filename.txt | less 命令。
一起使用管道(|)和 less 命令会一页一页地显示文件。然后,你便可以使用向上或向下的箭头键在页码中向前或向后移动。关于使用管道来合并两个不同功能的详细信息,请参阅第 13.10 节。
重导向就是使 shell 改变它所认定的标准输出,或者改变标准输出的目标。
要重导向标准输出,使用 > 符号。把 > 符号放在 cat 命令之后(或在任何写入标准输出的工具程序和应用程序之后),会把它的输出重导向到跟在符号之后的文件中。
譬如,使用 cat 自身会在屏幕上输出你所输入的内容,如同是在重复你刚键入的行。下面的例子显示了 cat 会重复你输入的每一行:
要把 cat 的输出重导向到一个文件中,在
shell 提示下键入以下命令(按
cat > sneakers.txt |
按
注意到图 13-6中的区别了吗?此处并没有重复显示。这是因为 cat 的标准输出已经被重导向了。重导向的地方是你刚刚制作的一个叫做 sneakers.txt 的崭新文件。
当你运行 cat 命令时,你会发现你所在目录中的文件(如果你想列举这些文件,键入 ls)。
如前所示,你可以使用 cat 来读取文件。在提示下,键入:
cat sneakers.txt |
小心 | |
---|---|
在你把输出重导向入文件时,请谨慎从事,因为你会很容易地覆盖一个现存文件!除非你想代替该文件,请确保你所创建的文件名与已经存在的文件名不一样。 |
再把输出重导向到另一个文件,暂且把它叫做
home.txt。在这个例子中,键入命令
cat > home.txt,然后按
bring the coffee home take off shoes put on sneakers make some coffee relax! |
现在,在一个空行上,使用
下一步,使用 cat 把 home.txt 和 sneakers.txt 连接起来,然后再把两个文件的输出重导向到一个叫做 saturday.txt 的新文件(你会在图 13-7 中发现一个示例)。键入下面的命令:
cat sneakers.txt home.txt > saturday.txt |
你可以看到 cat 已经把 home.txt 添加到 sneakers.txt 的结尾处。
你可以使用输出重导向来在一个现存文件之后添加新信息。这与你使用 > 符号相似,你是在告诉 shell 把信息发送到标准输出之外的某个地方。
然而,当你使用 >> 时,你是在给文件添加信息,而不是完全替换文件内容。
最好的解释方法是向你演示实例。我们便使用刚才已创建的两个文件(sneakers.txt 和 home.txt),然后使用后补输出的符号把它们连接起来。你想把 home.txt 的信息添加到 sneakers.txt 的信息中去,因此键入:
cat home.txt >> sneakers.txt |
现在,使用 cat sneakers.txt 的命令来检查一下。最终的输出在文件结尾处显示了 home.txt 的内容:
buy some sneakers then go to the coffee shop then buy some coffee bring the coffee home take off shoes put on sneakers make some coffee relax! |
你键入的命令把文件 home.txt 的输出后补到文件 sneakers.txt 中去。
通过后补输出,你利用了现存文件而不必创建新文件,从而为自己节省些时间(以及一些磁盘群集)。
现在比较一下文件 sneakers.txt 和文件 saturday.txt 的结果,你就会看到它们一模一样。要做比较,键入:
cat sneakers.txt; cat saturday.txt |
这两个文件的内容都会被显示 — 先是 sneakers.txt 文件,然后是 saturday.txt 文件 (如 图 13-8 所示)。