哪些实用脚本适合Mac用户?——自动化工作流与效率提升全攻略
📖 目录导读
- 为什么Mac用户需要脚本?——自动化思维入门
- Shell脚本:Mac终端里的瑞士军刀
- 批量文件重命名与清理
- 一键备份与系统监控脚本
- AppleScript与Automator:可视化流程设计
- 自动整理桌面文件
- 批量处理图片与PDF合并
- Python脚本:跨平台生产力利器
- 快速下载网页资源
- 自动生成工作日报
- JavaScript for Automation(JXA):现代Mac自动化
- 实用问答集锦
- Q1:脚本运行出错了怎么办?
- Q2:如何让脚本开机自动执行?
- Q3:有没有现成的脚本库推荐?
- 安全警告与最佳实践
为什么Mac用户需要脚本?——自动化思维入门
Mac凭借其Unix内核和友好的图形界面,为用户提供了独特的“半自动化”优势。每一个Mac用户都可以通过编写或使用简单的脚本,将重复性工作(如文件整理、定时备份、批量转换)交给电脑自动完成。

根据Stack Overflow 2024年开发者调查,超过60%的Mac开发者日常使用脚本处理工作流,但即便你并非程序员,掌握几个实用脚本也能让你每天节省至少30分钟,本文结合全球Mac效率社区(如GitHub Awesome-mac、MacScripter)的精华,精选出最适合非技术用户的脚本方案。
Shell脚本:Mac终端里的瑞士军刀
1 批量文件重命名与清理
你是否经常面对“微信图片_2024…”、“截图2024-11-12...”这类杂乱文件名?以下脚本可将所有.png文件重命名为“项目名_日期_序号”格式:
#!/bin/bash # batch_rename.sh counter=1 for file in *.png; do mv "$file" "Project_$(date +%Y%m%d)_$counter.png" ((counter++)) done echo "重命名完成,共处理 $((counter-1)) 个文件"
使用方法:将以上代码保存为batch_rename.sh,在终端进入目标文件夹,执行bash batch_rename.sh即可,更安全的方式是使用brew install rename安装专业工具后调用。
2 一键备份与系统监控脚本
通过一个脚本即可备份Documents目录并用磁盘使用率邮件通知:
#!/bin/zsh
# backup_monitor.sh
backup_dir="/Users/$USER/Backup/$(date +%Y%m%d)"
mkdir -p "$backup_dir"
rsync -av --exclude="*.tmp" ~/Documents/ "$backup_dir/"
disk_usage=$(df -h / | tail -1 | awk '{print $5}')
echo "备份完成!当前磁盘使用率:$disk_usage" | mail -s "Mac备份报告" your@email.com
🧠 技巧:将脚本与
launchd结合,可实现在特定时间自动运行(详情见问答第2题)。
AppleScript与Automator:可视化流程设计
对于不熟悉命令行的用户,AppleScript和Automator提供了拖拽式流程设计能力,且生成的.app文件可像普通应用一样双击运行。
1 自动整理桌面文件
很多人桌面拥挤不堪,以下Automator工作流可自动将桌面文件按类型归档到“下载”、“文档”、“图片”文件夹(无侵入式设计,不移动原始文件,仅创建快捷方式):
- 打开Automator → 选择“快速操作”类型
- 添加“获取指定的访达项目” → 选择桌面路径
- 添加“过滤查找对象” → 设置条件如“文件扩展名为.pdf或.docx”
- 添加“将项目移动到” → 目标文件夹为
~/Documents/工作文档
设置快捷键:系统偏好设置 → 键盘 → 快捷键 → 服务 → 找到该工作流并分配快捷键(如Cmd+Shift+O)。
2 批量处理图片与PDF合并
这个场景几乎每个职场人都需要:合并多张照片为PDF,或批量调整图片大小。
脚本示例(AppleScript):
tell application "Preview"
set theFiles to selection
set thePDF to make new PDF document
repeat with aFile in theFiles
tell thePDF to make new page with properties {source:aFile}
end repeat
save thePDF in (choose file name with prompt "保存合并PDF为:")
end tell
运行方法:打开“脚本编辑器”,粘贴代码,点击运行,选中多张图片后,这个脚本会将它们合并成一个PDF文件。
Python脚本:跨平台生产力利器
Python因其丰富的第三方库(如os、shutil、requests),成为编写Mac实用脚本的首选语言之一。注意:Mac自带Python 2.7已淘汰,建议通过Homebrew安装Python 3(brew install python)。
1 快速下载网页资源
需要批量下载某网页上的图片或文档?以下脚本使用requests和BeautifulSoup爬取并保存:
# download_resources.py
import requests
from bs4 import BeautifulSoup
import os
url = "https://example.com/gallery"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
os.makedirs("downloaded_images", exist_ok=True)
for img in soup.find_all('img'):
img_url = img.get('src')
if img_url and img_url.startswith('http'):
img_data = requests.get(img_url).content
filename = os.path.join("downloaded_images", img_url.split('/')[-1])
with open(filename, 'wb') as f:
f.write(img_data)
print(f"下载完成,共保存 {len(os.listdir('downloaded_images'))} 个文件")
2 自动生成工作日报
每天重复写日报?让脚本从Git提交记录、文件夹修改时间中自动提取:
# daily_report.py
from datetime import date, timedelta
import os
yesterday = date.today() - timedelta(days=1)
target_dir = "/Users/yourname/Projects"
report = f"# 工作日报 - {yesterday}\n\n"
report += "## 完成事项\n"
for root, dirs, files in os.walk(target_dir):
for file in files:
filepath = os.path.join(root, file)
mtime = os.path.getmtime(filepath)
mdate = date.fromtimestamp(mtime)
if mdate == yesterday:
report += f"- 修改了{filepath}\n"
with open(f"日报_{yesterday}.md", "w") as f:
f.write(report)
print(f"日报已生成:日报_{yesterday}.md")
JavaScript for Automation(JXA):现代Mac自动化
JXA是Mac OS X 10.10后引入的脚本框架,允许你用JavaScript控制Mac应用,相比AppleScript,它的语法对前端开发者更友好。
示例:一键获取当前Safari页面的URL并复制到剪贴板。
// copy_url.js
var Safari = Application('Safari')
var currentTab = Safari.windows[0].currentTab
var url = currentTab.url()
var clipboard = Application('Finder')
clipboard.setTheClipboardTo(url)
console.log("已复制URL: " + url)
运行命令:osascript -l JavaScript copy_url.js
实用问答集锦
Q1:脚本运行出错了怎么办?常见错误及修复
- 错误“command not found”:说明你需要先安装该工具,例如
rsync报错,使用brew install rsync。 - 错误“Permission denied”:执行
chmod +x 脚本名.sh赋予执行权限。 - Python脚本报“ModuleNotFoundError”:使用
pip3 install 模块名安装缺失库。 - AppleScript崩溃:绝大多数情况是因为没有给脚本“辅助功能权限”,前往系统偏好设置 → 隐私与安全性 → 辅助功能,勾选“脚本编辑器”或Automator。
Q2:如何让脚本开机自动执行?
推荐使用launchd(Mac原生守护进程管理器):
- 创建plist文件:
~/Library/LaunchAgents/com.user.auto_backup.plist - 写入配置(示例为每早9点运行备份脚本):
<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <dict> <key>Label</key> <string>com.user.auto_backup</string> <key>ProgramArguments</key> <array> <string>/Users/yourname/backup_monitor.sh</string> </array> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>9</integer> <key>Minute</key> <integer>0</integer> </dict> </dict> </plist> - 加载并启动:
launchctl load ~/Library/LaunchAgents/com.user.auto_backup.plist
Q3:有没有现成的脚本库推荐?
- GitHub Awesome-mac:收录了数百个Mac专用脚本、自动化工具(star 42k+)。
- MacScripter.net:历史悠久的AppleScript社区,资源丰富。
- BrettTerpstra的dotfiles:知名开发者共享的个人配置脚本集合。
- Alfred Workflows(Alfred.app插件):无需写代码即可实现大量自动化操作。
安全警告与最佳实践
- 永远不要相信未审核的脚本:即使是来自GitHub的脚本,也建议先阅读代码,特别是包含
rm -rf、sudo、curl | bash等操作的脚本。 - 尽量使用相对路径,避免硬编码绝对路径:例如用
~/Documents/代替/Users/张三/Documents/,方便分享。 - 设置脚本别名:在
~/.zshrc中添加别名,例如alias backup='bash ~/Scripts/backup.sh',避免每次都找路径。 - 使用版本控制:把你的脚本放在一个Git仓库中,每次修改前记得commit,方便回滚。
- 备份重要数据:自动化批量删除操作前,务必添加
echo或-n(试运行)参数确认。
通过掌握这些实用脚本,你的Mac将从一台普通电脑变成一个“自动化工坊”,从今天开始,选择最吻合你工作流程的1-2个脚本尝试,你会感受到自动化带来的巨大效率提升,如果你有自己珍藏的脚本,欢迎在评论区分享——毕竟,Mac生态的魅力就在于开源的共享精神。