MacOS下使用Bash编写Automator自动化脚本的问题求助
解决Mac Automator创建符号链接并添加到Finder侧边栏的问题
一、Automator应用配置步骤
- 打开Automator,新建「应用」类型文档
- 添加「运行Shell脚本」动作,设置「传递输入」为「作为参数」
- 将下方修正后的脚本粘贴到动作框内
二、修正后的Shell脚本
#!/bin/bash # 目标符号链接存储目录,可根据实际路径修改 TARGET_DIR="/Users/Default/Documents/GoogleSync" # 确保目标目录存在,不存在则自动创建 mkdir -p "$TARGET_DIR" for f in "$@" do # 检查符号链接是否已存在,避免重复创建报错 LINK_PATH="$TARGET_DIR/$(basename "$f")" if [ ! -L "$LINK_PATH" ]; then ln -s "$f" "$LINK_PATH" echo "已创建符号链接: $LINK_PATH" else echo "符号链接已存在: $LINK_PATH" fi # 获取文件/文件夹名称 ITEM_NAME=$(basename -- "$f") # 转义路径空格,生成标准file://格式URL ESCAPED_PATH=$(printf "file://%s" "$(echo "$f" | sed 's/ /%20/g')") # 检查侧边栏是否已存在该项目,避免重复添加 if ! /usr/local/bin/mysides list | grep -q "$ITEM_NAME"; then /usr/local/bin/mysides add "$ITEM_NAME" "$ESCAPED_PATH" echo "已添加到Finder侧边栏: $ITEM_NAME" else echo "项目已存在于Finder侧边栏: $ITEM_NAME" fi done
三、关键优化说明
- 目录兜底处理:用
mkdir -p确保目标目录存在,避免因目录缺失导致创建链接失败 - 重复操作防护:检查符号链接和侧边栏项是否已存在,防止重复执行引发错误
- 路径转义优化:通过
printf生成规范的file://格式路径,兼容带空格的文件/文件夹名 - 状态反馈:添加echo输出操作结果,方便调试和验证执行情况
四、测试与权限排查
- 保存Automator应用,例如命名为「SyncLinkToSidebar.app」
- 拖拽文件或文件夹到应用图标上,验证符号链接是否生成、侧边栏是否新增项目
- 若遇权限问题:
- 右键应用→「显示简介」,勾选「使用Rosetta打开」(针对Apple Silicon芯片)
- 或在终端给脚本添加执行权限:
chmod +x /path/to/your/script.sh
内容的提问来源于stack exchange,提问作者Ghost_Hunter
相关产品推荐
相关产品推荐

