讲解

查看文件最常用的命令是 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。