如果您正在输入的数据是从另一个窗口粘贴而来的 X 选择,则该单命令行程序通常更快速,因为您不必调用某个编辑器、打开目标文件、移动到文件末尾、粘贴选择、保存文件然后再退出编辑器。当您是在粘贴格式化或特殊格式化的文本,并且您希望保留该格式(因为某些文本编辑器和编辑模式在您粘贴 X 选择时会对其进行重新格式化)时,单命令行程序也会更有用。
虽然此操作非常常见,是一项日常活动,但是您必须小心使用 shell 操作符来追加 重定向(>>) 而不是普通重定向操作符 (>);如果您错误地使用了后者,则会使用原本打算追加的文本改写文件的原有内容。
若要将一个文件的全部内容追加到另一个文件结尾,您可以给出文件名:
$ cat footnotes.txt >> file
如果您仅追加单行而不是多行或整个文件,您可以使用 echo 而不是 cat:
$ echo "192.255.255.255 bigblue" >> /etc/hosts
若要追加从 1 开始进行项目编号的文本行,可以使用 cat 的 -n 选项;这样将在各行前面附加行号(最多偏移五个空格字符)和一个制表符。添加 -b 选项可以禁止对空白行编号:
$ cat -nb > file
This line is numbered
And so is this
Another numbered line
Ctrl-D
$ cat file
1 This line is numbered
2 And so is this
3 Another numbered line
$
在文件开头插入文本
通过使用连字符 (-) 指定标准输入并写到一个新文件,您可以使用 cat 在文件开头插入文本:
$ cat - file > newfile
This is the beginning of the file
And then the old file is inserted
Below this line:
Ctrl-D
$
虽然这个单命令行程序非常简单,但是它的缺点在于创建了一个新文件。如果您希望将文本插入原始文件,则必须进行的重命名将使得此单命令行程序成事不足败事有余。更好的方法是使用即将介绍的 ed。
显示非打印字符
cat 具有若干个有用的选项。其中一些选项控制它输出非打印字符的方式,例如制表符和控制字符。若要确定某个文件或某一组文本文件是否有嵌入的控制字符,可以使用这些选项。例如,如果某个文件具有尾随空格,您就可以使用这些选项:
$ cat -vet input.txt
This line has trailing blanks. $
This line does not.$
$
这些选项随 UNIX 实现而异;表 1 提供了标准 IBM AIX® 操作系统的选项。
表 1. AIX cat 中用于输出控制的选项
选项 描述
-b 不对空白行编号。
-e 使用 $ 字符显示行尾。
-n 从 1 开始对所有输出行编号。
-q 使用静默操作(禁止错误消息)。
-r 将所有多个空行替换为单行(“压缩”空白)。
-S 将多个空白行压缩到单行中(与 -r 相同)。
-s 禁止错误消息(静默操作)。
-t 将制表符显示为 ^I。
-u 不对输出进行缓冲。
-v 可视地显示非打印控制字符。
![]() |

