Встановіть acpi
пакет. Тепер поставте це return0whencharging.sh
і зробіть його виконуваним:
#!/bin/sh
acpi -V
if cat /proc/acpi/battery/BAT1/state | grep "charging state" | grep -vE ":[\t ]*charging$"; then
exit 1
else
exit 0
fi
Якщо ви echo -e "\a"
видаєте звук, почніть це, коли хочете переглянути стан акумулятора:
watch --beep return0whencharging.sh
Якщо він не робить ніяких звуків або ви хочете повідомлення і більш тривогу , ніж будь-який годинник можуть надати, встановити libnotify-bin
і mpv
і використовувати замість цього:
while return0whencharging.sh; do sleep 1; done; notify-send "Finished charging" && mpv -loop /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga
Пояснення :
Якщо ви подивитеся на сторінку man для grep, ви побачите, що це -v
відміняє відповідність, а отже, і код повернення / статусу. -E
означає, що це регулярний вираз. [\t ]
в регулярному виразі (регулярний вираз) означає «вкладку або простір». Наступна зірка означає, що це "вкладка або пробіл 0 або більше разів". Кінцевий "$" означає, що він повинен відповідати кінці рядка. Підсумковий grep
означає, що рядки НЕ закінчуються на ":", будь-яка кількість вкладок або пробілів, а потім "зарядка" і кінець рядка повинні зробити grep
вихід із кодом статусу 0. Це означає, що grep
поверне 1, доки комп'ютер не буде зарядка. if
Чи виконає це перший філія , коли код стану 0,grep
exit 1
коли grep виходить з 0 і exit 0
коли grep існує ненульовий.