OSX下Automator调用rsync服务:进度显示、完成提示及桌面路径问题
解决你的Automator + rsync需求与疑问
嘿,我来帮你搞定这几个问题!下面分点给你讲清楚每个需求的实现方法和疑问的解答:
一、如何引用当前用户的桌面路径
在Shell命令里,~符号会自动解析为当前登录用户的主目录,所以直接用~/Desktop就能精准指向当前用户的桌面啦!比如你要把文件同步到桌面的「备份文件夹」,就写~/Desktop/备份文件夹;如果直接放到桌面根目录,写~/Desktop就行。
二、打开终端显示rsync进度 + 完成提示
要让Automator调用终端并实时显示进度,还要加完成提示,你需要调整「运行Shell脚本」的内容,让它主动触发终端窗口执行命令。具体步骤和脚本如下:
- 打开Automator,新建一个服务,设置服务接收文件或文件夹在Finder中;
- 添加「运行Shell脚本」动作,将“传递输入”设置为作为参数;
- 替换默认脚本为以下内容:
for item in "$@" do # 构造终端要执行的命令串,包含进度显示、完成提示和窗口停留逻辑 terminal_cmd="rsync -avz --progress \"$item\" ~/Desktop/; echo -e '\n✅ 复制任务已完成!'; read -n 1 -s -r -p '按任意键关闭终端窗口...'" # 打开终端并执行命令 open -a Terminal --args -e "$terminal_cmd" done
脚本细节说明:
rsync -avz --progress:-a是归档模式(保留文件权限、时间戳等元数据),-v显示同步细节,-z压缩传输节省带宽,--progress就是你要的实时进度条;echo -e '\n✅ 复制任务已完成!':同步结束后在终端输出带换行和 emoji 的提示,更直观醒目;read -n 1 -s -r -p '...':让终端窗口停留,等待用户按任意键再关闭,避免刚看到完成提示窗口就消失;open -a Terminal --args -e "$terminal_cmd":调用系统终端App,执行我们预先构造好的命令串。
三、测试验证
保存你的Automator服务后,在Finder里选中文件/文件夹,右键→服务→你给服务起的名字,终端就会自动弹出,实时显示rsync的同步进度,完成后会提示你按任意键关闭窗口。
内容的提问来源于stack exchange,提问作者local1
相关产品推荐
相关产品推荐

