Shell 用cat
进行拼接,cat
命令能够显示或拼接文件内容,不过它的能力远不止如此。比如说,cat
能够将标准输入数据与文件数据组合在一起。通常的做法是将stdin
重定向到一个文件,然后再合并两个文件。而cat
命令一次就能搞定这些操作。接下来你会看到该命令的基本用法和高级用法。
实战演练
cat
命令是一个经常会用到的简单命令,它本身表示conCATenate(拼接)。
用cat
读取文件内容的一般语法是:
该命令将作为命令行参数的文件内容拼接在一起并将结果发送到stdout
。
- 打印单个文件的内容
- 打印多个文件的内容
cat
命令不仅可以读取文件、拼接数据,还能够从标准输入中读取。
管道操作符可以将数据作为cat
命令的标准输入:
cat
也可以将文件内容与终端输入拼接在一起。
下面的命令将stdin
和另一个文件中的数据组合在一起:
在上例中,-
被作为stdin
文本的文件名。
补充内容
cat
命令还有一些用于文件查看的选项。可以在终端会话中输入man cat
来查看完整的选项列表。
- 去掉多余的空白行
有时候文本文件中可能包含多处连续的空白行。如果你想删除这些额外的空白行,可以这样做:
考虑下面的例子:
另外也可以用tr删除所有的空白行,我们会在2.6节详细讨论。
- 将制表符显示为
^I
单从视觉上很难将制表符同连续的空格区分开。对于Python而言,制表符和空格是区别对待的。在文本编辑器中,两者看起来差不多,但是解释器将其视为不同的缩进。仅仅在文本编辑器中进行观察是很难发现这种错误的。cat有一个特性,可以将制表符识别出来。这有助于排查缩进错误。
用cat命令的-T选项能够将制表符标记成^I。例如:
- 行号
cat
命令的-n
选项会在输出的每一行内容之前加上行号。例如:
别担心,cat命令绝不会修改你的文件,它只是根据用户提供的选项在
stdout
中生成一个修改过的输出而已。可别尝试用重定向来覆盖输入文件。shell在打开输入文件之前会先创建新的输出文件。cat
命令不允许使用相同的文件作为输入和重定向后的输出。利用管道并重定向输出会清空输入文件。
选项
-n
会为包括空行在内的所有行生成行号。如果你想跳过空白行,可以使用选项-b
。