Sé cómo conseguirlo a través de la barra de menús, pero ¿cómo puedo conseguirlo a través de la línea de comandos?
Respuestas
¿Demasiados anuncios?Aprovechando la útil respuesta de bmike [Jul 30 '17] ... con una forma de reducir aún más las repeticiones de los nombres de los dispositivos: añadir (a) el símbolo del quilate (^) para significar el inicio de la línea, y (b) la barra vertical escapada precedida y seguida por un número específico de espacios:
ioreg -r -l -n AppleHSBluetoothDevice | egrep '"BatteryPercent" = |^ \| "Bluetooth Product Name" = '
Esos filtros dieron este resultado:
| "Bluetooth Product Name" = "Magic Keyboard with Numeric Keypad"
| | "BatteryPercent" = 59
| "Bluetooth Product Name" = "Magic Mouse 2"
| | "BatteryPercent" = 98
Al filtrar más con sed y hacer eco de la variable me dio el resultado que buscaba
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
El resultado en consola:
| Mouse: 96 | Keyboard: 71
Pero, cuando fui a poner todo en un archivo bash script, me encontré con que mientras BATTLVL efectivamente contiene sólo las palabras y frases deseadas para ser reportadas, también contiene caracteres de nueva línea - pero, no aparecen cuando el comando ECHO se anexa al comando anterior con un punto y coma.
Así pues, para poder seguir utilizando los resultados del informe, eliminamos las nuevas líneas utilizando las técnicas sugeridas en este Correo electrónico: :
BATTRPT=${BATTLVL//[$'\t\r\n']}; # Strips all instances of tab, newline, return.
Finalmente, para añadir una notificación en OS X del nivel de batería del ratón y del teclado desde el bash script, encontré necesario construir primero la cadena script en una variable, y luego canalizarla a osascript para que las comillas dobles fueran incluidas en la cadena.
theScript=$"display notification \"$BATTRPT\" "
echo $theScript | osascript