macOS 命令行蓝牙控制终极速查:5分钟上手 blueutil
【免费下载链接】blueutilCLI for bluetooth on OSX: power, discoverable state, list, inquire devices, connect, info, …项目地址: https://gitcode.com/gh_mirrors/bl/blueutil
每天开会前,你是不是也要经历这一套:点菜单栏蓝牙图标 → 等列表刷新 → 再点一下耳机名字?如果一天来几次,光是点菜单就够烦的。今天要介绍的 blueutil,就是一款开源的 macOS 命令行蓝牙控制工具,把蓝牙的开关、连接、查询全部压缩成一行命令,从此告别层层点选。
被系统设置绑架的每一天,该结束了
说实话,蓝牙本身不是问题,问题出在操作方式上。系统偏好设置里的蓝牙面板,适合偶尔看一眼,不适合高频使用。想想这些场景:开会前连耳机、午休时断开会话、笔记本快没电时想赶紧关掉蓝牙省电——每一样都要先打开设置、找到面板、等列表刷新,一套下来十几秒没了。
要是这些动作能写进脚本、绑上快捷键,甚至让电脑自己判断该连还是该断,那该多好?这正是 blueutil 存在的意义:它让"蓝牙控制"从图形界面里解放出来,变成一个可以在终端里随意组合的指令集。
blueutil 是什么?一句话说清楚
blueutil 是一个用 C 语言写的 macOS 蓝牙命令行工具,核心能力包括:查询/设置蓝牙电源与可发现状态、列出已配对和已连接设备、按名称或地址连接/断开设备、以及导出 JSON 格式的设备信息。简单说,凡是你在系统设置里能对蓝牙做的事,它都能用一行命令完成,还更利于脚本化。
30秒完成安装:Homebrew 一行命令搞定
如果你已经装了 Homebrew(macOS 用户最常见的包管理器),安装 blueutil 只需一条命令:
brew install blueutil装完先验证一下:
blueutil --power如果输出1,说明蓝牙开着;输出0则是关闭状态。就这么简单,你已经可以用起来了。
其他安装方式:MacPorts 用户执行
sudo port install blueutil;想从源码编译,可以执行git clone https://gitcode.com/gh_mirrors/bl/blueutil后进入目录运行make && sudo make install。日常使用推荐 Homebrew,升级也方便(brew upgrade blueutil)。
核心命令速查表:开关、连接、查询一次搞定
下面这张表覆盖了 90% 的日常操作,建议收藏:
| 想做什么 | 命令 | 补充说明 |
|---|---|---|
| 查询蓝牙开关状态 | blueutil --power | 输出 1(开)或 0(关) |
| 开启 / 关闭 / 切换 | blueutil --power on/off/toggle | 也支持 1 / 0 |
| 查询可发现状态 | blueutil --discoverable | 同样支持 on / off / toggle |
| 列出已配对设备 | blueutil --paired | 按地址和设备名输出 |
| 列出已连接设备 | blueutil --connected | 只显示当前连上的 |
| 扫描附近设备 | blueutil --inquiry | 默认扫描 10 秒 |
| 查看设备详情 | blueutil --info 设备名或地址 | 地址形如 xx-xx-xx-xx-xx-xx |
| 连接设备 | blueutil --connect 设备名 | 按名称即可,不必背地址 |
| 断开设备 | blueutil --disconnect 设备名 | 连错设备也能一键断开 |
| 输出 JSON | blueutil --paired --format json | 适合脚本处理 |
设备名里通常带空格,所以连接、断开时记得加引号:
blueutil --connect "我的蓝牙耳机" blueutil --disconnect "蓝牙音箱"想看某台设备的完整信息,用--info:
blueutil --info "我的蓝牙耳机"三个贴近生活的实战脚本
光看命令不过瘾,我们直接上能用的脚本。
场景一:开机自动连上蓝牙耳机
把下面内容存成connect_earbuds.sh,再放到「登录项」里开机自启,以后坐下开机,耳机自动连好:
#!/bin/bash if [ $(blueutil --power) -eq 0 ]; then blueutil --power 1 sleep 2 fi blueutil --connect "我的蓝牙耳机"思路很简单:先看蓝牙有没有开,没开就打开并等两秒,然后直接连耳机。整个过程全自动,不用你再碰菜单栏。
场景二:笔记本快没电时自动断开音箱
蓝牙外设是续航杀手,电量告急时果断断掉非必要设备:
#!/bin/bash battery=$(pmset -g batt | grep -oE '[0-9]+%' | cut -d% -f1) if [ $battery -lt 20 ]; then blueutil --disconnect "蓝牙音箱" osascript -e 'display notification "已断开蓝牙音箱以省电" with title "低电量提醒"' fi把它交给launchd或循环定时任务执行,电量低于 20% 时系统就会自动断开音箱并弹个通知,帮你多撑几分钟。
场景三:把设备列表变成 JSON 交给脚本
blueutil 支持 JSON 输出,配合jq可以轻松做二次加工。比如把当前已连接设备的名称全部列出来:
blueutil --connected --format json | jq -r '.[].name'想批量断开所有已连接设备?先取地址再逐个断开:
blueutil --connected --format json | jq -r '.[].address' | while read addr; do blueutil --disconnect "$addr" done命令行蓝牙控制的好处就在这里:设备信息一旦变成结构化数据,想怎么处理都行。
老用户的进阶玩法与避坑指南
进阶技巧
多连接设备状态不准?试试 system_profiler 方案:部分支持多点连接的蓝牙设备,用 IOBluetooth 接口查询时连接状态可能显示错误。给命令加上环境变量即可切换查询方式:
BLUEUTIL_USE_SYSTEM_PROFILER=1 blueutil --connected注意这是实验性功能,个别命令可能不兼容,但日常查询没问题。想长期生效,可以
export BLUEUTIL_USE_SYSTEM_PROFILER=1写进 shell 配置。等待类命令:
--wait-connect、--wait-disconnect和--wait-rssi可以在脚本里"等设备连上/断开",适合做自动化流程的同步点。比如blueutil --wait-connect "耳机" 15会最多等 15 秒,直到设备连上才继续执行后续步骤。配对与解绑:
--pair和--unpair支持在命令行完成配对(可指定 PIN),从此给新设备配对也不用开设置面板了。
常见问题排查
- 提示拒绝以 root 运行:这是设计使然,防止权限问题导致可发现状态卡死。确认没问题可加环境变量覆盖:
sudo BLUEUTIL_ALLOW_ROOT=1 blueutil ...。 - 收藏/最近设备列表是空的:macOS 12(Monterey)及以上系统不再保存收藏设备与最近使用记录,相关命令返回空列表属正常现象,不影响其他功能。
- 命令执行后报错,退出码代表什么?:0 成功、64 参数错误、69 蓝牙不可用、134 表示可能没有蓝牙 API 访问权限。查权限先从「系统设置 → 隐私与安全性」确认终端被允许使用蓝牙。
- 打开蓝牙偏好设置后可发现状态变了?:打开蓝牙面板会自动打开可发现状态,且 blueutil 查询不到这个变化。如果发现状态不对,重新执行一次
blueutil --discoverable off即可。
最后:几个高频疑问
Q:blueutil 需要管理员权限吗?日常使用不需要,普通用户直接跑就行。
Q:它会不会搞坏我的蓝牙?不会。blueutil 只是调用系统蓝牙框架的接口,和你手动点设置的效果一样,随时可以关掉或卸载(brew remove blueutil)。
Q:只能在 macOS 上用吗?是的,它专门针对 macOS 开发,Linux/Windows 用户请绕道。
如果今天的内容能帮你省下每天那十几下点击,那这篇文章就值了。装好 blueutil,从blueutil --help看一遍完整参数,剩下的就交给你的想象力——把蓝牙控制写进自己的工作流吧。
【免费下载链接】blueutilCLI for bluetooth on OSX: power, discoverable state, list, inquire devices, connect, info, …项目地址: https://gitcode.com/gh_mirrors/bl/blueutil
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考