在操作下面的闯关题之前,给下学习资料
一图速览:20 条命令及练习手册
# |
命令 & 常用参数 |
关键作用 |
典型练习 |
|
1 |
ls -alh |
列文件(含隐藏 & 人类可读大小)(数字海洋) |
在 $HOME 统计目录数 |
|
2 |
cd / pwd |
切换、显示路径 |
cd /tmp && pwd |
|
3 |
cp -a / mv / rm -rf |
复制、移动、删除 |
建 test 目录练手 |
|
4 |
touch / mkdir -p |
新建文件 / 递归建目录 |
mkdir -p lab/day1 && touch note.txt |
|
5 |
cat / less / head -n 5 |
查看文件内容 |
阅读 /etc/os-release |
|
6 |
grep -nEi |
关键词/正则搜索(行号、忽略大小写)(数字海洋) |
找出日志中 error 行 |
|
7 |
find / -type f -perm -4000 2>/dev/null |
搜索 SUID 文件(The world’s open source leader) |
列出系统 SUID 清单 |
|
8 |
chmod 644 / chown user:group |
改权限/属主(644=rw-r–r–)(theserverside.com) |
给 note.txt 改权限 |
|
9 |
tar -czf backup.tar.gz dir/ |
打包压缩(LabEx) |
备份 lab/ 目录 |
|
10 |
scp file user@host:/path |
远程安全复制(LinuxBlog.io) |
把 backup.tar.gz 传到 VPS |
|
11 |
wget -qO- URL |
命令行下载 / 快速查看网页 |
抓取 robots.txt |
|
12 |
curl -I URL |
查看 HTTP 头 |
观察 301/200 |
|
13 |
sudo -l |
列可执行 sudo 命令(GitHub) |
判断提权面 |
|
14 |
`ps aux --sort=-%mem |
head` |
查看进程 |
找内存前 5 名 |
15 |
top / htop |
交互式监控 |
观察 CPU 峰值 |
|
16 |
`du -sh * |
sort -h` |
目录体积排行 |
定位大文件夹 |
17 |
df -hT |
磁盘分区 & 类型 |
查看挂载情况 |
|
18 |
`history |
tail -20` |
查看历史命令 |
回顾今天操作 |
19 |
ssh-keygen -t ed25519 |
生成公私钥 |
放进 ~/.ssh |
|
20 |
tldr <command> |
查看简明用法(需 npm i -g tldr )(tldr.sh) |
tldr grep 快速复习 |
|
建议做法: 把表格复制到 Obsidian/Notion,练完一条就在对应行打 ✅,保证 1 小时内全部走一遍。
快闪练习脚本:批量改文件权限
在 lab/day1/
建 5 个测试文件:
mkdir -p ~/lab/day1 && cd ~/lab/day1
touch {a,b,c,d,e}.log
用一行 Shell 把所有 .log
改为 644:
for f in *.log; do chmod 644 "$f"; done
验证:
ls -l
这一行脚本就是你 Day 1 “成果物”——未来写自动化工具时经常用到。
进阶挑战(选做)
任务 |
技能点 |
编写 perm_audit.sh :递归扫描目录,找出非 640/750 的文件并导出 CSV |
find + awk |
用 tar --exclude='*.log' 打包并通过 scp -P 2222 (自定义端口)上传 |
tar + scp |
grep + 正则:在 /var/log/auth* 中提取所有登录失败 IP |
grep -oP '(?<=from )\\d+\\.\\d+\\.\\d+\\.\\d+' |
完成任一可加深对管道和重定向的理解。
学习资源速链
- DigitalOcean 50+ 命令概览(含
ls/grep
例)(数字海洋)
- tldr 项目主页(安装 & 使用)(tldr.sh)
- chmod 数字权限详细解释(theserverside.com)
- Red Hat “10 种 find 用法”(The world’s open source leader)
- DigitalOcean grep 教程(正则示例)(数字海洋)
- LabEx tar 指南(打包/压缩)(LabEx)
- LinuxBlog scp 教程(本地↔远程)(LinuxBlog.io)
- GitHub tldr pages repo(更多示例)(GitHub)
- Hostinger 60 命令索引(含 df/du/top)(Hostinger)
- PDF 版 tldr-book(离线速查)(tldr.sh)
- IBM chmod 手册(官方语法)(IBM - United States)
- GeeksforGeeks find 命令最新示例(GeeksforGeeks)
- GeeksforGeeks grep 文章(补充案例)(GeeksforGeeks)
Linux 命令实操闯关题(基于 GeeksforGeeks Cheat-Sheet)
说明
- 每一关都只给 任务要求 和 提示命令,不提供完整答案。
- 推荐在一台临时 VM 或 Docker 容器里动手,避免误删重要文件。
- 完成后可用
history
回顾自己的命令链,并写下心得。
目录
- 文件与目录操作
- 文件权限
- 压缩与归档
- 进程管理
- 系统信息
- 网络命令
- I/O 重定向
- 环境变量
- 用户管理
- 终端快捷键 Bonus
1️⃣ 文件与目录操作
任务 |
要求 |
提示命令 |
1.1 |
在 $HOME 下新建名为 gfg_lab 的目录,并一次性创建 notes , scripts , logs 三个子目录 |
mkdir , -p |
1.2 |
下载 robots.txt 保存为 gfg_lab/notes/web.txt |
curl -o |
1.3 |
把 web.txt 复制为 web.bak ,然后移动到 logs 目录 |
cp , mv |
1.4 |
显示 gfg_lab 目录结构(树状)并只看两级 |
tree -L 2 (若无 tree: sudo apt install tree ) |
2️⃣ 文件权限
任务 |
要求 |
提示命令 |
2.1 |
将 scripts 目录权限改为:u=rwx, g=rx, o=-- |
chmod 750 |
2.2 |
给自己的用户添加对 logs 目录的写权限,但不影响组/其他 |
chmod u+w |
2.3 |
用数字模式把 web.bak 权限改成只读(对所有人) |
chmod 444 |
2.4 |
查看 web.bak ACL 并确认无额外条目 |
getfacl |
3️⃣ 压缩与归档
任务 |
要求 |
提示命令 |
3.1 |
打包 gfg_lab 为 gfg_lab.tar.gz |
tar -czvf |
3.2 |
显示归档里文件列表但不解压 |
tar -tzf |
3.3 |
只从归档里解出 notes/web.txt 到 /tmp |
tar -xzf --strip-components |
4️⃣ 进程管理
任务 |
要求 |
提示命令 |
4.1 |
使用 sleep 300 背景进程,获取其 PID |
& , $! , jobs |
4.2 |
通过 ps 或 pgrep 找到该进程并用 kill -SIGTERM 结束 |
ps aux , kill |
4.3 |
观察 top 中内存占用前五的进程 |
top , M (排序) |
5️⃣ 系统信息
任务 |
要求 |
提示命令 |
5.1 |
查看当前发行版和内核版本 |
cat /etc/os-release , uname -r |
5.2 |
统计系统 total/used/free 内存 |
free -h |
5.3 |
打印登录过此机器的最近 5 位用户记录 |
last -n 5 |
6️⃣ 网络命令
任务 |
要求 |
提示命令 |
6.1 |
显示本机所有网络接口及 IP 地址 |
ip addr |
6.2 |
用 ping -c 4 测试 geeksforgeeks.org 延迟 |
ping |
6.3 |
调用 curl -I 抓取 https://geeksforgeeks.org 响应头 |
curl -I |
7️⃣ I/O 重定向
任务 |
要求 |
提示命令 |
7.1 |
将 ls -l /etc 输出保存到 gfg_lab/list.txt |
> |
7.2 |
把 date 命令结果追加到同一文件 |
>> |
7.3 |
使用管道统计 list.txt 中包含字符串 "conf" 的行数 |
grep -c 或 `grep |
8️⃣ 环境变量
任务 |
要求 |
提示命令 |
8.1 |
临时设置变量 LAB=GFG 并打印出来 |
export LAB=GFG , echo $LAB |
8.2 |
将 $HOME/scripts 永久加入 PATH(对当前用户) |
编辑 ~/.bashrc + source |
9️⃣ 用户管理
任务 |
要求 |
提示命令 |
9.1 |
创建用户 learner (无 sudo) |
sudo adduser learner |
9.2 |
给 learner 添加到 docker 组 |
sudo usermod -aG docker learner |
9.3 |
使用 su - learner 切换验证 |
su / whoami |
🔟 Bonus:终端快捷键
- Ctrl + A / E:光标跳到行首 / 行尾
- Ctrl + R:历史命令逆向搜索
- Ctrl + Z:挂起当前前台任务
- !!:重复执行上一条命令
- Alt + .:插入上一条命令的最后一个参数
练习:用 cat
查看一个大文件,试试 Ctrl + C 终止;再用 less
+Shift + G
跳到文件结尾。
如何检验自己做对?
- 文件/目录:
tree gfg_lab
, ls -l
- 权限:
stat -c "%A %n" file
- 进程:
ps -p <PID>
应该查不到被杀死的进程
- PATH:重开终端
echo $PATH
应含 /scripts
路径
- 用户:
id learner
显示所属组
💡 完成全部任务后,回顾你的 history
,挑 3 条最常用的命令写下“使用场景+易错点”备忘,就算真正掌握啦!💡