
Shell 脚本学习路线 | 26 年最新零基础到精通一条龙(万人收藏⭐️)
编程导航学习网站:学编程、做项目、拿 Offer!
企业高频面试题库:开始刷题,面试遇原题!
精选简历模板大全:1 分钟搞定简历!
AI 资源导航网站:获取最新 AI 黑科技!
1 对 1 模拟面试:随时随地提升面试能力
Shell 脚本求职高频面试题:开始刷题
开篇介绍
Shell 脚本是什么?
Shell 是 Linux/Unix 系统的命令行解释器,Shell 脚本就是由 Shell 命令组成的可执行文件。通过编写 Shell 脚本,我们可以将一系列命令组合起来,实现自动化任务,大大提高工作效率。
Shell 脚本广泛应用于系统管理、自动化运维、数据处理、软件部署等场景。比如自动备份数据库、批量处理文件、定时执行任务、监控系统状态、自动化部署应用等,这些工作都可以通过 Shell 脚本来完成。
为什么要学 Shell 脚本?
对于运维工程师来说,Shell 脚本是必备技能;对于后端开发工程师来说,Shell 脚本能够帮助你快速完成一些自动化任务,提高开发效率。而且 Shell 脚本的学习成本相对较低,语法简单,几天时间就能掌握基础用法。
在 AI 时代,虽然有了很多自动化工具和平台,但 Shell 脚本仍然是最灵活、最高效的自动化方案。而且现在可以使用 AI 工具(比如 ChatGPT、Gemini、DeepSeek)帮你生成 Shell 脚本,大大降低了学习门槛。
学习前提
学习 Shell 脚本需要具备基本的 Linux 命令行知识。如果你还不熟悉 Linux 命令,可以查看 Linux 服务器学习路线。
学习路线图
整体学习建议
1)边学边练:Shell 脚本的学习必须结合实践,要多写脚本、多调试。建议在 Linux 系统或 macOS(内置 Bash)上练习。
或者利用 Shell playground 在线工具 随时随地练习:
2)从简单到复杂:不要一开始就写复杂的脚本,先从简单的任务开始(如打印文本、创建文件),逐步增加复杂度。
3)善用 AI 工具:遇到不懂的命令或错误,可以让 AI 工具(如 ChatGPT)帮你解释和调试。可以到鱼皮的 AI 资源大全 中看看有没有适合你的工具。
4)学习 awk 和 sed:awk 和 sed 是 Shell 脚本中常用的文本处理工具,功能强大,建议重点学习。
5)注意 Shell 的选择:本路线以 Bash 为主,这是 Linux 系统最常用的 Shell。其他 Shell(如 Zsh、Fish)的语法略有不同。
阶段 1:Shell 基础(1-5 天)
学习目标
理解 Shell 脚本的基本概念,掌握 Shell 脚本的编写和执行方法。
知识点
Shell 基础【必学】:
- 什么是 Shell
- 常见的 Shell 类型(Bash、Zsh、Ksh、Csh)
- Shebang(#!/bin/bash)
- 脚本的执行方式(bash script.sh、./script.sh、source script.sh)
- 脚本权限(chmod +x)
注释【必学】:
- 单行注释(#)
- 多行注释(:<<'COMMENT' ... COMMENT)
输出【必学】:
- echo 命令
- printf 命令
输入【必学】:
- read 命令
- 命令行参数($1、$2、$@、$#)
学习重点
1)Shebang(#!/bin/bash)必须放在脚本的第一行,告诉系统使用哪个解释器来执行脚本。
2)脚本执行方式的区别:bash script.sh 会创建新的子进程执行脚本,source script.sh 在当前进程执行脚本,变量会保留。
3)建议养成良好的编码习惯,每个脚本都要添加注释,说明脚本的功能、作者、日期等。
学习资源
示例脚本
▼bash复制代码#!/bin/bash # 第一个 Shell 脚本 # 作者:鱼皮 # 日期:2025-11-15 echo "Hello, Shell!" echo "当前用户:$USER" echo "当前目录:$(pwd)"
阶段 2:变量和参数(1-5 天)
学习目标
掌握 Shell 变量的定义和使用,理解特殊变量的含义。
知识点
变量定义【必学】:
- 变量定义(无空格:name="value")
- 使用变量($name 或 ${name})
- 只读变量(readonly)
- 删除变量(unset)
变量类型【必学】:
- 局部变量
- 环境变量(export)
- Shell 变量
特殊变量【必学】:
- $0:脚本名称
- $1、$2...:位置参数
- $#:参数个数
- $@:所有参数(列表形式)
- $*:所有参数(字符串形式)
- $?:上一条命令的退出状态
- $$:当前进程 ID
字符串操作【建议学】:
- 字符串拼接
- 获取字符串长度(${#string})
- 提取子字符串(${string:start:length})
- 字符串替换(${string/old/new})
数组【建议学】:
- 定义数组(arr=(1 2 3))
- 访问数组元素(${arr[0]})
- 获取数组长度(${#arr[@]})
- 遍历数组
学习重点
1)变量定义时等号两边不能有空格,这是 Shell 的语法规则。name="value" 是正确的,name = "value" 会报错。
2)使用变量时建议加花括号 ${name},这样可以避免歧义,特别是在字符串拼接时。
