cat 是 Linux 和 Unix-like 操作系统中一个非常基础且常用的命令,其名称来源于 "concatenate"(连接)的缩写,尽管名称暗示了其核心功能是连接文件,但 cat 命令在实际使用中更多地被用于显示文件内容、创建新文件以及合并文件等操作,它是 Linux/Unix 用户日常工作中不可或缺的工具之一,尤其适合处理文本文件。

cat 命令的基本功能
cat 命令最常用的功能是显示文件的内容,当用户在终端中输入 cat filename 并按下回车后,终端会立即输出该文件的全部内容,若有一个名为 example.txt 的文件,其内容为 "Hello, this is a test file.",执行 cat example.txt 后,终端将直接显示这行文本,需要注意的是,cat 会一次性输出整个文件的内容,如果文件较大,终端可能会快速滚动,导致用户难以阅读,可以结合 more 或 less 命令(如 cat example.txt | more)来实现分页显示。
除了显示文件,cat 还可以用于创建新文件或向现有文件追加内容,通过输入 cat > newfile.txt,用户可以直接在终端中输入文本,按下 Ctrl+D 组合键后,输入的内容将保存到 newfile.txt 文件中,如果使用 cat >> existingfile.txt,则可以将终端输入的内容追加到现有文件的末尾,而不是覆盖原有内容,这种功能在需要快速编辑或补充文件时非常便捷。
cat 命令的常用选项
cat 命令支持多种选项,可以扩展其功能以满足不同的需求,以下是一些最常用的选项及其作用:
| 选项 | 全称 | 功能描述 |
|---|---|---|
-n |
--number |
显示行号,即在输出的每一行前加上行号编号。 |
-b |
--number-nonblank |
与 -n 类似,但只为非空行编号,空行不显示行号。 |
-s |
--squeeze-blank |
将连续的多个空行压缩为一个空行,减少输出中的冗余空行。 |
-A |
--show-all |
显示所有字符,包括不可见字符(如制表符、换行符等),通常用 ^ 和 M- 前缀表示。 |
-E |
--show-ends |
在每行结尾显示 符号,便于识别换行符。 |
-T |
--show-tabs |
将制表符显示为 ^I,帮助用户识别文件中的制表符。 |
-v |
--show-nonprinting |
显示非打印字符(除换行符和制表符外),但用可见字符表示。 |
执行 cat -n example.txt 会在输出文件内容的同时为每一行添加行号;而 cat -A example.txt 则会显示文件中的所有特殊字符,适合调试或检查文件格式问题。

cat 命令的高级用法
cat 命令不仅可以处理单个文件,还可以同时处理多个文件,并将它们的内容合并输出。cat file1.txt file2.txt > combined.txt 会将 file1.txt 和 file2.txt 的内容合并后输出到 combined.txt 文件中(combined.txt 已存在,则会被覆盖),如果希望追加内容而非覆盖,可以使用 >> 操作符,如 cat file3.txt >> combined.txt。
cat 命令可以与管道()结合使用,将输出作为其他命令的输入。cat largefile.txt | grep "keyword" 可以在 largefile.txt 中搜索包含 "keyword" 的行;cat file.txt | sort 则会对文件内容进行排序,这种灵活性使得 cat 成为命令行脚本中的重要组成部分。
注意事项
尽管 cat 功能强大,但在处理大文件时应谨慎使用,由于 cat 会一次性加载整个文件到内存,对于非常大的文件(如几 GB 的日志文件),可能会导致内存不足或终端响应缓慢,建议使用 less、more 或 head/tail 等命令进行分块或部分查看。cat 在合并文件时不会自动添加分隔符,如果需要区分不同文件的内容,可以手动添加分隔符,如 cat file1.txt; echo "---"; cat file2.txt。
相关问答 FAQs
cat 和 less 有什么区别?
cat 和 less 都可以用于查看文件内容,但主要区别在于交互性。cat 会一次性输出整个文件内容,适合查看小文件或需要快速处理的情况;而 less 是分页显示工具,允许用户上下滚动、搜索内容,适合查看大文件。less 不会一次性加载整个文件到内存,因此更高效。

如何使用 cat 命令创建一个包含多行文本的文件?
可以通过以下两种方式实现:
- 直接输入:在终端执行
cat > newfile.txt,然后逐行输入文本,最后按下Ctrl+D保存。 - 使用 here document:执行
cat << EOF > newfile.txt,输入多行文本后,单独输入EOF即可保存。cat << EOF > newfile.txt This is line 1. This is line 2. EOF
