当前位置: 首页 > news >正文

macOS 命令行蓝牙控制终极速查:5分钟上手 blueutil

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 设备名连错设备也能一键断开
输出 JSONblueutil --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),仅供参考

http://www.jsqmd.com/news/1399596/

相关文章:

  • Painterro插件扩展开发:如何添加自定义滤镜和工具
  • 从拿到一个陌生二进制开始:Ghidra 软件逆向工程框架使用指南
  • Welcome UI组件开发工作流:从编码到测试的最佳实践
  • HoVer-Net实战教程:3步完成组织学图像细胞核实例分割
  • 2026美团美点卡回收指南:渠道对比、风险规避与实操要点 - 京回收公众号
  • 市南区专业阳台防水补漏 免费上门勘察 售后质保 - 青岛防水品牌推荐
  • 自学效率低又记不住?5 分钟本地部署 DeepTutor 开源 AI 学习助手,完整上手攻略
  • 数据采集卡从入门到精通(3):采样定理详解——奈奎斯特、混叠与5倍法则
  • PS4模拟器shadPS4完整指南:跨平台安装、版本抉择与提速避坑一次讲清
  • PS4模拟器入坑指南:shadPS4三个分支怎么选,一篇讲透
  • 每天 3 小时去哪了?免费开源 Windows 时间管理工具 Tai 完整使用指南
  • 一张RAW废片引发的思考:RapidRAW开源编辑器如何把枯燥调色变成我的日常快事
  • 如何快速掌握atc-react框架?从Response Actions到Playbooks的完整指南
  • 人形机器人爆发式增长新趋势
  • BanditPAM快速入门:3分钟掌握Python安装与高斯混合模型聚类实战
  • 深入理解OperatorsKit的SPN模块:靶向Kerberoasting攻击全流程
  • 广州本地留学机构推荐|拒绝无效探店!按照申请目标精准匹配
  • QAGNN高级技巧:如何利用ConceptNet知识图谱优化问答推理
  • Witch Hat Atelier Spell Simulator魔法动画原理:从GlyphAST到视觉效果的实现
  • 从Paddle到PyTorch:PP-LCNet_x1_0_doc_ori模型转换全流程解析
  • PDF补丁丁免费PDF工具箱实战指南:五个高频文档难题一次讲透
  • GitHub Desktop汉化三步走:3分钟换全中文界面,翻车还能一键还原
  • RegRipper3.0 vs 其他注册表工具:为什么它是 forensic 分析师的首选?
  • 解决Dart测试痛点:Mockito常见问题与最佳实践
  • 从零搭建一台3D打印六足机器人:这份开源图纸帮你少走三个月弯路
  • Path of Building离线Build规划实操手册:四步把灵感变成成型BD
  • ElasticReconstruction与Eigen库集成:高性能矩阵运算加速3D重建
  • DPJ-72基于STM32单片机温湿度检测小车 智能避障小车设计
  • 停车王车牌键盘输入组件样式对比:混合紧排VS分隔块状哪个更适合你?
  • 2026成都黄金回收,从进门到拿钱一共几步?无损检测、当面称重、当场转账流程详解 - 日常前沿快讯