cat
Linux 的 cat 命令起初看起来非常简单,似乎没有必要。但实际上,它是一个 Unix 哲学极好的例子:创建只做一件事并做好它的程序。cat 擅长的事情是显示一个或多个文件的内容。许多其他实用程序可以处理此任务,但没有一个具有 cat 的所有选项。 首先,让我们看看最简单的情况
cat /etc/motd此命令会将 motd (每日消息) 文件的内容显示到您的屏幕上。与 more (或 less) 不同,cat 不会在屏幕已满时停止。 这是一个特性,而不是一个错误。 当将 cat 的输出重定向(使用 > 运算符)到设备(例如,打印机或调制解调器)时,您不希望出现暂停
cat /etc/motd > /dev/modemcat 来自单词 conCATenate (连接),它描述了它的最佳用途之一:连接或“粘合在一起”两个或多个文件。 如果您有几个关于动物的单独文件,想要将它们收集到一个文件中,cat 将为您完成这项工作。 例如
cat tiger lion cougar > bigcats会将连接输出(包含按指定顺序排列的三个猫科动物文件)重定向到一个名为 bigcats 的新文件中。如果您找到另一个文件 panther,需要将其添加到 bigcats 文件中,请使用带有附加 (>>) 运算符的 cat,如下所示
cat panther >> bigcats使用 >> 可确保保留 bigcats 的任何先前内容。panther 的内容将附加到 bigcats。如果您在此处使用 > 运算符,您将用 panther 的内容替换 bigcats 的内容。 当您希望添加到现有文件的末尾时,始终使用 >>。
小心不要在使用 cat 命令重定向输出时使用相同的文件名,否则可能会丢失其中一个文件。例如,不要这样做
cat myfile yourfile > yourfile
在这种情况下,yourfile 被 myfile 覆盖。
cat 的另一个非常方便的用途是重定向标准输入,如下所示
cat > newfile some notes I want to save in newfile. CTRL-D
这将创建一个新文件(名为 newfile)。您可以输入任意数量的文本,然后键入 ctrl-D 以保存文件。您可以退格修改错误,但在按下 Enter 键后,您无法返回到上一行。我经常将 cat 的这个特定选项教给新手 Unix 用户,他们偶尔需要创建简单的文件,但又不想学习 vi 或其他简单的编辑器。可能存在没有 vi 或您喜欢的编辑器的 Unix 系统,但 cat 始终存在。
运算符 >> 也可以用于将注释附加到 newfile 的末尾
cat >> newfile Adding another note to newfile. CTRL-D
与大多数 Unix 命令一样,可以通过命令行开关修改 cat 的行为。如果您使用 diff 命令比较文件,它将显示文件中不同的行数。但是,大多数文件都没有行号。使用带有 -n 开关的 cat 对文件的每一行进行编号
cat -n kittens > num_kittens
文件 num_kittens 是 kittens 的副本,每行前面都有一个数字,包括空行。 使用 -b 开关仅对非空行进行编号。
最后一个 cat 技巧:使用 -v 开关将显示“隐藏”字符,例如可能不会在编辑器中显示的控制字符。 尝试这个实验
cat > catestv CTRL-v testing CTRL-O Testing esc-b CTRL-D
如果我们使用 cat 查看文件,我们只会看到正常的文本
cat catestv Testing Testing要查看文件中实际的内容,请使用 -v 选项
cat -v catestv ^V Testing ^O Testing ^[b在这里,字符前面的 ^ 表示一个控制字符。 (CTRL-[ 与 ESC 相同)。
Patrick Hill (apathos@bham.net) 是阿拉巴马州伯明翰 Alabama Power Company 的一名计算机工程师。 在办公室里,他被称为使用 cat 作为编辑器的家伙。