Я пытаюсь сделать подсказку, которая показывала бы текущий процент заряда батареи, однако, если у меня есть код для установки PS1
в .bashrc
так, как он написан, тогда он только проверяет данные один раз, когда интерактивная оболочка инициализируется при открытии нового экземпляра эмулятора терминала. Это требует, чтобы я перезагрузил .bashrc
, если я хочу, чтобы данные обновились. Я все еще довольно новичок в unix-подобных операционных системах, поэтому возможно и даже вероятно, что я упускаю что-то тривиальное. Возможно, мне следует создать демона, который обновляет подсказку?
Это не весь код приглашения, а соответствующий бит с изменяющимися данными.
PS1="`upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep "percentage:" | awk '$1 == "percentage:" {print $2}'`$ "
Вам не нужно upower
. И все оболочки поддерживают зацикливание, поэтому вы можете сделать что-то вроде этого:
#!/bin/sh
# Loop trough all batteries
for battery in /sys/class/power_supply/BAT?
do
# Get capacity of battery
capacity=$(cat "$battery"/capacity) || exit
# Get status of battery
status=$(cat "$battery"/status)
# Print capacity and status
echo "$capacity" \| "$status"
done
Объяснение :Информация о ваших батареях хранится в /sys/class/power_supply/
отдельные батареи имеют имена BAT
и некоторые номера, т.е. BAT0, BAT1,...
. Поскольку все в Linux является файлом, вы можете просто вывести содержимое BAT0/status
и BAT0/capacity
, чтобы получить нужную информацию, а затем распечатать ее с помощью echo
. Если у вас есть еще вопросы, пожалуйста, спрашивайте!