Day 5:本周串联实操
Day 5:本周串联实操
今日目标:把本周 4 天的命令串起来,在真实场景中练习——创建 → 复制 → 移动 → 查看 → 统计 → 排错 🎯
命令速览(本周全部命令)
pwd cd ls touch rm mkdir rmdir cp mv ln -s cat head tail less wc sort uniq
场景一:搭建一个项目骨架
你要在
/tmp下搭建一个日志分析项目的目录结构,并准备一些测试数据。
操作流程(每步都在终端完成):
cd /tmp——进入工作区mkdir -p log-project/{data,scripts,logs,backup}——创建项目骨架ls -lR log-project/——验证目录结构- 进入
data/目录,用cat配合<<EOF创建测试数据:1
2
3
4
5
6
7
8
9
10
11
12cat > sample.log <<EOF
2024-01-01 ERROR disk full
2024-01-01 INFO service started
2024-01-02 ERROR memory leak
2024-01-02 WARN high cpu
2024-01-03 ERROR disk full
2024-01-03 INFO backup complete
2024-01-03 ERROR timeout
2024-01-04 INFO service started
2024-01-04 ERROR disk full
2024-01-04 ERROR permission denied
EOF wc -l sample.log——确认有 10 行数据cp sample.log sample.log.bak——备份cd ../scripts && ln -s ../data/sample.log ./data_link——在 scripts 目录创建数据软链接- 验证软链接:
cat data_link | head -3
场景二:日志分析(管道串联)
从 sample.log 中提取信息,用管道串联完成以下分析:
- 统计共有多少条日志:
wc -l ../data/sample.log - 只看 ERROR 日志:
grep ERROR ../data/sample.log(提示:grep将在 Week 2 正式学习,此处可先照做体会管道筛选思想) - ERROR 日志有多少条:
grep ERROR ../data/sample.log | wc -l - 每种日志级别各多少条:
awk '{print $2}' ../data/sample.log | sort | uniq -c | sort -rn(提示:awk将在 Week 2 正式学习,此处可先照做体会管道组合) - ERROR 日志中最常见的错误描述:
grep ERROR ../data/sample.log | awk '{for(i=3;i<=NF;i++) printf "%s%s", $i, (i==NF?"\n":" ")}' | sort | uniq -c | sort -rn(说明:原{print $NF}只能取每行最后一个词,如 “disk full” 会变成 “full”,改用{for(i=3;i<=NF;i++)...}才能取完整错误描述。此写法较复杂,Week 2 详细讲解 awk) - 查看数据文件最后 3 行:
tail -3 ../data/sample.log
场景三:目录与文件清理
cd /tmp/log-projectdu -sh *——查看各子目录大小(提示:du将在 Week 3 磁盘管理中正式学习,此处可先照做)cp data/sample.log data/sample2.log——创建一份重复数据rm data/sample2.log——删除重复文件mv logs old_logs——重命名 logs 目录rmdir old_logs——确认空目录可删除- 清理整个项目:
cd /tmp && rm -rf log-project/
💪 今日必刷(全部终端实操)
- 在
/tmp/yourname/下搭建一个类似场景一的项目骨架(把yourname换成你的名字拼音) - 创建自己的测试数据(不少于 8 行),至少包含 3 种日志级别,至少 2 种错误类型
- 用管道串联统计:每种级别的行数(从多到少排列)(提示:需用
awk '{print $2}'提取级别列,awk将在 Week 2 学习,此处可参考场景二第 4 题写法照做) - 用一条命令找出数据文件中第 3 到第 7 行(提示:
head -7 | tail -5) - 排错题:你创建了
data/test.log,在scripts/下做了软链接ln -s ../data/test.log ./tlog,但后来你mv data/test.log data/real.log,软链接还能用吗?为什么?如何验证? - 排错题:
ls -l /tmp/yourname/data/能看到文件,但wc -l /tmp/yourname/data/*.log报No such file or directory——排查步骤是什么?
📚 命令详解
| 命令 | 详细参考 |
|---|---|
pwd |
文件与目录管理-pwd |
cd |
文件与目录管理-cd |
ls |
文件与目录管理-ls |
touch |
文件与目录管理-touch |
rm |
文件与目录管理-rm |
mkdir |
文件与目录管理-mkdir |
rmdir |
文件与目录管理-rmdir |
cp |
文件与目录管理-cp |
mv |
文件与目录管理-mv |
ln |
文件与目录管理-ln |
cat |
文件查看与文本处理-cat |
head |
文件查看与文本处理-head |
tail |
文件查看与文本处理-tail |
less |
文件查看与文本处理-less |
wc |
文件查看与文本处理-wc |
sort |
文件查看与文本处理-sort |
uniq |
文件查看与文本处理-uniq |