文件查看(cat/less/head/tail/wc)+ 查找定位(find/which/type/man) · 拆分自 Linux01 命令系统实战笔记
一、文件查看与统计
1. cat —— 一次性输出文件全部内容(concatenate)
核心作用:读取文件并打印到终端,适合小文件。
cat test.txt # 打印全部内容
cat -n test.txt # -n:显示行号(空行也编号)
cat -b test.txt # -b:只给非空行加行号
cat file1.txt file2.txt # 拼接输出多个文件
cat > newfile.txt # 新建文件,键盘输入,Ctrl+D 结束
⚠️ 易错点:
- 大文件用 cat 会刷屏,无法分页浏览,大文件用 less。
- cat > file 会先清空文件,哪怕后面什么都没输入,文件也变成空的。
2. less —— 分页查看器(最推荐看大文件)
核心作用:分页浏览文件,按需加载,不会一次性读入全部内容,是 more 的增强版。
less log.txt
内部快捷键(必背):
| 按键 | 作用 |
|---|---|
空格 / f |
向下翻一页 |
b |
向上翻一页 |
↑ ↓ |
逐行滚动 |
/关键词 |
向下搜索 |
?关键词 |
向上搜索 |
n |
跳到下一个匹配 |
N |
跳到上一个匹配 |
g |
跳到文件开头 |
G |
跳到文件末尾 |
q |
退出 less |
✅ 实用技巧:man 手册内部就是用 less 实现的,所以 less 的快捷键和 man 完全一样。
3. head —— 查看文件头部
核心作用:默认输出前 10 行。
head log.txt # 默认前 10 行
head -n 5 log.txt # 指定前 5 行
head -20 log.txt # 简写,省略 n
head -c 20 log.txt # -c:输出前 20 个字符
4. tail —— 查看文件末尾(日志神器)
核心作用:默认最后 10 行;最常用实时跟踪日志。
tail log.txt # 最后 10 行
tail -n 15 log.txt # 最后 15 行
tail -f log.txt # -f:实时跟踪文件新增内容(最常用)
tail -F log.txt # -F:文件被删除/重建也能继续跟踪(生产推荐)
tail -n +20 log.txt # 从第 20 行开始输出到末尾
🔑 面试高频:-f vs -F 的区别
- -f:跟踪文件描述符,如果文件被删掉重建,tail 会继续跟踪旧的已删除文件,新文件不会被跟踪。
- -F:跟踪文件名,文件被删除重建后会自动重新打开新文件,生产环境推荐用 -F。
5. wc —— 统计行数、单词数、字符数(word count)
wc test.txt # 输出:行数 单词数 字符数
wc -l test.txt # -l:只统计行数(最常用)
wc -w test.txt # -w:单词数量(空白分隔)
wc -c test.txt # -c:字符数(字节)
wc -m test.txt # -m:字符数(多字节字符按字符算)
实用场景:
- wc -l /etc/passwd 统计系统用户数
- ls | wc -l 统计当前目录文件数量
二、查找命令:find / which / type / man
1. find —— 递归遍历目录树查找文件
核心作用:按文件名、大小、时间、类型查找文件。
⚠️ find 找的是文件本身,不是文件内容! 找文件里的文字用 grep。
# 基础语法:find 搜索路径 条件
find . -name "*.txt" # 当前目录递归找所有 .txt,区分大小写
find . -iname "*.TXT" # -iname:忽略大小写
find /home -name "test.sh" # 在 /home 下找名为 test.sh 的文件
# 按类型
find . -type f # f=普通文件
find . -type d # d=目录
find . -type l # l=软链接
# 按大小
find . -size +10M # 大于 10M
find . -size -100k # 小于 100k
find . -size +1G # 大于 1G
# 按时间
find . -mtime -3 # 3 天内修改过的文件
find . -mtime +30 # 30 天前修改过的文件
find . -atime -1 # 1 天内访问过的文件
# 组合动作
find . -name "*.log" -delete # 找到直接删除(慎用!)
find . -name "*.txt" -exec ls -l {} \; # 对每个结果执行 ls -l
🔑 面试高频坑:
1. 通配符 * 一定要加引号 "*.txt",否则 shell 会先在当前目录展开,find 收到的不是通配符而是实际文件名。
2. -delete 非常危险,建议先 find ... -print 确认结果,再改成 -delete。
3. 文件名带空格时,-exec 和 xargs 都要注意,推荐用 find -print0 | xargs -0。
2. which —— 查找外部命令的可执行文件路径
核心作用:只在 PATH 环境变量里搜索二进制程序。
which ls
# 输出 /usr/bin/ls
which python3
⚠️ 特点:
- ✅ 只找外部命令程序本体
- ❌ 找不到 shell 内置命令(如 cd、pwd),因为它们不是独立程序文件
3. type —— 判断命令类型(内置/外部/别名/函数)
type ls
# ls is aliased to `ls --color=auto'
type cd
# cd is a shell builtin
type python3
# python3 is /usr/bin/python3
🔑 which vs type 对比(面试常问):
| 命令 | 能识别内置命令 | 能识别别名 | 能识别函数 |
|---|---|---|---|
which |
❌ | ❌ | ❌ |
type |
✅ | ✅ | ✅ |
4. man —— 查看官方手册(manual)
man ls # 查看 ls 手册
man find
man 1 ls # 第1章:普通用户命令(默认)
man 2 open # 第2章:系统调用(C 编程)
man 3 printf # 第3章:C 库函数
man 内部操作和 less 完全一样(空格翻页、/ 搜索、q 退出)。
💡 实用技巧:很多命令支持
--help,是精简版帮助,比 man 查得快。man是最权威最完整的文档。
评论