head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。 

📖head与tail命令详解

1. 命令简介

  • head:默认显示文件的 前 10 行 内容,可指定行数或字节数。
  • tail:默认显示文件的 后 10 行 内容,可实时跟踪文件更新,常用于查看日志。

2. 基本语法

1

2

head [选项] [文件...]

tail [选项] [文件...]

  • 文件:一个或多个目标文件,若省略则从标准输入读取。
  • 输出结果:打印到标准输出,可配合 >>>、管道使用。

3. 常用选项

head
选项 说明
-n <行数> 显示前 N 行
-c <字节数> 显示前 N 字节
-q 安静模式,多文件时不显示文件名
-v 总是显示文件名(即使只有一个文件)

tail
选项 说明
-n <行数> 显示最后 N 行
-c <字节数> 显示最后 N 字节
-f 持续跟踪文件增长(实时输出新内容)
-F 类似 -f,但文件被替换时自动重新打开(常用于日志)
-q 多文件时不显示文件名
-v 总是显示文件名

4. 权限要求

  • 用户必须对文件有 读权限 ® 才能使用 head 或 tail
  • 若从管道读取数据,则不依赖文件权限。

5. 使用示例

5.1head基本用法

1

head file.txt

👉 显示 file.txt 的前 10 行。

1

head -n 20 file.txt

👉 显示前 20 行。

1

head -c 100 file.txt

👉 显示前 100 个字节内容。

1

head file1 file2

👉 显示多个文件的前 10 行。

5.2tail基本用法

1

tail file.txt

👉 显示 file.txt 的最后 10 行。

1

tail -n 50 file.txt

👉 显示最后 50 行。

1

tail -c 200 file.txt

👉 显示最后 200 字节内容。

1

tail -f /var/log/messages

👉 实时跟踪日志文件的更新(常用)。

1

tail -F /var/log/nginx/access.log

👉 即使日志文件被轮转(替换),也会继续跟踪新文件。

6. 运维实战场景

场景 A:查看配置文件开头

1

head -n 20 /etc/passwd

👉 查看系统用户列表的前 20 行。

场景 B:快速定位日志结尾

1

tail -n 100 /var/log/syslog

👉 查看最近的 100 行日志。

场景 C:实时跟踪日志

1

tail -f /var/log/nginx/error.log

👉 调试 Nginx 错误日志。

场景 D:多文件日志合并跟踪

1

tail -f /var/log/nginx/*.log

👉 同时跟踪多个日志文件。

场景 E:查看二进制文件头信息

1

head -c 512 /bin/bash | hexdump -C

👉 查看 ELF 文件头。

7. 注意事项

  • 默认行数head 和 tail 默认输出 10 行。
  • 大文件性能tail -f 会保持进程挂起,长期使用需注意资源占用。
  • 日志轮转问题:使用 tail -f 时,如果日志被切割替换,可能会“失效”,推荐 tail -F
  • 字节模式风险-c 按字节截取可能会破坏多字节字符(如 UTF-8 中文)。

8. 小结

  • head:适合 查看文件开头,常用于配置文件、数据文件的结构检查。
  • tail:适合 查看文件结尾或实时更新,是日志分析必备工具。
  • 运维中最常用的是:
    • head -n(查看开头几行)
    • tail -n(查看结尾几行)
    • tail -f / tail -F(实时日志跟踪)


 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐