在 macOS 上使用 .command 文件自动化重复性工作

张开发
2026/5/21 21:42:17 15 分钟阅读
在 macOS 上使用 .command 文件自动化重复性工作
1. 简介在 macOS 中.command文件是一种特殊的可执行脚本文件。当你在 Finder 中双击它时系统会自动打开一个终端窗口并运行其中的命令。这非常适合将一系列重复性操作如文件整理、数据备份、代码构建等封装成一个可双击启动的自动化工具无需每次手动打开终端并逐条输入命令。2. 准备工作文本编辑器可以使用系统自带的“文本编辑”但需要确保保存为纯文本格式。推荐使用 VS Code、Sublime Text 或终端中的nano、vim。终端基础了解基本的命令行操作如cd、ls会帮助你编写和调试脚本。3. 创建第一个 .command 脚本3.1 新建文件打开文本编辑器新建一个文件。输入以下内容作为测试脚本#!/bin/bash echo Hello, 这是一个测试脚本 read -p 按回车键关闭窗口...#!/bin/bash称为 Shebang指定脚本由 Bash 解释器执行。echo输出一行文本。read -p提示用户按回车防止窗口立即关闭。保存文件文件名以.command结尾例如测试脚本.command。建议保存在桌面或常用文件夹中。3.2 赋予执行权限脚本文件默认没有执行权限需要在终端中手动添加打开“终端”应用。输入chmod x注意空格然后将刚才保存的.command文件拖入终端窗口路径会自动填入。按回车执行。例如chmod x ~/Desktop/测试脚本.command3.3 双击运行现在双击该文件系统会弹出终端窗口显示“Hello, 这是一个测试脚本”按回车后窗口关闭。这表明脚本已成功运行。4. 编写重复性工作脚本4.1 基本结构一个典型的.command脚本包含Shebang 行#!/bin/bash或#!/bin/zsh一系列命令可选的错误处理和交互4.2 常用命令示例4.2.1 切换目录并执行任务bash#!/bin/bash cd /Users/你的用户名/Documents/项目目录 || exit 1 python3 build.py echo 任务完成 read -p 按回车键退出|| exit 1若cd失败脚本立即退出并返回错误状态。4.2.2 批量重命名文件#!/bin/bash cd /Users/你的用户名/Desktop/待处理图片 || exit 1 for file in *.jpg; do mv $file 原图_$file done echo 已重命名所有 .jpg 文件 read -p 按回车键退出4.2.3 执行备份使用 rsync#!/bin/bash SOURCE/Users/你的用户名/Documents/重要数据 DEST/Volumes/备份盘/重要数据备份 rsync -av --delete $SOURCE/ $DEST/ echo 备份完成 read -p 按回车键退出4.2.4 定时循环任务如每隔 1 小时执行一次#!/bin/bash while true; do echo $(date): 开始执行任务 # 在这里放置需要重复执行的命令 sleep 3600 # 等待 1 小时 done注意这种无限循环脚本只能通过强制关闭终端窗口来停止适合在监督下临时运行。4.3 条件判断与错误处理#!/bin/bash cd /Users/你的用户名/Documents/项目 || { echo 错误项目目录不存在 read -p 按回车键退出 exit 1 } if [ ! -f config.json ]; then echo 错误缺少 config.json 文件 read -p 按回车键退出 exit 1 fi echo 一切就绪开始执行... # 主命令 ./run_task echo 执行完毕 read -p 按回车键退出5. 调试与错误处理查看错误输出脚本运行时终端会显示所有输出包括错误信息。如果窗口一闪而过可在脚本末尾加上read -p 按回车键退出。启用调试模式在 Shebang 后加set -x会打印每条执行的命令便于追踪问题。#!/bin/bash set -x # 你的命令检查退出状态使用$?获取上一条命令的退出码非零表示出错。6. 交互式脚本有时需要用户输入参数或确认操作#!/bin/bash read -p 请输入要处理的文件夹路径: folder if [ ! -d $folder ]; then echo 文件夹不存在 exit 1 fi read -p 确认要删除 $folder 中的临时文件吗(y/n): confirm if [ $confirm y ]; then rm -rf $folder/*.tmp echo 清理完成 else echo 取消操作 fi read -p 按回车键退出7. 安全注意事项谨慎使用rm、sudo等危险命令建议先用echo模拟操作确认无误后再替换。避免硬编码敏感信息如密码可使用环境变量或钥匙串。权限控制确保.command文件的权限只授予必要用户chmod 750等。验证来源从网络下载的脚本应先检查内容避免恶意代码。8. 进阶结合 launchd 实现定时自动执行.command文件需要手动双击若希望脚本在后台按计划自动运行可以使用 macOS 的launchd服务。8.1 创建 plist 文件在~/Library/LaunchAgents/下创建一个com.example.mytask.plist文件内容示例xml?xml version1.0 encodingUTF-8? !DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd plist version1.0 dict keyLabel/key stringcom.example.mytask/string keyProgramArguments/key array string/bin/bash/string string/Users/你的用户名/Desktop/备份脚本.command/string /array keyStartInterval/key integer3600/integer !-- 每小时运行一次 -- keyStandardOutPath/key string/tmp/mytask.log/string keyStandardErrorPath/key string/tmp/mytask.err/string /dict /plist8.2 加载任务launchctl load ~/Library/LaunchAgents/com.example.mytask.plist这样脚本就会按设定时间自动运行无需双击。9. 常见问题解答Q1双击 .command 文件后提示“无法打开因为无法验证开发者”A这是 macOS 的安全机制。按住Control键再双击文件选择“打开”或在系统设置 → 隐私与安全性中允许。Q2双击后终端窗口一闪而过看不到结果A在脚本最后添加read -p 按回车键退出可暂停窗口。另外检查脚本是否有执行权限chmod x。Q3脚本中使用了cd但后续命令仍在原目录执行A如果cd失败路径错误或权限不足脚本会继续在当前目录执行。请用cd ... || exit 1确保切换成功。Q4文件名包含中文或空格会有影响吗A一般不影响。但若在脚本中引用自身路径如$0建议用引号包裹$0。系统对 Unicode 文件名支持良好。Q5如何让脚本在后台运行而不弹出终端窗口A.command文件天然会打开终端。要实现静默后台运行可改用launchd或创建一个应用程序包通过 Automator 或 Platypus。10. 总结.command文件是 macOS 上一键自动化重复性工作的利器。只需掌握简单的 Bash 脚本编写就能将繁琐的手动操作转化为双击即用的工具。配合launchd还可以实现定时任务进一步提升效率。开始动手吧让重复劳动变得轻松

更多文章