首页/系统/Linux 运维命令速查/cat 查看与拼接文件
文本处理77 条

cat 查看与拼接文件

把文件内容输出到屏幕或管道;-n 加行号、-A 显示隐藏字符,也是 heredoc 写文件的经典载体。

Linux 运维命令速查系统更新于 2026-10-13

cat 是什么

cat 的职责是把文件内容按顺序写到标准输出(concatenate),因此它同时承担三件事:查看小文件、把多个文件拼成一个流、以及配合重定向与 heredoc 创建文件。它不是一个查看器——没有分页、没有搜索、没有行号高亮,把几十兆的日志交给它只会刷屏。超过一屏的内容应改用 less,只有在脚本里需要内容本身而不是给人看时才用 cat。

基本信息

适用平台Linux、macOS、BSD(GNU coreutils / BSD cat)
命令语法cat [选项] [文件...];不给文件则从标准输入读取
常用选项-n 为所有行编号、-b 只对非空行编号、-s 把连续空行压缩为一行、-E 在行尾显示 $、-T 把制表符显示为 ^I、-A 等价于 -vET(显示不可见字符)
权限要求读取文件需要该文件的读权限,以及路径上各级目录的执行权限
典型组合重定向 > 覆盖写入、>> 追加、heredoc 就地生成文件、管道交给后续命令处理

典型使用场景

  • 查看小文件:几十行以内的配置或脚本直接输出,比打开编辑器快
  • 拼接文件:把多个分片按顺序合成一个文件,例如合并日志片段
  • 生成文件:用 heredoc 快速写配置文件或脚本片段,避免反复打开编辑器
  • 检查不可见字符:用 -A 确认行尾是 LF 还是 CRLF、制表符与空格是否混用
  • 管道预处理:把内容送入 grep、awk 或排序命令处理
  • 对齐行号:-n 输出行号,便于与报错信息里的行号对应

常用示例

常用示例
cat app.conf
cat -n app.conf          # 所有行加行号
cat -A app.conf          # 显示制表符(^I)与行尾($)
cat -s access.log | head # 压缩连续空行
cat file1 file2 > merged.txt
cat > note.txt <<'EOF'
hello $USER
EOF
sudo tee /etc/app/app.conf > /dev/null <<'EOF'
port = 8080
EOF
cat /dev/null > big.log   # 清空文件但保留 inode

相关写法对照

写法作用注意
> 文件覆盖写入,原有内容立即丢失确认目标后再执行
>> 文件追加写入常见于日志与汇总场景
<<'EOF'heredoc,带引号时不做变量与命令展开模板里想保留 $VAR 就用引号
<<EOFheredoc,不带引号时会展开变量与命令替换想写入当前用户名等实际值时不加引号
cat -A显示全部不可见字符排查 CRLF 与制表符混用
tee写入文件同时输出到终端需要 root 权限写文件时配合 sudo 使用
cat 拼接多个文件不会插入任何分隔符,多段内容首尾相接,阅读时容易混淆边界。需要标记时用 sed 或 awk 在每段前插入文件名与时间戳,或改用 for 循环逐文件处理。另外要分清工具职责:实时变化用 tail -f,分页与搜索用 less,统计行数用 wc -l,把 cat 当作它们的替代品是常见误用。
需要 root 权限写文件时,sudo cat > file 不生效——重定向由当前 shell 完成,提权没有覆盖到重定向。正确写法是 sudo tee file,或 sudo sh -c 'cat > file';清空日志类文件可以用 : > file。
不要用 cat 读二进制文件:控制字符会打乱终端显示,严重时终端状态错乱需要执行 reset 恢复。先 file 文件名 判断类型,查看二进制用 xxd、hexdump 或 less 更安全。
cat 在处理「参数以短横线开头」与「空文件」时有细节:文件名以 - 开头要写成 cat -- -文件 或 ./文件;读空文件不会有输出也不报错,脚本里判断文件是否为空应改用 test -s 文件,而不是看 cat 有没有输出。

与相关命令的分工

命令作用适用
nl加行号且可自定义宽度与分隔符生成对外的带行号清单
tac按行反向输出查看最近写入的尾部记录
rev反转每行字符顺序配合 cut 取行尾字段
wc -l统计行数只想计数时不必先拼接
tee同时写文件与标准输出需要提权写入时
想知道文件有多少行用 wc -l,不必绕 cat -n 再取最后一行;需要固定行号宽度、自定义分隔符,或用空格补齐时改用 nl,它还能选择是否给空行编号,比 cat -n 更适合生成给人看的清单。

易错点

  • cat 接管道是常见无用开销(cat f | grep x),直接 grep x f 或把文件作为参数交给命令即可,还能省掉一次进程创建与数据中转
  • 查看大文件用 cat 会刷屏且无法翻阅,应改用 less 或先 head、tail 取样
  • 用 cat 读二进制文件会污染终端,严重时字符集错乱,需要先 file 判断类型
  • heredoc 不加引号会展开变量与命令替换,写模板时容易把想要的 $ 占位符提前替换掉
  • cat 合并文件不插分隔符,多文件拼在一起的边界不清,追加日志时尤其容易混淆来源
  • 用 cat 把多个文件拼进管道再交给解析脚本,来源信息全部丢失;需要区分来源时用 awk 打印 FILENAME 或在循环里逐个处理

数据来源与参考

  • man 1 cat(GNU coreutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌