Je sais comment y accéder via la barre de menus, mais comment puis-je y accéder via la ligne de commande?
Réponses
Trop de publicités?Se basant sur la réponse utile de bmike [30 juil. '17] ... avec un moyen de réduire davantage les répétitions des noms d'appareils : ajouter un symbole carat (^) pour signifier le début de la ligne, et (b) une barre verticale échappée précédée et suivie par un nombre spécifique d'espaces :
ioreg -r -l -n AppleHSBluetoothDevice | egrep '"BatteryPercent" = |^ \| "Bluetooth Product Name" = '
Ces filtres ont donné ce résultat :
| "Bluetooth Product Name" = "Magic Keyboard with Numeric Keypad"
| | "BatteryPercent" = 59
| "Bluetooth Product Name" = "Magic Mouse 2"
| | "BatteryPercent" = 98
Un filtrage supplémentaire avec sed et l'écho de la variable a donné le résultat que je recherchais
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
Le résultat dans la console:
| Mouse: 96 | Keyboard: 71
Mais, lorsque j'ai voulu mettre tout cela dans un fichier de script bash, j'ai découvert que bien que BATTLVL contienne effectivement uniquement les mots et les phrases désirés à signaler, il contient également des caractères de nouvelle ligne - mais, ils n'apparaissent pas lorsque la commande ECHO est ajoutée à la commande précédente avec un point-virgule.
Donc, pour pouvoir utiliser davantage les résultats du rapport, nous supprimons les nouvelles lignes en utilisant des techniques suggérées dans ce post:
BATTRPT=${BATTLVL//[$'\t\r\n']}; # Supprime toutes les occurrences de tabulation, de saut de ligne et de retour.
Enfin, pour ajouter une notification OS X du niveau de batterie de la souris et du clavier à partir du script bash, il a été nécessaire de d'abord construire le script sous forme de chaîne dans une variable, puis le rediriger vers osascript pour que les guillemets doubles soient inclus dans la chaîne.
theScript=$"display notification \"$BATTRPT\" "
echo $theScript | osascript
À partir de 2024 (certaines réponses plus anciennes semblent ne plus être à jour), cette commande en une ligne vous permettra de connaître le niveau de la batterie de tous vos accessoires Bluetooth:
ioreg -c "AppleDeviceManagementHIDEventService" | egrep -i '"Product"|BatteryPercent' | python -c 'import re, sys; print(re.sub(r".*Product.....(.*).\n.* (\d*)", r"\2%\t\1", sys.stdin.read()).strip())'
Exemple:
└─$ ioreg -c "AppleDeviceManagementHIDEventService" | egrep -i '"Product"|BatteryPercent' | python -c 'import re, sys; print(re.sub(r".*Product.....(.*).\n.* (\d*)", r"\2%\t\1", sys.stdin.read()).strip())'
100% Magic Keyboard with Touch ID and Numeric Keypad
61% Magic Mouse