cat - 连接文件
这个 猫 命令读取一个或多个文件并将它们复制到标准输出,如下所示:
猫 [文件...]
猫 [文件...]
大多数情况下,你可以想到 猫 类似于 型 DOS下的命令。 您可以使用它来显示不分页的文件,例如:
[我@linuxbox ~]$ 猫 ls-output.txt
[我@linuxbox ~]$ 猫 ls-output.txt
将显示文件的内容 ls-输出.txt. 猫 常用于显示短文本文件。 自从 猫 可以接受多个文件作为参数,也可以用于将文件连接在一起。 假设我们下载了一个被分割成多个部分的大文件(多媒体文件在 Usenet 上经常以这种方式分割),我们想将它们重新连接在一起。 如果文件被命名为:
电影.mpeg.001 电影.mpeg.002 ... 电影.mpeg.099
我们可以使用以下命令将它们重新连接在一起:
猫电影.mpeg.0* > 电影.mpeg
猫电影.mpeg.0* > 电影.mpeg
由于通配符始终按排序顺序扩展,因此参数将按正确顺序排列。
这一切都很好,但这与标准输入有什么关系? 什么都还没有,但让我们尝试别的东西。 如果我们不带参数输入“cat”会发生什么:
[我@linuxbox ~]$ 猫
[我@linuxbox ~]$ 猫
什么都没有发生,它只是像挂着一样坐在那里。 看起来似乎是这样,但它确实在做它应该做的事情。
If 猫 没有给出任何参数,它从标准输入读取,并且由于标准输入默认连接到键盘,它正在等待我们输入一些东西! 尝试添加以下文本并按 Enter:
重定向标准输入
[我@linuxbox ~]$ 猫
敏捷的棕色狐狸跳过了那只懒惰的狗。
[我@linuxbox ~]$ 猫
敏捷的棕色狐狸跳过了那只懒惰的狗。
接下来,输入一个 Ctrl-d (即,按住 Ctrl 键并按“d”)告诉 猫 它已经达到 文件结尾 (EOF) 在标准输入上:
[我@linuxbox ~]$ 猫
敏捷的棕色狐狸跳过了那只懒惰的狗。
敏捷的棕色狐狸跳过了那只懒惰的狗。
[我@linuxbox ~]$ 猫
敏捷的棕色狐狸跳过了那只懒惰的狗。
敏捷的棕色狐狸跳过了那只懒惰的狗。
在没有文件名参数的情况下, 猫 将标准输入复制到标准输出,所以我们看到我们的文本行重复了。 我们可以使用这种行为来创建短文本文件。 假设我们想创建一个名为“lazy_dog.txt”的文件,其中包含我们示例中的文本。 我们会这样做:
[我@linuxbox ~]$ 猫 > lazy_dog.txt
敏捷的棕色狐狸跳过了那只懒惰的狗。
[我@linuxbox ~]$ 猫 > lazy_dog.txt
敏捷的棕色狐狸跳过了那只懒惰的狗。
键入命令,后跟我们要放置在文件中的文本。 记得打字 Ctrl-d 在末尾。 使用命令行,我们实现了世界上最愚蠢的文字处理器! 要查看我们的结果,我们可以使用 猫 再次将文件复制到标准输出:
[我@linuxbox ~]$ 猫lazy_dog.txt
敏捷的棕色狐狸跳过了那只懒惰的狗。
[我@linuxbox ~]$ 猫lazy_dog.txt
敏捷的棕色狐狸跳过了那只懒惰的狗。
现在我们知道了 猫 接受标准输入,除了文件名参数,让我们尝试重定向标准输入:
[我@linuxbox ~]$ 猫 <lazy_dog.txt
敏捷的棕色狐狸跳过了那只懒惰的狗。
[我@linuxbox ~]$ 猫 <lazy_dog.txt
敏捷的棕色狐狸跳过了那只懒惰的狗。
使用“<”重定向运算符,我们将标准输入的源从键盘更改为文件 懒狗.txt. 我们看到结果与传递单个文件名参数相同。 与传递文件名参数相比,这不是特别有用,但它用于演示如何使用文件作为标准输入源。 其他命令更好地利用了标准输入,我们很快就会看到。
在我们继续之前,请查看手册页 猫,因为它有几个有趣的选项。