cliclick:macOS命令行自动化的效率引擎
在现代数字工作流中,重复的鼠标点击、键盘输入和界面操作消耗着大量宝贵时间。无论是软件测试中的回归验证、日常办公的表单填写,还是开发过程中的环境配置,这些机械性操作不仅降低效率,还容易引发人为错误。cliclick作为一款专为macOS设计的命令行自动化工具,通过模拟鼠标键盘事件,将复杂操作转化为可复用的脚本命令,为技术爱好者和专业用户提供了一套高效的自动化解决方案。本文将系统介绍cliclick的安装配置、核心功能、实战应用及高级技巧,帮助你构建强大的自动化工作流。
环境准备:从零开始的安装与配置
多渠道安装方案
cliclick提供三种灵活的安装方式,满足不同用户的使用习惯:
Homebrew安装(推荐)
Homebrew用户可通过一行命令完成安装:
brew install cliclick
执行效果:系统自动下载并配置最新版cliclick,无需手动处理依赖关系
源码编译安装
适合需要自定义编译选项的高级用户:
git clone https://gitcode.com/gh_mirrors/cl/cliclick
cd cliclick
make
sudo cp cliclick /usr/local/bin/
执行效果:在当前目录生成可执行文件,通过sudo复制到系统路径实现全局调用
MacPorts安装
MacPorts用户可使用以下命令:
sudo port install cliclick
执行效果:通过MacPorts包管理器完成安装,自动处理依赖和路径配置
关键权限配置
macOS的安全机制要求显式授权辅助功能访问:
- 打开系统偏好设置 → 安全性与隐私 → 隐私标签
- 选择左侧辅助功能选项
- 点击左下角锁图标解锁设置(需管理员密码)
- 勾选终端应用(或iTerm等你使用的终端工具)
- 重启终端使设置生效
⚠️ 注意事项:如不配置此权限,cliclick将无法正常模拟鼠标键盘事件,表现为命令无响应或报错
核心功能:全面掌控输入设备
鼠标控制:精准定位与操作模拟
cliclick提供完整的鼠标事件模拟能力,支持绝对坐标和相对坐标两种定位方式:
基础移动与点击
# 移动鼠标到屏幕坐标(100, 200)
cliclick m:100,200
# 在当前位置左键单击
cliclick c:.
# 在指定位置右键点击
cliclick rc:500,300
# 双击操作
cliclick dc:800,400
参数说明:m:后接X,Y坐标;c:表示单击;rc:表示右键单击;dc:表示双击;.表示当前位置
拖拽操作序列
# 完整拖拽流程:按下→移动→释放
cliclick dd:200,200 # 按下鼠标左键
cliclick dm:300,300 # 拖动到新位置
cliclick du:300,300 # 释放鼠标
执行效果:模拟从(200,200)到(300,300)的拖拽操作,适用于移动窗口、调整大小等场景
相对坐标操作
# 基于当前位置的相对移动
cliclick m:+50,0 # 向右移动50像素
cliclick m:0,+30 # 向下移动30像素
cliclick m:-20,-10 # 向左上移动
应用场景:创建自适应不同屏幕分辨率的脚本,避免硬编码固定坐标
键盘模拟:按键与文本输入
cliclick能够模拟各种键盘操作,从单个按键到复杂组合键:
基本按键操作
# 按下并释放回车键
cliclick kp:return
# 按下并释放ESC键
cliclick kp:escape
# 单独按下Shift键(不释放)
cliclick kd:shift
# 释放Shift键
cliclick ku:shift
键名参考:支持大部分标准键名,如return, tab, delete, escape, space等
组合键操作
# 模拟Command+A全选
cliclick kd:cmd kp:a ku:cmd
# 模拟Command+C复制
cliclick kd:cmd kp:c ku:cmd
# 模拟Ctrl+Alt+Delete
cliclick kd:ctrl kd:alt kp:delete ku:alt ku:ctrl
执行逻辑:kd:表示按键按下,kp:表示按键按下并释放,ku:表示按键释放
文本输入功能
# 直接输入文本内容
cliclick t:"Hello World"
# 输入特殊字符(需转义双引号)
cliclick t:\"Hello \"World\"\"
# 结合延迟输入(每个字符间隔100ms)
cliclick -d 100 t:"Slow typing"
参数说明:-d参数设置字符间延迟,单位为毫秒,用于模拟真实输入速度
实用工具:增强脚本灵活性
cliclick提供多种辅助功能,提升自动化脚本的可靠性和实用性:
等待与延迟
# 等待500毫秒
cliclick w:500
# 设置默认事件间隔(全局生效)
cliclick -w 200 m:100,100 c:100,100 m:200,200 c:200,200
应用场景:在界面切换、加载过程中添加等待时间,确保操作顺序正确
颜色拾取与鼠标位置
# 获取指定位置的颜色值(十六进制)
cliclick cp:100,200
# 输出示例:#FF0000
# 显示当前鼠标位置坐标
cliclick p
# 输出示例:876, 543
实用技巧:结合颜色拾取功能可实现基于像素颜色的条件判断,增强脚本智能性
调试与模拟执行
# 测试模式(只输出操作,不实际执行)
cliclick -m test m:100,200 c:100,200
# 详细输出模式
cliclick -m verbose t:"Debug info"
调试建议:开发复杂脚本时,先使用-test模式验证命令序列,再实际执行
实战案例:自动化场景解决方案
软件测试自动化
为桌面应用创建重复测试流程,确保每次更新后的功能一致性:
#!/bin/bash
# 测试脚本:模拟用户登录流程
# 启动应用
open /Applications/MyApp.app
# 等待应用加载
cliclick w:2000
# 输入用户名
cliclick m:300,250 c:300,250 t:"testuser"
cliclick kp:tab
# 输入密码
cliclick t:"testpass"
cliclick kp:return
# 等待登录完成
cliclick w:3000
# 验证是否登录成功(通过检查特定位置颜色)
color=$(cliclick cp:800,50)
if [ "$color" = "#4CAF50" ]; then
echo "登录成功"
else
echo "登录失败"
fi
使用提示:可结合shell脚本的条件判断和循环,构建更复杂的测试逻辑
办公自动化:表单填写助手
自动完成重复性表单填写工作,减少人工输入错误:
#!/bin/bash
# 表单自动填写脚本
# 移动到姓名输入框并点击
cliclick m:450,320 c:450,320
cliclick t:"张三"
# 移动到邮箱输入框
cliclick m:450,370 c:450,370
cliclick t:"zhangsan@example.com"
# 移动到电话输入框
cliclick m:450,420 c:450,420
cliclick t:"13800138000"
# 勾选同意条款
cliclick m:350,550 c:350,550
# 提交表单
cliclick m:500,600 c:500,600
优化建议:使用相对坐标或窗口定位工具,使脚本适应不同窗口位置
开发辅助:环境快速配置
为开发环境设置创建自动化脚本,实现一键配置:
#!/bin/bash
# 开发环境初始化脚本
# 打开终端
open -a Terminal
# 等待终端启动
cliclick w:1000
# 最大化窗口
cliclick kd:cmd kp:f ku:cmd
# 克隆项目仓库
cliclick t:"git clone https://gitcode.com/gh_mirrors/cl/cliclick"
cliclick kp:return
# 等待克隆完成
cliclick w:5000
# 进入项目目录并编译
cliclick t:"cd cliclick && make"
cliclick kp:return
扩展思路:可结合expect工具处理需要交互的命令行操作
高级技巧:构建专业自动化工作流
命令文件与批量执行
对于复杂操作序列,将命令保存为文件可提高可维护性:
# 创建命令文件 commands.txt
cat > commands.txt << EOF
m:100,100
c:100,100
w:500
m:200,200
c:200,200
t:"Automated sequence"
EOF
# 执行命令文件
cliclick -f commands.txt
文件格式:每行一个命令,语法与命令行参数相同,支持注释(#开头行)
与AppleScript集成
结合AppleScript实现更复杂的系统级自动化:
tell application "System Events"
# 获取当前活动窗口位置
set winPos to position of front window of application process "Terminal"
# 调用cliclick在窗口内相对位置点击
do shell script "/usr/local/bin/cliclick m:" & (item 1 of winPos) + 50 & "," & (item 2 of winPos) + 50 & " c:"
end tell
执行方式:保存为.scpt文件,通过osascript命令执行或集成到Automator
定时任务与后台执行
使用launchd或cron创建定时自动化任务:
# 创建launchd配置文件 ~/Library/LaunchAgents/com.example.cliclick.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.cliclick</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/cliclick</string>
<string>-f</string>
<string>/Users/username/automation/backup.cliclick</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>18</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
# 加载定时任务
launchctl load ~/Library/LaunchAgents/com.example.cliclick.plist
注意事项:使用launchd而非cron可获得更好的macOS系统集成,支持休眠唤醒后执行
错误处理与日志记录
构建健壮的自动化脚本需要完善的错误处理:
#!/bin/bash
# 带错误处理的自动化脚本
# 日志文件路径
LOG_FILE="/tmp/cliclick_automation.log"
# 记录开始时间
echo "[$(date)] Automation started" >> $LOG_FILE
# 执行命令并检查结果
cliclick m:100,200
if [ $? -ne 0 ]; then
echo "[$(date)] Failed to move mouse" >> $LOG_FILE
exit 1
fi
cliclick c:100,200
if [ $? -ne 0 ]; then
echo "[$(date)] Failed to click" >> $LOG_FILE
exit 1
fi
echo "[$(date)] Automation completed successfully" >> $LOG_FILE
扩展功能:可添加邮件通知或系统通知,在任务失败时及时提醒
学习路径与资源
进阶学习路线
-
基础阶段
- 掌握鼠标、键盘基本命令
- 熟悉坐标系统和相对定位
- 学会创建简单的命令序列
-
中级阶段
- 掌握shell脚本与cliclick结合
- 学习条件判断和循环控制
- 实现错误处理和日志记录
-
高级阶段
- 与AppleScript、Automator集成
- 构建定时任务和后台自动化
- 开发复杂的条件型自动化逻辑
实用资源
- 官方文档:项目目录下的README.md文件提供完整命令参考
- 命令速查:使用
cliclick -h查看所有可用命令和参数 - 示例脚本:项目中的Test.sh文件包含多种使用示例
- 社区支持:通过开源社区获取最新使用技巧和问题解答
cliclick作为一款轻量级但功能强大的命令行自动化工具,为macOS用户提供了无限可能。无论是简化日常工作、加速开发流程,还是构建复杂的自动化测试系统,它都能成为你提高效率的得力助手。通过本文介绍的知识和技巧,你可以开始构建属于自己的自动化解决方案,让技术真正服务于创意和效率。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedJavaScript094- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00