Linux 与 Shell 编程 - 详细学习指南¶
📌 学习时间:8-10周(每周15-20小时) 📌 难度级别:入门 → 进阶 📌 适用人群:985/211计算机专业研究生、后端/运维方向求职者
📚 学习总览¶
本指南为计算机相关专业研究生量身定制,提供系统性的 Linux 系统管理与 Shell 编程学习路径。目标是帮助你在8-10周内掌握 Linux 运维与 Shell 编程的核心理论和工程实践能力,为进入字节跳动、腾讯、阿里巴巴、百度、华为、美团等互联网大厂做好准备。
🎯 学习目标¶
短期目标(1-3周)¶
- 掌握 Linux 基本概念和命令行操作
- 熟练进行文件与目录管理
- 掌握文本处理三剑客(grep/sed/awk)
- 理解用户权限体系
中期目标(4-6周)¶
- 熟练编写 Shell 脚本
- 掌握进程管理和系统资源监控
- 理解网络管理和服务管理
- 能独立排查系统问题
长期目标(7-10周)¶
- 具备自动化运维开发能力
- 完成3个实战项目
- 能通过大厂 Linux/运维相关面试
- 具备生产环境操作经验
🧠 核心能力矩阵¶
1. 命令行操作能力¶
| 能力维度 | 初级 | 中级 | 高级 |
|---|---|---|---|
| 文件操作 | ls/cd/cp/mv | find/locate/xargs | 复杂 find 组合 |
| 文本处理 | cat/head/tail | grep/sed基础 | awk 编程/正则精通 |
| 权限管理 | chmod基础 | SUID/SGID/ACL | SELinux/AppArmor |
| 进程管理 | ps/kill | top/htop/strace | 性能分析/调优 |
| 网络管理 | ping/curl | ss/tcpdump | iptables/网络排障 |
2. Shell 编程能力¶
| 能力维度 | 初级 | 中级 | 高级 |
|---|---|---|---|
| 变量与运算 | 变量赋值/引用 | 数组/字符串操作 | 间接引用/nameref |
| 流程控制 | if/for基础 | case/while/until | 信号处理/trap |
| 函数 | 简单函数定义 | 参数传递/返回值 | 递归/函数库 |
| 文件处理 | 重定向基础 | 管道/进程替换 | 文件描述符/命名管道 |
| 工程能力 | 简单脚本 | 日志/配置/错误处理 | 框架设计/模块化 |
3. 系统管理能力¶
| 能力维度 | 初级 | 中级 | 高级 |
|---|---|---|---|
| 服务管理 | systemctl 基础 | 自定义 service | 依赖管理/调优 |
| 定时任务 | crontab 基础 | 复杂调度 | 分布式定时任务 |
| 日志管理 | 查看日志 | logrotate 配置 | ELK 日志分析 |
| 包管理 | apt/yum 安装 | 源码编译 | 私有仓库搭建 |
| 性能调优 | free/df 查看 | vmstat/iostat 分析 | sysctl/内核参数 |
📅 详细学习计划¶
第一阶段:基础夯实(第1-3周)¶
第1周:Linux 基础与文件管理¶
学习内容: - 01-Linux基础入门.md - Linux 发展历史与发行版(1天) - 安装方法:WSL/虚拟机/云服务器(1天) - 目录结构与 FHS 标准(1天) - 02-文件与目录管理.md - 基本文件操作命令(2天) - 文件权限与特殊权限(1天) - 链接与通配符(1天)
学习时间:每天3-4小时,总计20-25小时
练习目标: - [ ] 能在命令行中自如导航文件系统 - [ ] 能正确设置文件权限 - [ ] 理解硬链接与软链接的区别 - [ ] 能编写简单的 find 命令
第2周:文本处理与用户管理¶
学习内容: - 03-文本处理三剑客.md - grep 与正则表达式(2天) - sed 流编辑器(2天) - awk 数据处理(2天) - 管道与重定向(1天) - 04-用户与权限管理.md(穿插学习)
学习时间:每天3-4小时,总计20-25小时
练习目标: - [ ] 能用 grep 进行日志搜索 - [ ] 能用 sed 进行批量文本替换 - [ ] 能用 awk 处理 CSV/日志文件 - [ ] 理解用户/组/权限的关系
第3周:进程管理与 Vim¶
学习内容: - 05-进程管理.md - 进程概念与生命周期(1天) - 进程监控工具(2天) - 系统资源监控(1天) - /proc 文件系统(1天) - 10-Vim编辑器.md - Vim 三种模式(1天) - 高效编辑技巧(1天)
学习时间:每天3-4小时,总计20-25小时
练习目标: - [ ] 能用 top/htop 分析系统负载 - [ ] 掌握前后台进程切换 - [ ] 能用 Vim 高效编辑文件 - [ ] 配置个人 .vimrc
第二阶段:编程进阶(第4-6周)¶
第4-5周:Shell 脚本编程(重点)¶
学习内容: - 06-Shell脚本编程.md - 变量与数据类型(1天) - 条件判断与分支(2天) - 循环结构(2天) - 函数与数组(2天) - 字符串操作与算术运算(1天) - 调试技巧(1天) - 15个实用脚本练习(5天)
学习时间:每天4-5小时,总计50-60小时
练习目标: - [ ] 独立编写系统管理脚本 - [ ] 掌握错误处理和日志记录 - [ ] 能读懂并修改他人脚本 - [ ] 完成全部15个脚本练习
第6周:网络与服务管理¶
学习内容: - 07-网络管理.md - 网络工具(2天) - SSH 配置与远程管理(2天) - 防火墙基础(1天) - 08-服务与系统管理.md - systemd 与服务管理(1天) - Crontab 与日志系统(1天)
学习时间:每天3-4小时,总计20-25小时
第三阶段:实战冲刺(第7-10周)¶
第7周:包管理与综合复习¶
学习内容: - 09-包管理与软件安装.md - 包管理工具(2天) - 源码编译安装(2天) - 开发环境管理(1天) - 综合复习与查漏补缺(2天)
第8-9周:实战项目¶
学习内容: - 11-实战项目.md - 项目一:自动化服务器监控脚本(3天) - 项目二:日志分析与报警系统(4天) - 项目三:自动化部署脚本(4天) - 代码优化与文档编写(3天)
第10周:面试冲刺¶
学习内容: - 面试准备 - 高频面试题练习(4天) - 模拟手写 Shell 脚本(2天) - 模拟面试与复盘(1天)
🏆 大厂面试 Linux 考察重点¶
字节跳动¶
- Shell 脚本手写(高频)
- 日志分析命令组合
- 进程排查与性能分析
阿里巴巴¶
- Linux 系统管理
- 自动化运维脚本
- 系统性能调优
腾讯¶
- 网络相关命令
- 系统资源监控
- Shell 编程能力
美团¶
- 日志处理与分析
- 定时任务配置
- 服务管理与排障
华为¶
- Linux 内核基础
- 文件系统与磁盘管理
- 网络配置与排障
📊 每日学习模板¶
日期:____年__月__日
章节:________________
1. 今日学习内容:
-
-
-
2. 实操练习:
- [ ] 练习1:
- [ ] 练习2:
- [ ] 练习3:
3. 遇到的问题:
-
4. 解决方案:
-
5. 明日计划:
-
🔧 学习环境搭建¶
推荐配置¶
# 1. WSL2 安装(Windows 用户推荐)
wsl --install -d Ubuntu-22.04
# 2. 基础工具安装
sudo apt update && sudo apt upgrade -y # &&前一个成功才执行后一个;||前一个失败才执行
sudo apt install -y vim git curl wget net-tools htop tree
# 3. 配置 Shell 环境
echo 'alias ll="ls -alF"' >> ~/.bashrc
echo 'alias la="ls -A"' >> ~/.bashrc
echo 'export HISTSIZE=10000' >> ~/.bashrc
echo 'export HISTFILESIZE=20000' >> ~/.bashrc
source ~/.bashrc
# 4. 创建练习目录
mkdir -p ~/linux-practice/{scripts,logs,projects}
终端工具推荐¶
- Windows:Windows Terminal + WSL2
- macOS:iTerm2
- 跨平台:Tabby、Warp
- 远程连接:VS Code Remote SSH、MobaXterm
📈 技能自测检查表¶
基础篇(完成第1-2周后)¶
- 能说出 Linux 内核与发行版的关系
- 能用 5 种方式查找文件
- 能解释
chmod 755的含义 - 能区分硬链接和软链接
- 能用 grep 进行正则匹配
- 能用管道组合 3 个以上命令
进阶篇(完成第3-5周后)¶
- 能用 awk 处理结构化文本
- 能写 50 行以上的 Shell 脚本
- 能使用 if/for/while/case 结构
- 能定义和调用 Shell 函数
- 能用 top 分析 CPU 和内存使用
- 能配置 SSH 密钥认证
实战篇(完成第6-10周后)¶
- 能编写自动化监控脚本
- 能配置 systemd 服务
- 能配置 Crontab 定时任务
- 能编写日志分析脚本
- 能独立部署 Web 服务
- 能回答 80% 的面试题
💡 常见学习误区¶
❌ 误区一:死记硬背命令¶
正确做法:理解命令的逻辑,善用 man 和 --help,常用命令自然熟记
❌ 误区二:只看不练¶
正确做法:每个命令至少实操 3 遍,Shell 脚本要从头写到尾
❌ 误区三:忽略错误处理¶
正确做法:工程化脚本必须包含错误处理、日志记录和参数校验
❌ 误区四:跳过基础直奔高级¶
正确做法:文件操作和权限是一切的基础,必须扎实
❌ 误区五:不做笔记¶
正确做法:建立个人命令手册,记录常见问题和解决方案
🎯 本指南小结¶
Linux 与 Shell 编程是后端开发、运维、SRE、云计算等方向的必备技能。通过本教程的系统学习,你将建立起扎实的 Linux 基础,具备独立运维和自动化开发的能力。
核心建议: - ✅ 保持每天 2-3 小时的持续练习 - ✅ 遇到问题先尝试自己解决,再查文档 - ✅ 把学到的命令立刻用到实际场景中 - ✅ 定期回顾和总结
下一步:开始学习 01-Linux基础入门