查漏补缺:你写的 Shell 脚本为什么总像“一次性玩具”
很多转岗做运维或后端的人,对 Shell 的认知停留在“敲几条命令、拼个管道”。真到写自动化脚本时,常见的缺口是:不懂父子进程怎么派生,导致变量在子进程里死活取不到值;分不清单引号和双引号的展开时机,转义字符乱加一通;脚本里全写绝对路径和死命令,换个环境就跑崩。这门课解决的就是这种“能写但写不明白”的问题。它不教你花哨的工具链,而是从 bash 的底层运行机制切入,把配置文件加载顺序、别名生效范围、进程派生原理这些容易被略过的地基重新打牢。适合已经熟悉基本 Linux 命令操作,但没系统学过 bash 原理、写脚本全靠复制粘贴的学习者。
建议先看哪几块:从配置加载到进程派生
资料按基础到进阶排布,别按顺序死磕。建议先啃“bash 相关配置文件和别名”以及“bash 的父子进程”这两块。很多人改了环境变量不生效,就是因为不知道交互式登录和非交互式加载的配置文件不同。看完这两节,你要能理清 .bashrc 和 .bash_profile 的区别。接着重点看“产生子进程的四种方式”和“变量定义与命令替换”,这是 Shell 从命令行走向脚本化的关键转折。配套练习上,别光看视频,自己开终端把产生子进程的几种方式敲一遍,用 export 导出变量后,在子进程中验证能否读取,再试着用反引号和 $() 两种方式做命令替换,对比输出差异。
学完能独立做什么:写出规范且环境健壮的脚本
学完这套机制,你该能独立写出不依赖特定路径、变量作用域清晰的健壮脚本。比如写个批量处理日志的脚本,知道怎么定义局部变量,知道何时该加双引号防止路径带空格解析报错,知道 echo 输出带转义字符时怎么配合参数正确显示。资料里的“编写第一个脚本和执行脚本的方法”配合“取消变量与元字符”是很好的练习素材:照着写一个带参数输入、内部做命令替换、最后清理临时变量的完整流程。练习时强制要求自己给关键行写注释,别再写通篇无注释的流水账。把这些基础吃透,以后遇到别人写的复杂部署脚本,你也能一眼看懂它的变量传递逻辑和进程结构,而不是对着屏幕瞎猜。
课程目录
1-1 [shell编程基础] 介绍shell编程 (01:10:03) 1-2 [shell编程基础] shell编程常识和规范-bash的产生 (01:17:00) 1-3 [shell编程基础] shell里的bash详解 (46:10) 1-4 [shell编程基础] bash相关配置文件和别名 (01:08:27) 1-5 [shell编程基础] bash的父子进程. (31:33) 1-6 [shell编程基础] rz命令和进程类型和父子进程案例 (01:04:32) 1-7 [shell编程基础] 编写第1个shell脚本和执行脚本的方法 (01:02:32) 1-8 [shell编程基础] 产生子进程的4种方式-变量定义和使用-命令替换 (52:44) 1-9 [shell编程基础] 取消变量-元字符-转义字符-单引号和双引号-echo命令 (01:15:07) 1-10 [shell编程基础] printf和read命令使用 (46:32) 1-11 [shell编程基础] shell语法解析过程-创建用户脚本分析和实现 (01:14:51) 1-12 [shell编程基础] 用户脚本回顾-set-env-export命令-PATH变量 (38:56) 1-13 [shell编程基础] 位置变量-basename-random随机数-wc命令 (01:05:03) 1-14 [shell编程基础] 位置变量练习-find和ls和wc命令使用 (21:24) 1-15 [shell编程基础] for循环讲解和位置变量 (53:12) 1-16 [shell编程基础] shell判断之&&和||使用 (41:35) 1-17 [shell编程基础] here document和lftp使用 (51:07) 1-18 [shell编程基础] 企业级shell案例及规范 (21:36) 1-19 [shell编程基础] mysql安装-socket介绍-here-document (01:17:41) 1-20 [shell编程基础] shell里对mysql数据库操作及练习 (59:44) 1-21 [shell编程基础] lftp脚本案例分析 (48:49) 1-22 [shell编程基础] shell对mysql数据库案例操作 (24:31) 1-23 [shell编程基础] 文件查找find案例-位置变量-for循环 (51:20) 2-1 [数学运算和数组、文本处理] 数值运算和数值比较-小数计算-bc-案例分析 (01:00:25) 2-2 [数学运算和数组、文本处理] 整数的计算和比较案例-小数的比较讲解 (35:03) 2-3 [数学运算和数组、文本处理] bc判断小数-date命令时间计算 (01:00:15) 2-4 [数学运算和数组、文本处理] array数组-点歌程序-作业 (35:53) 2-5 [数学运算和数组、文本处理] 点歌程序和放学脚本案例分析 (54:01) 2-6 [数学运算和数组、文本处理] 关联数组 (28:08) 2-7 [数学运算和数组、文本处理] 关联数组作业-seq命令 (38:00) 2-8 [数学运算和数组、文本处理] 文本处理命令tr-seq-sort (57:03) 2-9 [数学运算和数组、文本处理] 文件处理命令-uniq-sort-cut. (33:56) 2-10 [数学运算和数组、文本处理] 配置ip地址 (01:11:25) 2-11 [数学运算和数组、文本处理] 练习题目讲解和抽学生回答问题脚本 (01:13:24) 2-12 [数学运算和数组、文本处理] xferlog日志分析 (50:36) 2-13 [数学运算和数组、文本处理] join-paste-split和双色球及ssh日志分析作业 (01:29:21) 2-14 [数学运算和数组、文本处理] 综合复习扩展-函数-while-case-read (56:07) 2-15 [数学运算和数组、文本处理] 双色球和点歌程序案例分析 (01:21:06) 2-16 [数学运算和数组、文本处理] 各种括号的使用-单圆括号-双圆括号-中括号-大括号等 (01:01:13) 2-17 [数学运算和数组、文本处理] 单引号和双引号和反引号-权限-文件类型-故事-1 (45:37) 2-18 [数学运算和数组、文本处理] 单引号和双引号和反引号-权限-文件类型-故事-2 (42:44) 3-1 [条件测试和结构化语句] 条件判断语句 (47:52) 3-2 [条件测试和结构化语句] 整数和浮点数比较判断-获取变量长度 (01:16:16) 3-3 [条件测试和结构化语句] 阿里巴巴和40大盗-密码判断 (54:33) 3-4 [条件测试和结构化语句] 判断密码长度和复杂性脚本分析-1 (34:26) 3-5 [条件测试和结构化语句] 判断密码长度和复杂性脚本分析-2. (34:34) 3-6 [条件测试和结构化语句] 双中括号和双圆括号的组合运算 (57:28) 3-7 [条件测试和结构化语句] if单分支-双分支-多分支案例 (01:36:19) 3-8 [条件测试和结构化语句] if嵌套案例-exit (33:16) 3-9 [条件测试和结构化语句] for循环-扫描整个局域网 (59:04) 3-10 [条件测试和结构化语句] 扫描局域网脚本分析-后台运行原理分析 (01:18:50) 3-11 [条件测试和结构化语句] 扫描和监控脚本-web-mysql-ftp (39:10) 4-1 [while循环和case语句、函数] while循环和crontab计划任务 (01:24:50) 4-2 [while循环和case语句、函数] while循环判断用户类型 (38:28) 4-3 [while循环和case语句、函数] ftp服务器监控脚本分析 (01:18:39) 4-4 [while循环和case语句、函数] ftp日志分析实现案例和过程 (01:26:37) 4-5 [while循环和case语句、函数] while循环-猜唐僧紫金钵钵的价格 (33:09) 4-6 [while循环和case语句、函数] case语句使用及案例 (41:38) 4-7 [while循环和case语句、函数] 函数 (35:14) 4-8 [while循环和case语句、函数] 函数的计算案例分析-return返回值-local变量作用域 (01:16:08) 5-1 [正则表达式] 正则表达式和grep-1 第一段 (35:16) 5-2 [正则表达式] 正则表达式和grep-1 第二段 (34:54) 5-3 [正则表达式] grep命令-2 (49:13) 5-4 [正则表达式] grep过滤ip地址正则的使用 (58:04) 5-5 [正则表达式] grep里的网站URL的正则使用 (22:09) 5-6 [正则表达式] grep里的邮箱的正则和网址URL的正则 (18:37) 5-7 [正则表达式] 网络URL正则和总结-配置多个ip (59:29) 6-1 [sed命令使用] sed-1 (38:44) 6-2 [sed命令使用] sed-2 (01:12:27) 6-3 [sed命令使用] sed-修改ip地址脚本 (01:49:30) 6-4 [sed命令使用] sed-4 (01:31:06) 6-5 [sed命令使用] sed-5 (01:04:57) 6-6 [sed命令使用] sed扩展hold-space和pattern-space (26:33) 7-1 [awk命令使用] awk-1 (35:17) 7-2 [awk命令使用] awk-2 (48:21) 7-3 [awk命令使用] awk-3 (46:41) 7-4 [awk命令使用] awk-4 (01:02:05) 8-1 [expect命令使用] ssh服务 (01:11:56) 8-2 [expect命令使用] ssh密钥认证-2 (01:00:09) 8-3 [expect命令使用] ssh服务-3 (48:17) 8-4 [expect命令使用] expect视频-1 (01:08:50) 8-5 [expect命令使用] ssh服务-4 (14:52) 8-6 [expect命令使用] csv文件使用 (30:42) 8-7 [expect命令使用] expect-4 (54:10) 8-8 [expect命令使用] expect视频-2 (01:01:20) 8-9 [expect命令使用] expect-5 (43:24) 9-1 [软件安装-yum和rpm命令使用] yum介绍和rpm的介绍使用 (01:00:21) 9-2 [软件安装-yum和rpm命令使用] rpm的使用-2 (01:12:35) 9-3 [软件安装-yum和rpm命令使用] yum的原理-3 (01:08:39) 9-4 [软件安装-yum和rpm命令使用] 官方yum-本地yum-第3方yum-ftp方式yum-4 (01:13:13)





