目录

一、命令概述

文件显示命令虽然语法简单,但在实际工作中起到命令连接数据处理的关键作用。特别是cat命令,是管道操作中最常用的命令之一。

二、cat 命令 - 连接并显示文件

基本语法

cat [选项] 文件1 文件2 文件3...

常用选项

选项 说明 示例
-n 显示行号(包括空行) cat -n file.txt
-b 显示行号(忽略空行) cat -b file.txt
-A 显示所有控制字符 cat -A file.txt
-s 压缩连续空行为一行 cat -s file.txt

实用示例

# 显示单个文件
cat /etc/hosts

# 显示多个文件(连续显示)
cat file1.txt file2.txt file3.txt

# 使用通配符显示多个配置文件
cat /etc/*.conf

# 显示带行号的内容
cat -n /etc/passwd

实际输出示例

[zhangwei@localhost ~]$ cat -n asound.conf
     1  #
     2  # Place your global alsa-lib configuration here...
     3  #
     4  #tttt
     5  #ttt
     6  #txxxxxxxxxxxxx

三、nl 命令 - 显示行号

与 cat -n 的区别

# 创建测试文件(包含空行)
echo -e "第一行\n\n第三行\n\n第五行" > test.txt

# cat -n 显示(空行也编号)
cat -n test.txt
# 输出:
#     1  第一行
#     2  
#     3  第三行
#     4  
#     5  第五行

# nl 显示(空行不编号)
nl test.txt
# 输出:
#     1  第一行
#
#     2  第三行
#
#     3  第五行

四、more 命令 - 分页显示

基本使用

# 查看大文件
more /var/log/syslog

# 结合其他命令
ls -la /etc | more
cat large_file.txt | more

交互式操作快捷键

快捷键 功能 说明
回车 下一行 向下滚动一行
空格 下一页 向下翻一页
Ctrl+Ff 向前一页
Ctrl+Bb 向后一页
= 显示当前行号 显示当前位置
q 退出 停止查看
/pattern 搜索 搜索指定文本

五、less 命令 - 增强型分页显示

功能对比(more vs less)

功能 more less
向后翻页 支持 支持
向前翻页 有限支持 完全支持
搜索功能 基本 强大
行号显示 支持
文本高亮 支持

常用操作

# 基本使用
less /var/log/bootstrap.log

# 带行号显示
less -N large_file.txt

# 忽略大小写搜索
less -I logfile.txt

less 交互命令

命令 功能 说明
上下箭头 逐行滚动
PageUp/PageDown 翻页
/pattern 向下搜索 n继续搜索
?pattern 向上搜索 N继续搜索
g 跳到文件开头
G 跳到文件末尾
:n 下一个文件(多文件时)
:p 上一个文件(多文件时)
q 退出

六、head 命令 - 显示文件开头

语法格式

head [选项] 文件

选项详解

选项 说明 示例
-n NUM 显示前NUM行 head -n 5 file.txt
-c NUM 显示前NUM字节 head -c 100 file.txt
-n -NUM 显示到倒数第NUM行 head -n -2 file.txt
(无选项) 显示前10行 head file.txt

实际示例

[zhangwei@localhost ~]$ cat asound.conf
#
# Place your global alsa-lib configuration here...
#
#tttt
#ttt
#txxxxxxxxxxxxx

# 显示前1行
[zhangwei@localhost ~]$ head -n 1 asound.conf
#

# 显示前2行
[zhangwei@localhost ~]$ head -n 2 asound.conf
#
# Place your global alsa-lib configuration here...

# 显示到倒数第2行(排除最后2行)
[zhangwei@localhost ~]$ head -n -2 asound.conf
#
# Place your global alsa-lib configuration here...
#
#tttt

七、tail 命令 - 显示文件末尾

语法格式

tail [选项] 文件

选项详解

选项 说明 示例
-n NUM 显示最后NUM行 tail -n 5 file.txt
-n +NUM 从第NUM行显示到末尾 tail -n +10 file.txt
-f 实时跟踪文件变化 tail -f logfile.log
-F 实时跟踪(文件旋转时也跟踪) tail -F logfile.log
-c NUM 显示最后NUM字节 tail -c 100 file.txt

实际示例

# 显示最后5行
tail -n 5 /var/log/syslog

# 从第20行显示到文件末尾
tail -n +20 file.txt

# 实时监控日志文件(重要!)
tail -f /var/log/nginx/access.log

# 监控可能被轮转的日志文件
tail -F /var/log/syslog

八、命令组合实战

查看文件中间部分

# 查看第11-20行(组合head和tail)
head -n 20 file.txt | tail -n 10

# 查看第5行到倒数第5行
tail -n +5 file.txt | head -n -5

实时日志监控与过滤

# 监控包含"ERROR"的日志行
tail -f /var/log/app.log | grep "ERROR"

# 监控日志并显示时间戳
tail -f /var/log/syslog | while read line; do echo "$(date): $line"; done

九、实战练习题

题目1:基础文件查看

要求:查看 /etc/passwd 文件的第15-25行内容

解答

head -n 25 /etc/passwd | tail -n 11
# 或者
sed -n '15,25p' /etc/passwd

题目2:日志文件分析

要求:监控系统日志,只显示包含”Failed password”的行(用于监控SSH登录失败)

解答

tail -f /var/log/auth.log | grep "Failed password"

题目3:配置文件检查

要求:查看Apache配置文件的非注释行(排除以#开头的行)

解答

grep -v "^#" /etc/apache2/apache2.conf | head -n 20

题目4:大文件抽样查看

要求:有一个100MB的日志文件,快速查看文件的开头、中间和结尾部分

解答

# 查看开头
head -n 50 large_log.log

# 查看中间(第5000-5050行)
tail -n +5000 large_log.log | head -n 50

# 查看结尾
tail -n 50 large_log.log

题目5:实时日志统计

要求:实时监控Nginx访问日志,每10秒统计一次访问量

解答

tail -f /var/log/nginx/access.log | while read line; do 
    count=$((count + 1))
    if [ $((count % 10)) -eq 0 ]; then 
        echo "$(date): 10次访问统计完成"
        count=0
    fi
done

题目6:多文件内容合并查看

要求:合并显示多个配置文件的第1-3行,并显示文件名

解答

for file in /etc/*.conf; do
    echo "=== $file ==="
    head -n 3 "$file"
    echo
done | less

十、实用技巧总结

1. 性能优化

# 大文件使用less代替cat(避免内存溢出)
less huge_file.log

# 只需要查看结构时使用head/tail
head -n 1000 large_file.txt | less

2. 调试技巧

# 查看命令执行过程
set -x && your_command && set +x

# 实时监控多个日志文件
multitail /var/log/syslog /var/log/nginx/error.log

3. 安全注意事项

# 查看敏感文件时使用less(避免在终端保留历史)
less /etc/shadow

# 生产环境谨慎使用tail -f(可能影响性能)
tail -f /var/log/messages

这些文件显示命令是Linux系统管理和日志分析的基础工具,熟练掌握它们能够大大提高工作效率。

作者:严锋  创建时间:2024-04-20 13:13
最后编辑:严锋  更新时间:2025-11-04 14:01