讲解
查看文件最常用的命令是 cat:把文件内容原样输出到终端。cat -n 可以给每行加上行号,看日志和代码时定位方便。cat 还能把多个文件首尾相接输出:cat a.txt b.txt 会依次打印两个文件——cat 的名字就来自 concatenate(连接)。
但 cat 有个明显短板:文件一大,内容瞬间刷屏,前面的部分根本来不及看。这时该用 less:less 文件名 进入分页查看模式,空格向下翻页、b 向上翻页、/关键词 搜索、n 下一个匹配、G 跳到文件尾、g 回到开头、q 退出。man 手册用的就是 less,操作完全一致。
只想看文件的开头或结尾时,用 head 和 tail:head -n 20 看前 20 行,tail -n 20 看后 20 行(不加 -n 默认 10 行)。tail 还有一个运维神器选项 -f(follow):持续盯着文件,新内容一写入就立刻显示,是实时看日志的标准姿势,按 Ctrl+C 退出。tail -n +50 表示从第 50 行开始看到结尾,也很常用。
示例
# 原样输出整个文件
cat notes.txt
# -n 加行号
cat -n hello.txt
# 连接多个文件一起输出
cat docs/doc1.txt docs/doc2.txt
# 只看开头 3 行和结尾 2 行
head -n 3 app.log
tail -n 2 app.log
# 从第 5 行看到结尾
tail -n +5 app.log
less 和 tail -f 是交互/持续运行的命令,真实终端里这样用:
# 仅示意:分页查看大文件(空格翻页,/ 搜索,q 退出)
less app.log
# 仅示意:实时跟踪日志增长(Ctrl+C 退出)
tail -f app.log
常见坑
- cat 一个超大文件:几个 GB 的日志直接 cat,终端会卡死刷屏。大文件一律 less 或 head/tail 先看个大概。
- tail -f 忘了怎么退出:按 Ctrl+C。另外程序重启换新日志文件后 -f 可能跟不上,这时用 tail -F(大写)可以跟踪文件重建。
- 以为 cat 只能从前往后:tac 可以倒序输出(macOS 没有 tac,可用 tail -r)。日常用得少,知道有这回事即可。
- 在 less 里找中文搜不到:终端编码问题,确保 LANG 设置为 UTF-8(现代系统默认就是)。
小结
小文件 cat,大文件 less,开头结尾 head/tail,实时日志 tail -f。行号用 cat -n。下一节学习在茫茫文件树里按条件找人:find。