本页内容
- Linux cat 命令
- 1. 如何使用 cat 查看文件内容
- 2. 如何使用 cat 显示多个文件
- 3. 如何为文件内容显示行号
- 4. 如何使用 cat 命令创建文件
- 5. 如何将一个文件的内容复制到另一个文件
- 6. 如何让 cat 高亮显示行尾
- 7. 如何让 cat 压缩重复的空行
- 8. 如何让 cat 将制表符显示为 ^I
- 9. 如何让 cat 显示非打印字符
- 10. -A 选项
如果你是 Linux 命令行的常用用户,我相信你一定用过 cat 命令。该工具主要用于显示文件内容,不过它也提供了许多其他小而实用的功能。本文将详细讲解 cat 命令,介绍它的一些关键特性。
本教程中提到的所有示例均在 Ubuntu 22.04 LTS 上测试过。
Linux cat 命令
该工具的 man 手册页对它描述如下:
cat - concatenate files and print on the standard output
以下是 10 个要点,能让你很好地了解 cat,包括它的工作机制以及提供的功能:
1. 如何使用 cat 查看文件内容
cat 命令允许你在标准输出(stdout)上查看文件内容。可以通过以下方式实现:
$ cat [filename]
例如:
$ cat file1.txt

2. 如何使用 cat 显示多个文件
该工具还允许你一次性显示多个文件的内容。可以通过以下方式实现:
$ cat [filename] [filename] ...
例如:
$ cat file1.txt file2.txt

3. 如何为文件内容显示行号
如果你愿意,也可以显示文件内容并在每行开头打印行号。这可以使用工具的 -n 命令行选项来实现。
$ cat -n [filename]
例如:
$ cat -n file1.txt

4. 如何使用 cat 命令创建文件
你也可以使用一条 cat 命令创建一个新文件并填入内容。方法如下:
$ cat > [name-of-new-file]
运行后,该命令会要求你在终端中输入内容。输入完成后,按 CTRL+d 即可。
例如:
$ cat > file4.txt

为了交叉验证该文件是否存在以及查看其中所含内容,我使用了以下命令:

5. 如何将一个文件的内容复制到另一个文件
你也可以使用 cat 将一个文件的内容复制到另一个文件。可以通过以下方式实现:
$ cat [filename-whose-contents-is-to-be-copied] > [destination-filename]
例如:
$ cat file1.txt > file3.txt

请注意,我们在本例中使用的输出重定向运算符(>)会在内容写入前先清空目标文件。因此值得了解的是,还存在另一个重定向运算符(>>),它会将内容追加到目标文件末尾,而不是先清空它。
6. 如何让 cat 高亮显示行尾
如果你愿意,也可以让 cat 高亮显示行尾。该工具会在每行末尾显示 $ 来实现这一点。可以通过工具的 -E 命令行选项启用该功能。
$ cat -E [filename]
例如:
$ cat -E file1.txt

7. 如何让 cat 压缩重复的空行
如果你愿意,也可以让 cat 命令在输出中压缩重复的空行。这可以通过 -s 命令行选项来实现。
$ cat -s [filename]
例如:
$ cat -s file6.txt

上图中第一条命令显示了文件中的所有空行。但由于我们在第二条 cat 命令中使用了 -s 命令行选项,重复的空行被压缩了。
8. 如何让 cat 将制表符显示为 ^I
cat 命令还允许你将制表符显示为 ^I。这可以通过工具的 -T 命令行选项来实现。
$ cat -T [filename]
例如:
$ cat -T file7.txt

从上图可以看到,第一次执行时制表符(TAB)是正常显示的,但当使用 -T 选项执行相同命令时,制表符被替换成了 ^I。
9. 如何让 cat 显示非打印字符
如果你愿意,也可以让 cat 命令显示不可打印字符。这可以通过 -v 命令行选项来实现。
$ cat -v [filename]
例如:
$ cat -v file9.txt
从上图可以看到,第一条命令正常显示了含有不可打印字符的文件内容。但当我们使用 -v 选项时,这些字符以该选项所用的特殊符号形式显示了出来。
请注意,LFD(换行符)和 TAB 字符对于此命令行选项而言是例外。
10. -A 选项
如果你需要同时使用 -v、-E 和 -T 选项,那么不必在命令中写成 -vET,而是可以使用 -A 命令行选项。
$ cat -A [filename]
例如:
$ cat -A file10.txt
从上面的截图可以看到,第一条命令显示文件(file10.txt)包含两行内容。这些行中既包含制表符,也包含一些不可打印字符。因此,当使用 -A 命令行选项运行相同命令时,制表符被替换为 ^I,不可打印字符以特殊符号形式显示。最后,每行都以 $ 结尾。也就是说,-A 实际上完成了 -vET 所能做到的事情。
结语
我们在这里介绍了 cat 命令的大部分选项,多加练习应该能让你很好地掌握这个工具。请务必亲自尝试,完成后可以前往该命令的 man 手册页,了解更多相关内容。