名称

cat - 连接文件并打印到标准输出

简介

cat [选项]... [文件]...

描述

cat 命令读取每个 文件 的內容,依次写入标准输出。如果没有指定文件或文件为 -,则从标准输入读取。

该命令主要用于:

  • 在屏幕上显示小型文件的内容。

  • 将多个文件合并成一个文件。

  • 创建新文件或向已有文件追加内容。

  • 配合管道实现文本处理。

选项

短选项

长选项

描述

-A

--show-all

等价于 -vET,显示所有不可打印字符(包括制表符和行尾标记)。

-b

--number-nonblank

对非空输出行进行编号,覆盖 -n 效果。

-e

等价于 -vE

-E

--show-ends

在每个行尾显示 $ 字符。

-n

--number

对所有输出行进行编号,从 1 开始。

-s

--squeeze-blank

将连续的空行压缩为一行。

-t

等价于 -vT

-T

--show-tabs

将制表符显示为 ^I

-u

(忽略)保持与旧系统兼容,无实际作用。

-v

--show-nonprinting

使用 ^M- 记法显示非打印字符(换行符和制表符除外)。

--help

显示帮助信息并退出。

--version

显示版本信息并退出。

退出状态

  • 0 – 成功。

  • >0 – 发生错误(例如文件无法读取)。

常用示例

1. 显示文件内容

cat file.txt

2. 显示多个文件内容(依次输出)

cat file1.txt file2.txt

3. 将多个文件合并为一个新文件

cat file1.txt file2.txt > merged.txt

4. 将文件内容追加到另一个文件末尾

cat file1.txt >> existing.txt

5. 从标准输入创建文件(输入完成后按 Ctrl+D 结束)

cat > newfile.txt

6. 向文件追加多行文本(同样以 Ctrl+D 结束)

cat >> existing.txt

7. 显示文件并显示行号(包括空行)

cat -n file.txt

8. 显示文件并显示行号(跳过空行)

cat -b file.txt

9. 压缩连续空行

cat -s file.txt

10. 显示所有不可打印字符(如制表符、行尾)

cat -A file.txt

或使用组合选项:

cat -vET file.txt

11. 将文件内容通过管道传递给其他命令

cat file.txt | grep "pattern"

(虽然许多情况下可以直接使用 grep pattern file.txt,但 cat 管道在某些脚本中仍很常见。)

12. 使用 - 替换标准输入

cat file1.txt - file2.txt

此命令先输出 file1.txt,然后等待标准输入(用户键盘输入),输入结束后再输出 file2.txt。

注意事项

  • 当使用 cat 查看大型文件时,终端会被快速填满,难以阅读。此时应使用 lessmore 分页查看。

  • 不要使用 cat 将二进制文件直接显示在终端,这可能导致终端混乱或异常。

  • 重定向输出时务必小心:> 会覆盖目标文件,如果目标文件是输入文件之一,可能导致文件内容丢失。例如 cat file.txt > file.txt 会清空 file.txt

  • 在无任何参数时,cat 会等待标准输入,此时可以输入内容,按 Ctrl+D 结束。

相关命令

  • tac – 反向显示文件内容(最后一行先显示)。

  • head – 显示文件开头部分。

  • tail – 显示文件结尾部分。

  • more / less – 分页查看文件。

  • nl – 为文件添加行号,功能与 cat -b 类似。

  • od – 以八进制或其他格式显示文件(用于查看二进制数据)。