做什么
把文件内容全部打印到 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大文件会刷爆屏幕——用lesscat二进制文件会让终端字符乱码——用file先看类型,或hexdump>重定向会覆盖目标——用>>追加
现代替代:bat
sudo apt install bat
bat file.py # 自动语法高亮 + 行号
bat 是 cat 的 Rust 重写版,自带语法高亮。装上之后可以 alias cat='bat --paging=never'。