如何从命令行确定魔术鼠标的电池电量?


Answers:



1

在bmike [17年7月30日]的有用答案的基础上...通过进一步减少设备名称重复的方式:添加(a)符号克拉(^)表示行的开始,而(b)转义竖线之前和之后是特定数量的空格:

 ioreg -r -l -n AppleHSBluetoothDevice | egrep '"BatteryPercent" = |^  \|   "Bluetooth Product Name" = '

这些过滤器产生了以下结果:

     |   "Bluetooth Product Name" = "Magic Keyboard with Numeric Keypad"
     |   |       "BatteryPercent" = 59
     |   "Bluetooth Product Name" = "Magic Mouse 2"
     |   |       "BatteryPercent" = 98

使用sed进行更多过滤并回显该变量,得到了我一直在寻找的结果

    BATTLVL=$(ioreg -r -l -n AppleHSBluetoothDevice | egrep '"BatteryPercent" = |^  \|   "Bluetooth Product Name" = '| sed 's/  |   "Bluetooth Product Name" = "Magic Mouse 2"/  \|  Mouse:/' | sed 's/  |   "Bluetooth Product Name" = "Magic Keyboard with Numeric Keypad"/  \|  Keyboard:/'| sed 's/  |   |       "BatteryPercent" = / /'); echo $BATTLVL 

控制台中的结果:

     | Mouse: 96 | Keyboard: 71

但是,当我将其全部放入bash脚本文件中时,我发现虽然BATTLVL确实仅包含要报告的所需单词和短语,但它还包含换行符-但是,当ECHO命令被执行时它们不会出现。用分号附加到前面的命令中。

因此,为了进一步利用该报告的结果,我们会删除使用此建议的方法换行符

    BATTRPT=${BATTLVL//[$'\t\r\n']};  # Strips all instances of tab, newline, return.

最后,要从bash脚本添加OS X关于鼠标和键盘电池电量的通知,发现有必要先将脚本字符串构建为变量,然后将其通过管道传递给osascript,以便在字符串中包含双引号。

    theScript=$"display notification \"$BATTRPT\" "
    echo $theScript | osascript 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.