告别手动重复劳动,用 Shell 把时间留给更有价值的事。
作为前端开发者,你是否经常遇到这样的场景:
- 需要批量重命名几十个图片文件。
- 每次启动项目都要敲一串长长的命令。
- 部署上线前要手动执行构建、压缩、上传……
如果有一项技能可以让你一键搞定这些重复工作,那一定是 Shell 脚本。本文将带你从零认识 Shell,了解它能做什么、有何优缺点,并通过实战案例教你如何快速上手,提升你的开发效率。
一、什么是 Shell?
简单来说, Shell 是一个命令行解释器,它是用户与操作系统内核之间的桥梁。你在终端里输入的每一行命令,都由 Shell 解析并告诉内核去执行。
常见的 Shell 有:
- Bash(最主流,Linux / macOS 默认)
- Zsh(macOS 最新版本默认,功能更强大)
- sh(Unix 标准 Shell)
- Fish(对新手友好)
我们平时说的“写 Shell 脚本”,通常就是指编写一组能在 Shell 中执行的命令,保存成文件,然后一键运行。
二、Shell 能干什么?
Shell 的用途极其广泛,尤其在开发、运维和自动化领域。下面是几个前端开发中常见的例子:
1. 文件与目录操作
- 批量创建、删除、移动文件。
- 重命名一组图片(例如
image-1.jpg → icon-1.jpg)。
- 查找并删除无用的
node_modules 文件夹。
2. 自动化构建与部署
- 一键运行
npm run build、压缩静态资源、上传到服务器。
- 编写 CI/CD 脚本(如 GitHub Actions、GitLab CI)。
3. 开发效率工具
- 快速打开项目文件夹、切换 Git 分支。
- 组合多个 Git 命令,例如
git add . + git commit + git push 一键完成。
4. 系统监控与定时任务
- 检查 CPU/内存使用情况。
- 定时备份数据库或日志文件。
三、优点与缺点
✅ 优点
| 特性 |
说明 |
| 自动化 |
将重复性工作写成脚本,一键执行,解放双手。 |
| 高效 |
熟练后比 GUI 操作快数倍。 |
| 强大组合 |
可使用管道符 (|) 将多个命令串联起来,实现复杂的数据处理和任务自动化。 |
| 随处可用 |
几乎所有 Unix/Linux 系统都内置 Shell,macOS 也一样。 |
| 远程管理 |
通过 SSH 连接服务器,所有操作都在 Shell 中完成。 |
❌ 缺点
| 问题 |
说明 |
| 语法诡异 |
空格、引号、变量引用稍不注意就出错,对新手不友好。 |
| 可移植性 |
不同 Shell(bash / zsh / sh)或不同操作系统可能有差异。 |
| 错误处理弱 |
默认遇到错误继续执行,容易埋坑。 |
| 调试困难 |
没有像 JavaScript 那样的控制台断点调试,全靠 echo。 |
| 安全性风险 |
直接执行来源不明的脚本可能造成破坏。 |
四、怎么用 Shell 脚本?
1. 第一个脚本
创建一个文件 hello.sh:
#!/bin/bash
# 这是注释
echo "Hello, Shell!"
#!/bin/bash 称为 shebang,告诉系统用哪个解释器执行。
- 给文件加上执行权限:
chmod +x hello.sh。
- 运行:
./hello.sh。
2. 基础语法速览
变量
name="前端工程师" # 定义变量(等号两边不能有空格)
echo $name # 使用变量加 $
readonly name # 设为只读
unset name # 删除变量
条件判断
if [ -f "package.json" ]; then
echo "存在 package.json"
else
echo "不存在"
fi
常见判断:
-f 是否为文件。
-d 是否为目录。
-z 字符串是否为空。
= 字符串相等。
循环
# 遍历当前目录的 .js 文件
for file in *.js; do
echo "处理文件: $file"
done
# 经典的计数循环
for i in {1..5}; do
echo "次数: $i"
done
函数
function build() {
echo "开始构建..."
npm run build
echo "构建完成"
}
build # 调用函数
3. 实战:一个前端自动部署脚本
假设你要将打包后的 dist 目录上传到服务器,并重启服务:
#!/bin/bash
# 配置
SERVER="user@your-server.com"
REMOTE_PATH="/var/www/myapp"
LOCAL_DIST="./dist"
echo "🔨 开始构建..."
npm run build || exit 1 # 如果构建失败,退出脚本
echo "📦 打包 dist..."
tar -czf dist.tar.gz -C $LOCAL_DIST .
echo "⬆️ 上传到服务器..."
scp dist.tar.gz $SERVER:$REMOTE_PATH
echo "🔄 远程解压并重启..."
ssh $SERVER "cd $REMOTE_PATH && tar -xzf dist.tar.gz && rm dist.tar.gz && pm2 restart app"
echo "✅ 部署完成!"
将以上内容保存为 deploy.sh,以后只需要执行 ./deploy.sh 就能完成整个流程。这种自动化方式正是现代开发流程,例如 自动化 构建与部署的核心组成部分。
4. 调试与技巧
- 执行时加
-x 查看每一行执行过程:bash -x script.sh。
- 善用
set -e 让脚本遇到错误就停止(避免灾难)。
- 用
shellcheck 工具检查语法问题。
- 重要脚本一定要备份,并做好错误处理。
最后
对于前端开发者来说,掌握 Shell 脚本不仅能让日常工作更高效,还能帮你理解整个系统的运作方式。它不需要你成为运维专家,只需要把那些重复、繁琐的任务交给脚本,你就能专注于真正需要创造力的地方。
无论是简单的文件操作,还是复杂的 CI/CD 流程,扎实的 Bash 脚本能力都是加分项。如果你想进一步与其他开发者交流脚本心得或发现更多效率工具,不妨到 云栈社区 逛逛。
现在,打开终端,写下你的第一行 Shell 吧!
|