文件查看 #
一、cat - 连接并显示文件 #
1.1 基本用法 #
bash
# 显示文件内容
cat file.txt
# 显示多个文件
cat file1.txt file2.txt
# 连接文件并输出
cat file1.txt file2.txt > merged.txt
# 追加文件
cat file2.txt >> file1.txt
1.2 常用选项 #
bash
# 显示行号
cat -n file.txt
# 显示非空行行号
cat -b file.txt
# 显示特殊字符
cat -A file.txt
# 显示制表符为 ^I
cat -T file.txt
# 显示行结束符 $
cat -E file.txt
# 压缩连续空行
cat -s file.txt
1.3 实用技巧 #
bash
# 创建文件
cat > file.txt << EOF
Line 1
Line 2
Line 3
EOF
# 追加内容
cat >> file.txt << EOF
Line 4
Line 5
EOF
# 查看配置文件(去除注释和空行)
cat /etc/nginx/nginx.conf | grep -v "^#" | grep -v "^$"
# 合并文件并添加标记
cat -n file1.txt file2.txt > merged.txt
二、less - 分页查看 #
2.1 基本用法 #
bash
# 查看文件
less file.txt
# 查看多个文件
less file1.txt file2.txt
# 从标准输入读取
cat file.txt | less
2.2 导航快捷键 #
移动操作:
| 快捷键 | 功能 |
|---|---|
| Space / f | 向下翻页 |
| b | 向上翻页 |
| Enter / j | 向下一行 |
| k | 向上一行 |
| g | 跳到文件开头 |
| G | 跳到文件末尾 |
| 10g | 跳到第 10 行 |
搜索操作:
| 快捷键 | 功能 |
|---|---|
| /pattern | 向下搜索 |
| ?pattern | 向上搜索 |
| n | 下一个匹配 |
| N | 上一个匹配 |
其他操作:
| 快捷键 | 功能 |
|---|---|
| q | 退出 |
| h | 帮助 |
| F | 实时跟踪(类似 tail -f) |
| v | 使用编辑器编辑 |
2.3 常用选项 #
bash
# 显示行号
less -N file.txt
# 忽略大小写搜索
less -I file.txt
# 自动换行
less -S file.txt
# 实时跟踪日志
less +F /var/log/syslog
2.4 多文件操作 #
bash
# 查看多个文件
less file1.txt file2.txt
# :n 下一个文件
# :p 上一个文件
# :x 第一个文件
# :d 删除当前文件
# :e 添加新文件
三、head - 查看文件开头 #
3.1 基本用法 #
bash
# 显示前 10 行
head file.txt
# 显示前 N 行
head -n 20 file.txt
head -20 file.txt
# 显示前 N 个字节
head -c 100 file.txt
# 显示前 N KB
head -c 10K file.txt
3.2 多文件操作 #
bash
# 显示多个文件开头
head file1.txt file2.txt
# 不显示文件名
head -q file1.txt file2.txt
# 始终显示文件名
head -v file1.txt file2.txt
3.3 实用示例 #
bash
# 查看文件前 5 行
head -5 /etc/passwd
# 查看日志最新内容
head -100 /var/log/syslog
# 查看配置文件开头
head -20 nginx.conf
# 查看文件类型
head -c 4 file.png | xxd
四、tail - 查看文件末尾 #
4.1 基本用法 #
bash
# 显示后 10 行
tail file.txt
# 显示后 N 行
tail -n 20 file.txt
tail -20 file.txt
# 显示后 N 个字节
tail -c 100 file.txt
# 从第 N 行开始显示
tail -n +10 file.txt
4.2 实时跟踪 #
bash
# 实时跟踪文件
tail -f /var/log/syslog
# 跟踪并显示文件名
tail -f /var/log/*.log
# 跟踪多个文件
tail -f file1.txt file2.txt
# 组合使用
tail -100f /var/log/syslog
4.3 常用选项 #
bash
# 不显示文件名
tail -q file1.txt file2.txt
# 始终显示文件名
tail -v file1.txt file2.txt
# 重试打开文件(文件不存在时)
tail -F /var/log/new.log
# PID 失效后退出
tail -f --pid=1234 /var/log/app.log
4.4 实用示例 #
bash
# 查看最新日志
tail -100 /var/log/nginx/access.log
# 实时监控错误日志
tail -f /var/log/nginx/error.log
# 查看系统日志
tail -f /var/log/syslog
# 查看认证日志
tail -f /var/log/auth.log
# 查看应用日志并过滤
tail -f app.log | grep ERROR
五、more - 分页查看 #
5.1 基本用法 #
bash
# 查看文件
more file.txt
# 从指定行开始
more +10 file.txt
# 从匹配模式开始
more +/pattern file.txt
5.2 导航快捷键 #
| 快捷键 | 功能 |
|---|---|
| Space | 向下翻页 |
| Enter | 向下一行 |
| b | 向上翻页 |
| /pattern | 搜索 |
| n | 下一个匹配 |
| q | 退出 |
| :f | 显示文件信息 |
5.3 more 与 less 的区别 #
| 特性 | more | less |
|---|---|---|
| 向后翻页 | 支持 | 支持 |
| 向前翻页 | 有限支持 | 完全支持 |
| 搜索功能 | 基础 | 强大 |
| 性能 | 较慢 | 较快 |
| 功能 | 基础 | 丰富 |
推荐使用 less 代替 more
六、其他查看命令 #
6.1 tac - 反向显示 #
bash
# 反向显示文件(从最后一行开始)
tac file.txt
# 示例
cat file.txt
# Line 1
# Line 2
# Line 3
tac file.txt
# Line 3
# Line 2
# Line 1
6.2 nl - 带行号显示 #
bash
# 显示行号
nl file.txt
# 只显示非空行号
nl -b t file.txt
# 显示所有行号
nl -b a file.txt
# 自定义格式
nl -w 4 -s ': ' file.txt
6.3 rev - 反转每行 #
bash
# 反转每行字符
rev file.txt
# 示例
echo "Hello World" | rev
# dlroW olleH
6.4 od - 八进制显示 #
bash
# 八进制显示
od file.txt
# 十六进制显示
od -x file.txt
# ASCII 显示
od -c file.txt
# 显示文件前 16 字节
od -N 16 -x file.txt
6.5 hexdump - 十六进制显示 #
bash
# 十六进制显示
hexdump -C file.txt
# 只显示 ASCII
hexdump -c file.txt
# 显示偏移量
hexdump -C file.txt
七、文件统计 #
7.1 wc - 统计文件 #
bash
# 统计行数、单词数、字节数
wc file.txt
# 只统计行数
wc -l file.txt
# 只统计单词数
wc -w file.txt
# 只统计字节数
wc -c file.txt
# 只统计字符数
wc -m file.txt
# 统计多个文件
wc file1.txt file2.txt
# 配合管道使用
ls | wc -l
cat file.txt | wc -w
7.2 统计示例 #
bash
# 统计代码行数
find . -name "*.py" | xargs wc -l
# 统计目录下文件数
ls -1 | wc -l
# 统计单词频率
cat file.txt | tr ' ' '\n' | sort | uniq -c | sort -nr
# 统计文件大小
du -sh *
八、文件比较 #
8.1 diff - 文件比较 #
bash
# 比较两个文件
diff file1.txt file2.txt
# 并排显示
diff -y file1.txt file2.txt
# 显示上下文
diff -c file1.txt file2.txt
# 统一格式
diff -u file1.txt file2.txt
# 递归比较目录
diff -r dir1/ dir2/
# 忽略空白
diff -w file1.txt file2.txt
# 忽略大小写
diff -i file1.txt file2.txt
8.2 cmp - 字节比较 #
bash
# 比较文件
cmp file1.txt file2.txt
# 显示所有差异
cmp -l file1.txt file2.txt
# 显示字节编号
cmp -b file1.txt file2.txt
8.3 vimdiff - 可视化比较 #
bash
# 使用 vim 比较
vimdiff file1.txt file2.txt
# 比较三个文件
vimdiff file1.txt file2.txt file3.txt
九、文件搜索 #
9.1 grep - 文本搜索 #
bash
# 基本搜索
grep "pattern" file.txt
# 忽略大小写
grep -i "pattern" file.txt
# 显示行号
grep -n "pattern" file.txt
# 显示匹配数量
grep -c "pattern" file.txt
# 反向匹配
grep -v "pattern" file.txt
# 递归搜索
grep -r "pattern" directory/
# 只显示文件名
grep -l "pattern" *.txt
# 显示匹配颜色
grep --color "pattern" file.txt
# 使用正则表达式
grep -E "pattern1|pattern2" file.txt
# 显示上下文
grep -C 3 "pattern" file.txt
9.2 实用示例 #
bash
# 搜索进程
ps aux | grep nginx
# 搜索日志中的错误
grep -i "error" /var/log/syslog
# 搜索代码中的函数
grep -rn "function_name" src/
# 搜索配置文件
grep -r "ServerName" /etc/apache2/
# 统计匹配行数
grep -c "ERROR" app.log
十、实践练习 #
10.1 练习一:基本查看 #
bash
# 1. 创建测试文件
cat > test.txt << EOF
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
EOF
# 2. 查看整个文件
cat test.txt
# 3. 查看前 3 行
head -3 test.txt
# 4. 查看后 3 行
tail -3 test.txt
# 5. 分页查看
less test.txt
10.2 练习二:日志分析 #
bash
# 1. 查看系统日志
tail -50 /var/log/syslog
# 2. 实时监控日志
tail -f /var/log/syslog
# 3. 搜索错误
grep -i "error" /var/log/syslog
# 4. 统计错误数量
grep -c "error" /var/log/syslog
# 5. 查看最近的错误
tail -100 /var/log/syslog | grep -i error
10.3 练习三:文件比较 #
bash
# 1. 创建两个测试文件
echo -e "Line 1\nLine 2\nLine 3" > file1.txt
echo -e "Line 1\nLine 2 modified\nLine 3\nLine 4" > file2.txt
# 2. 比较文件
diff file1.txt file2.txt
# 3. 并排比较
diff -y file1.txt file2.txt
# 4. 统一格式
diff -u file1.txt file2.txt
10.4 练习四:文件统计 #
bash
# 1. 统计文件行数
wc -l test.txt
# 2. 统计单词数
wc -w test.txt
# 3. 统计字符数
wc -m test.txt
# 4. 统计目录下所有 .txt 文件
find . -name "*.txt" | xargs wc -l
十一、小结 #
本章学习了 Linux 文件查看的各种命令,包括 cat、less、head、tail、more 等。
关键要点:
cat适合查看小文件和合并文件less是最强大的分页查看工具head和tail用于查看文件开头和结尾tail -f用于实时监控日志grep是强大的文本搜索工具
下一章预告: 文本处理 - 学习强大的文本处理工具 sed、awk 等。
最后更新:2026-03-27