head 和 tail 是 Linux 中用于查看文件开头和结尾的命令。head 显示文件的前几行,tail 显示文件的后几行,常用于查看日志文件。
1 2 3 4 5 6 7 8 9 10 11 12
| ➜ head --help 用法: head [选项]... [文件]... 将每个指定文件的头10 行打印到标准输出。 如果指定了多于一个文件,在每一段输出前会输出文件名作为头。 如果指定文件为"-"或没有指定文件,则从标准输入读取。
-c, --bytes=[-]K 显示前K字节;如果K前有"-",则显示除最后K字节外的所有内容 -n, --lines=[-]K 显示前K行;如果K前有"-",则显示除最后K行外的所有内容 -q, --quiet, --silent 不显示文件名 -v, --verbose 总是显示文件名 --help 显示此帮助信息并退出 --version 输出版本信息并退出
|
head 命令
基本语法
常用选项
| 选项 |
说明 |
-n, --lines=K |
显示前 K 行(默认 10 行) |
-c, --bytes=K |
显示前 K 字节 |
-q, --quiet |
不显示文件名 |
-v, --verbose |
总是显示文件名 |
基本使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ➜ head file.txt
➜ head -n 20 file.txt
➜ head -20 file.txt
➜ head -c 100 file.txt
➜ head -n -10 file.txt
➜ head file1.txt file2.txt
|
tail 命令
基本语法
常用选项
| 选项 |
说明 |
-n, --lines=K |
显示后 K 行(默认 10 行) |
-c, --bytes=K |
显示后 K 字节 |
-f, --follow |
实时跟踪文件(常用于日志) |
-F, --follow=name --retry |
跟踪文件(文件被删除重建后继续跟踪) |
-q, --quiet |
不显示文件名 |
-v, --verbose |
总是显示文件名 |
基本使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| ➜ tail file.txt
➜ tail -n 20 file.txt
➜ tail -20 file.txt
➜ tail -c 100 file.txt
➜ tail -n +10 file.txt
➜ tail -f log.txt
➜ tail -F log.txt
|
实时跟踪日志
1 2 3 4 5 6 7 8 9 10 11
| ➜ tail -f /var/log/nginx/access.log
➜ tail -f log1.txt log2.txt
➜ tail -f -n 100 log.txt
➜ tail -f log.txt | grep --color=always "ERROR"
|
实际应用场景
查看文件头尾
1 2 3 4 5
| ➜ head -n 20 /etc/nginx/nginx.conf
➜ tail -n 50 /var/log/syslog
|
日志监控
1 2 3 4 5 6 7 8
| ➜ tail -f /var/log/nginx/error.log
➜ tail -f /var/log/app/*.log
➜ tail -f access.log | grep "404"
|
查看特定范围
1 2 3 4 5
| ➜ head -n 20 file.txt | tail -n 11
➜ sed -n '10,20p' file.txt
|
与其他命令组合
1 2 3 4 5 6 7 8
| ➜ tail -n 100 log.txt | grep "ERROR"
➜ tail -n 100 log.txt | grep -c "ERROR"
➜ tail -n 1000 access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
|
注意事项
- 实时跟踪:
tail -f 会持续监控文件,按 Ctrl+C 退出
- 文件重建:使用
-F 选项可以在文件被删除重建后继续跟踪
- 性能:对于大文件,
tail 比 head 更高效(从文件末尾读取)
- 多文件:可以同时查看多个文件,每个文件会显示文件名
参考文献