做什么

把文件内容全部打印到 stdout。"concatenate" 的简称——其实它的本意是拼接文件

常用参数

参数 含义
-n 加行号
-b 加行号(空行不编号)
-A 显示所有特殊字符(含 TAB / 换行符)
-s 多个连续空行合一行
-T 显示 TAB 为 ^I
-E 行尾显示 $

实战

cat file.txt
cat -n file.txt                # 加行号
cat file1.txt file2.txt        # 拼接两文件输出
cat *.log > all.log            # ★ 合并所有 log
cat << EOF > config.ini        # heredoc 写文件
[server]
port = 8080
EOF

"Useless use of cat"

很多人养成习惯 cat file | grep pattern——其实 grep pattern file 更短:

# ❌ UUOC(多此一举)
cat file.txt | grep ERROR

# ✓ 直接
grep ERROR file.txt

但管道 + 多文件场景 cat 仍有用:

cat *.log | grep ERROR | sort -u

  • cat 大文件会刷爆屏幕——用 less
  • cat 二进制文件会让终端字符乱码——用 file 先看类型,或 hexdump
  • > 重定向会覆盖目标——用 >> 追加

现代替代:bat

sudo apt install bat
bat file.py                   # 自动语法高亮 + 行号

batcat 的 Rust 重写版,自带语法高亮。装上之后可以 alias cat='bat --paging=never'