哪些实用脚本适合Mac用户?

wen 实用脚本 2

哪些实用脚本适合Mac用户?——自动化工作流与效率提升全攻略

📖 目录导读

  1. 为什么Mac用户需要脚本?——自动化思维入门
  2. Shell脚本:Mac终端里的瑞士军刀
    • 批量文件重命名与清理
    • 一键备份与系统监控脚本
  3. AppleScript与Automator:可视化流程设计
    • 自动整理桌面文件
    • 批量处理图片与PDF合并
  4. Python脚本:跨平台生产力利器
    • 快速下载网页资源
    • 自动生成工作日报
  5. JavaScript for Automation(JXA):现代Mac自动化
  6. 实用问答集锦
    • Q1:脚本运行出错了怎么办?
    • Q2:如何让脚本开机自动执行?
    • Q3:有没有现成的脚本库推荐?
  7. 安全警告与最佳实践

为什么Mac用户需要脚本?——自动化思维入门

Mac凭借其Unix内核和友好的图形界面,为用户提供了独特的“半自动化”优势。每一个Mac用户都可以通过编写或使用简单的脚本,将重复性工作(如文件整理、定时备份、批量转换)交给电脑自动完成

哪些实用脚本适合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工作流可自动将桌面文件按类型归档到“下载”、“文档”、“图片”文件夹(无侵入式设计,不移动原始文件,仅创建快捷方式):

  1. 打开Automator → 选择“快速操作”类型
  2. 添加“获取指定的访达项目” → 选择桌面路径
  3. 添加“过滤查找对象” → 设置条件如“文件扩展名为.pdf或.docx”
  4. 添加“将项目移动到” → 目标文件夹为~/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因其丰富的第三方库(如osshutilrequests),成为编写Mac实用脚本的首选语言之一。注意:Mac自带Python 2.7已淘汰,建议通过Homebrew安装Python 3(brew install python)。

1 快速下载网页资源

需要批量下载某网页上的图片或文档?以下脚本使用requestsBeautifulSoup爬取并保存:

# 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原生守护进程管理器):

  1. 创建plist文件:~/Library/LaunchAgents/com.user.auto_backup.plist
  2. 写入配置(示例为每早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>
  3. 加载并启动: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插件):无需写代码即可实现大量自动化操作。

安全警告与最佳实践

  1. 永远不要相信未审核的脚本:即使是来自GitHub的脚本,也建议先阅读代码,特别是包含rm -rfsudocurl | bash等操作的脚本。
  2. 尽量使用相对路径,避免硬编码绝对路径:例如用~/Documents/代替/Users/张三/Documents/,方便分享。
  3. 设置脚本别名:在~/.zshrc中添加别名,例如alias backup='bash ~/Scripts/backup.sh',避免每次都找路径。
  4. 使用版本控制:把你的脚本放在一个Git仓库中,每次修改前记得commit,方便回滚。
  5. 备份重要数据:自动化批量删除操作前,务必添加echo-n(试运行)参数确认。

通过掌握这些实用脚本,你的Mac将从一台普通电脑变成一个“自动化工坊”,从今天开始,选择最吻合你工作流程的1-2个脚本尝试,你会感受到自动化带来的巨大效率提升,如果你有自己珍藏的脚本,欢迎在评论区分享——毕竟,Mac生态的魅力就在于开源的共享精神。

抱歉,评论功能暂时关闭!