
cat命令是 concatenate(连接)的缩写,但其功能远不止于此。它是用于查看、创建、合并文件内容的瑞士军刀。
命令功能
cat命令主要有三大功能:
查看文件内容并显示在终端上。
创建新的小型文件。
合并多个文件的内容并输出(可以输出到屏幕或另一个文件)。
命令语法
基本语法格式如下:
如果指定多个文件,cat会按顺序显示它们的内容。
常用选项
选项 | 全称 | 说明 |
|---|
-n
| --number
| 显示行号。对所有输出的行进行编号。 |
-b
| --number-nonblank
| 显示非空行的行号。空行不编号。 |
-s
| --squeeze-blank
| 压缩连续空行。将多个相邻的空行压缩成一行。 |
-E
| --show-ends
| 在每行末尾显示 $符号。这有助于查看行尾的空白字符。 |
-T
| --show-tabs
| 将制表符(Tab)显示为 ^I。这有助于查看缩进。 |
-A
| --show-all
| 相当于 -vET。显示所有不可见的字符(行尾符、制表符等)。 |
-v
| --show-nonprinting
| 显示非打印字符(除了换行符和制表符)。 |
常用示例
1. 查看文件内容(最基本用法)
在终端中显示 file.txt文件的全部内容。
2. 查看多个文件内容
按顺序显示 file1.txt和 file2.txt的内容。
3. 显示行号
显示 file.txt的内容,并在每一行前加上行号(包括空行)。
输出示例:
1 This is line one.
2
3 This is line three after a blank line.
4. 显示非空行的行号
显示 file.txt的内容,只对非空行编号。
输出示例:
1 This is line one.
2 This is line three after a blank line.
5. 创建新文件(与重定向符 >合用)
创建一个名为 newfile.txt的新文件。输入完命令后,你可以开始键入内容,按 Ctrl + D(EOF)保存并退出。
cat > newfile.txt
This is the content of my new file.
I can type multiple lines.
Press Ctrl+D to save and exit. [Ctrl+D is pressed here]
6. 向文件末尾追加内容(与重定向符 >>合用)
在已存在的文件 existingfile.txt的末尾追加新内容。
cat >> existingfile.txt
This line will be appended to the end of the file.
[Ctrl+D]
7. 合并多个文件到一个新文件
将 file1.txt和 file2.txt的内容合并,并输出到一个全新的文件 combined_file.txt中。
cat file1.txt file2.txt > combined_file.txt
注意:如果 combined_file.txt已存在,它将被覆盖。
8. 合并多个文件并追加到一个文件
将 file3.txt的内容追加到 combined_file.txt的末尾。
cat file3.txt >> combined_file.txt
9. 显示不可见字符
使用 -A选项查看文件中的所有字符,包括行尾符($)和制表符(^I)。这在检查脚本格式时非常有用。
输出可能类似于:
#!/bin/bash^M$
echo "Hello World"^M$
^Iecho "This line is indented with a tab"^M$
10. 压缩连续空行
如果文件中有很多连续的空行,这个选项可以将它们压缩为一个空行,使输出更简洁。
cat -s file_with_blanks.txt
11. 与管道符 |结合使用
cat经常与其他命令通过管道 (|) 连接,将其输出的内容作为另一个命令的输入。
例如,将 file.txt的内容发送给 grep命令进行搜索:
cat file.txt | grep "keyword"
或者发送给 more或 less命令进行分页查看(对于长文件,这比直接 cat更好):
重要注意事项和局限性
不适合查看长文件:cat会一次性输出文件的所有内容。如果文件非常大(如日志文件),它会瞬间刷满你的终端屏幕,让你无法看清开头的内容。对于长文件,应使用分页命令:
less file.txt(推荐:可上下翻页、搜索)
more file.txt(基础分页)
文件覆盖风险:使用重定向符号 >时要非常小心,因为如果目标文件已存在,它会被静默覆盖,且无法恢复。例如,cat file1 > important_file会清空 important_file的内容并写入 file1的内容。
并非编辑器:cat > file适合创建内容很少的文件,但对于编辑现有文件或进行复杂编辑,应该使用专门的文本编辑器,如 nano, vim, gedit等。
总结
你想做的事 | 命令 |
|---|
快速查看短文件 | cat filename
|
查看带行号的文件 | cat -n filename
|
创建一个小文件 | cat > newfile
|
合并文件A和B到新文件C | cat A.txt B.txt > C.txt
|
将文件A追加到文件B末尾 | cat A.txt >> B.txt
|
检查文件中的隐藏字符 | cat -A filename
|
将文件内容作为其他命令的输入 | `cat file |
cat命令是 Linux 入门必须掌握的第一个命令之一,它简单但功能多样,是文件操作的基础。