自学Shell脚本是Linux/Unix系统管理、自动化运维和数据处理的必备技能,下面我为你整理了一份非常详尽的Shell自学路线图、推荐视频资源和学习建议,从入门到进阶,希望能帮助你高效学习。
学习路线图 (Roadmap)
在学习视频之前,最好对学习路径有个清晰的规划,这样不会迷失方向。

环境准备与基础入门 (1-2周)
- 目标:能编写简单的命令,理解Shell的基本概念。
- :
- 什么是Shell?:理解Shell是用户与Linux内核之间的命令解释器。
- Shell终端:学会打开终端(Terminal),熟悉基本的命令行操作。
- 常用命令:
- 文件/目录操作:
ls,cd,pwd,mkdir,touch,cp,mv,rm - 查看:
cat,more,less,head,tail - 文本搜索:
grep - 压缩/解压:
tar,gzip - 用户/权限:
chmod,chown - 系统信息:
ps,top,df,du
- 文件/目录操作:
- Shell脚本初体验:
- 创建第一个脚本文件(如
hello.sh)。 - 使用
#!/bin/bash(Shebang) 指定解释器。 - 使用
echo命令输出文本。 - 赋予脚本执行权限 (
chmod +x hello.sh) 并运行 (./hello.sh)。
- 创建第一个脚本文件(如
Shell脚本核心语法 (2-3周)
- 目标:能够编写功能完整的自动化脚本。
- :
- 变量:
- 定义与赋值:
name="world" - 使用变量:
echo "Hello, $name" - 只读变量:
readonly - 删除变量:
unset - 特殊变量:
$0(脚本名),$1,$2(位置参数), (参数个数), (上一条命令的返回状态), (进程ID)。
- 定义与赋值:
- 字符串:
- 单引号、双引号、反引号的区别。
- 字符串拼接、长度获取、切片等操作。
- 数组:
- 定义数组:
array=("a" "b" "c") - 访问数组元素:
${array[0]} - 获取所有元素:
${array[@]}或${array[*]} - 获取数组长度:
${#array[@]}
- 定义数组:
- 注释:单行注释 ,多行注释(技巧:)。
- 运算符:
- 算术运算符:, , , , ,使用
expr或 。 - 关系运算符:
-eq,-ne,-gt,-lt等。 - 布尔运算符:,
-o,-a。 - 逻辑运算符:
&&, 。 - 文件测试运算符:
-f(文件存在),-d(目录存在),-r(可读) 等。
- 算术运算符:, , , , ,使用
- 流程控制:
- 条件判断:
if...then...else...fi。 - 循环:
for...do...done(遍历列表/数组)。while...do...done(当条件为真时循环)。until...do...done(当条件为假时循环)。break和continue。
- Case语句:
case...esac,用于多条件分支。
- 条件判断:
- 变量:
函数与输入输出 (1周)
- 目标:让脚本结构化、模块化,并能处理外部输入。
- :
- 函数:
- 定义函数:
function my_func() { ... }或my_func() { ... } - 调用函数:
my_func - 函数参数:函数内同样可以使用
$1,$2等位置参数。 - 函数返回值:使用
return返回状态码,使用echo返回值。
- 定义函数:
- 输入/输出:
- 标准输入/输出/错误:
stdin(0),stdout(1),stderr(2)。 - 重定向:
>(覆盖输出),>>(追加输出),2>(错误输出),&>(所有输出)。 - 管道:,将一个命令的输出作为另一个命令的输入。
- 标准输入/输出/错误:
- 命令行参数:
getopts:用于处理带选项的命令行参数(如-a,-b filename)。
- 函数:
高级主题与实战 (2-3周)
- 目标:编写复杂、健壮、可维护的脚本。
- :
- 调试:使用
bash -x script.sh或在脚本中set -x来跟踪脚本执行过程。 - 正则表达式:掌握
grep,sed,awk这三剑客,这是文本处理的利器。grep:文本过滤。sed:流编辑器,用于文本替换、删除、插入。awk:强大的文本分析工具,按列处理。
- 信号处理:使用
trap命令捕获信号(如Ctrl+C),进行清理工作。 - 源代码包含:使用
source或 命令来引入其他脚本文件。 - 脚本配置化:将变量和配置项提取到单独的配置文件中。
- 调试:使用
推荐视频资源
这里为你精选了国内外优秀的中文视频资源,覆盖了从入门到实战的各个阶段。
国内平台 (Bilibili、慕课网等)
Bilibili (B站) - 免费且高质量
-
【强烈推荐】B站尚硅谷 - Shell脚本教程
- 链接: https://www.bilibili.com/video/BV1x44y1d7jo
- 特点:这套视频是目前公认最好的Shell入门教程之一,讲师讲解清晰,内容全面,从环境搭建到核心语法,再到实战案例(如一键部署Nginx),循序渐进,非常适合零基础小白,跟着这套视频学完,Shell基础会非常扎实。
-
【入门推荐】B站狂神说 - Shell教程

- 链接: https://www.bilibili.com/video/BV1hW411a7ys
- 特点:狂神的教学风格比较活泼,节奏明快,这套视频内容精炼,适合快速入门,了解Shell的核心概念和常用语法,适合想快速上手,或者作为第一门入门课。
-
【进阶实战】B站 - Linux Shell脚本编程实战
- 链接: https://www.bilibili.com/video/BV1JW411c7sS
- 特点:这套视频更侧重于实战,会讲解很多实际工作中会用到的脚本案例,比如日志分析、系统监控、服务部署等,适合在掌握了基础之后,用来提升实战能力。
慕课网
- 【实战导向】Shell脚本自动化运维实战
- 链接: https://www.imooc.com/learn/955
- 特点:慕课网的课程通常带有实战项目,这门课程会带你完成几个真实的项目,比如搭建LNMP环境、日志分析系统等,非常适合希望通过项目来学习Shell的同学。
国外平台 (YouTube) - 需要一定的英语能力,但质量极高
-
【经典必看】The Net Ninja - Shell Scripting Tutorial
- 链接: https://www.youtube.com/playlist?list=PL4cUxeGkcC9gbrWvZxjxgYJx6ZJqgHm3U
- 特点:Net Ninja的视频以短小精悍、讲解清晰著称,这个Shell教程系列非常受欢迎,涵盖了所有核心知识点,并且配有大量代码示例,配有中文字幕,是学习Shell的优秀选择。
-
【系统全面】FreeCodeCamp - Learn Bash Scripting Full Course

- 链接: https://www.youtube.com/watch?v=e74zI8Wl7qM
- 特点:这是一门长达4小时的完整课程,内容非常系统全面,从最基础的命令到复杂的函数、正则表达式和自动化任务都有涉及,适合喜欢一次性系统学习的同学。
学习建议与最佳实践
-
动手,动手,再动手!
- 不要只看不练:看视频时,一定要跟着敲代码,自己写一遍,理解为什么这么写。
- 多写脚本:学习任何编程语言,写代码都是最好的方式,哪怕只是写一个自动备份文件的小脚本,也比只看教程强。
-
先模仿,再创造
- 初期可以完全按照视频中的例子敲一遍,确保环境配置和语法都正确。
- 然后尝试修改这些脚本,比如把备份脚本改成备份到不同的目录,或者给监控脚本增加新的监控项。
-
学会查文档
- Linux自带的帮助文档是最好的老师,学会使用
man命令(如man echo)和--help选项(如ls --help)。 - 善用搜索引擎,遇到问题先尝试自己解决。
- Linux自带的帮助文档是最好的老师,学会使用
-
从解决实际问题出发
- 想想你日常工作中哪些重复性的工作可以用Shell自动化?
- 自动清理服务器日志。
- 一键启动/停止一组服务。
- 定时备份数据库。
- 分析Web服务器的访问日志。
- 带着目标去学习,效率会高很多。
- 想想你日常工作中哪些重复性的工作可以用Shell自动化?
-
注重代码风格
- 写脚本时,注意添加清晰的注释,说明脚本的功能、作者、日期、参数等。
- 保持代码格式整洁,使用缩进,这样脚本出问题时才容易排查。
祝你学习顺利,早日成为Shell脚本大神!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。