首页
/ cliclick:macOS命令行自动化的效率引擎

cliclick:macOS命令行自动化的效率引擎

2026-04-16 09:05:25作者:蔡丛锟

在现代数字工作流中,重复的鼠标点击、键盘输入和界面操作消耗着大量宝贵时间。无论是软件测试中的回归验证、日常办公的表单填写,还是开发过程中的环境配置,这些机械性操作不仅降低效率,还容易引发人为错误。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的安全机制要求显式授权辅助功能访问:

  1. 打开系统偏好设置安全性与隐私隐私标签
  2. 选择左侧辅助功能选项
  3. 点击左下角锁图标解锁设置(需管理员密码)
  4. 勾选终端应用(或iTerm等你使用的终端工具)
  5. 重启终端使设置生效

⚠️ 注意事项:如不配置此权限,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

扩展功能:可添加邮件通知或系统通知,在任务失败时及时提醒

学习路径与资源

进阶学习路线

  1. 基础阶段

    • 掌握鼠标、键盘基本命令
    • 熟悉坐标系统和相对定位
    • 学会创建简单的命令序列
  2. 中级阶段

    • 掌握shell脚本与cliclick结合
    • 学习条件判断和循环控制
    • 实现错误处理和日志记录
  3. 高级阶段

    • 与AppleScript、Automator集成
    • 构建定时任务和后台自动化
    • 开发复杂的条件型自动化逻辑

实用资源

  • 官方文档:项目目录下的README.md文件提供完整命令参考
  • 命令速查:使用cliclick -h查看所有可用命令和参数
  • 示例脚本:项目中的Test.sh文件包含多种使用示例
  • 社区支持:通过开源社区获取最新使用技巧和问题解答

cliclick作为一款轻量级但功能强大的命令行自动化工具,为macOS用户提供了无限可能。无论是简化日常工作、加速开发流程,还是构建复杂的自动化测试系统,它都能成为你提高效率的得力助手。通过本文介绍的知识和技巧,你可以开始构建属于自己的自动化解决方案,让技术真正服务于创意和效率。

登录后查看全文
热门项目推荐
相关项目推荐