在操作下面的闯关题之前,给下学习资料
一图速览: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 个测试文件:bashmkdir -p ~/lab/day1 && cd ~/lab/day1 touch {a,b,c,d,e}.log
-
用一行 Shell 把所有
.log
改为 644:bashfor f in *.log; do chmod 644 "$f"; done
-
验证:
bashls -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 条最常用的命令写下"使用场景+易错点"备忘,就算真正掌握啦!