外观
可检查的 Shell 工作流
适用范围:使用系统 zsh 的现代 macOS,Intel 与 Apple 芯片均适用。阅读前先掌握 终端基础。
先让脚本报告信息
脚本把一组命令保存下来,供之后重复运行。第一个脚本只显示指定目录的信息,不复制、不删除,也不修改系统。用纯文本编辑器新建 inspect-folder.zsh,保存到自己创建的练习文件夹;文本编辑用户需先切到纯文本,并确认扩展名没有变成 .zsh.txt。Apple:Shell 脚本简介
zsh
#!/bin/zsh
set -eu
target_dir="${1:-.}"
if [[ ! -d "$target_dir" ]]; then
printf '不是可用目录:%s\n' "$target_dir" >&2
exit 1
fi
printf '检查目录:%s\n' "$target_dir"
du -sh "$target_dir"
ls -lah "$target_dir"第一行声明脚本使用 zsh。set -eu 让这个简单示例在未处理的命令失败或使用未设置变量时停止,但它不是所有复杂脚本的完整错误处理方案。$1 是第一个参数,缺省时使用当前目录。变量名加双引号,可让带空格的目录作为一个参数传递。
明确路径后运行
在终端进入保存脚本的练习文件夹,先用 pwd 与 ls 确认位置,再执行:
zsh
zsh ./inspect-folder.zsh .它报告当前目录及其内容。这里显式调用 zsh,所以无需先给脚本增加可执行权限。Shell 可以交互运行命令,也可以从脚本依次执行;工具能否找到还受路径影响。Apple:执行命令与工具
把参数改为一个确实存在、含空格的练习子目录,并给路径加引号。再用一个不存在的名字测试,应该看到错误并停止。脚本的错误文字写到标准错误,与正常结果分开;管道和重定向的基础见 文件、管道与输出。
自动化之前先回答三个问题
输入是否明确?失败会在哪里停止?重复运行会造成什么?这个脚本重复运行只再次显示信息,容易验证。以后添加复制或重命名时,应先打印计划,检查目标是否存在,再用少量副本测试。不要直接给没有读懂的脚本加管理员权限。
练习:用正常目录、含空格目录和不存在目录分别运行,保存三种结果的简短说明。能预测成功与失败的表现后,再考虑把脚本接到快捷指令或定时任务。本文没有要求立即建立后台自动运行。