CLI 电池状态提示更新

CLI 电池状态提示更新

我正在使用 CLI Arch Linux,并且我想运行Shell/Bash 脚本显示我的电池状态交流接口直接在字符串提示(PS1)上。

我创建以下 Shell 脚本来显示电池状态:

# Permition Acess: chmod +x loop.sh
# run .sh: ./loop.sh

i=true
#COLOR:
ORANGE='\e[33m'
STOP='\e[0m'

while ($i = true)
do
 printf ${ORANGE}
 echo $(clear)
 echo $(acpi -b)
 sleep 1
printf ${STOP}
done

我的想法是连接 PS1 上的脚本以不断显示电池状态始终更新!

我当前的 PS1 是:

PS1='[${OR}USER: \u ${B}TIME: \t ${C}DIR: \W ${RED}$(__git_ps1 " (%s)")]\n[${LG}$(acpi -b)${R}]\n\$

我正在打电话acpi,但他只在我使用某些命令时更新

答案1

没有可移植的方法来执行您想要的操作,但 shell 特定的方法可能会起作用。

提示变量(PS1、PS2 等)有两种特定且不同的评估类型,大多数情况下是可移植的: 赋值扩展,与任何其他允许子命令扩展的变量赋值扩展完全相同,但不适合电池监控,因为此扩展仅发生一次,并且提示扩展可能不允许命令扩展,但会在每次提示显示时扩展。

请注意,这两种方法都无法提供连续电池监控的可能性,最好的情况是上次显示提示时的电池状态。

现在对于非便携式方法,它可能会满足您的要求。 Bash 有两种在提示时执行任意命令的方法:PROMPT_COMMAND 和 shopt Promptvars。 PROMPT_COMMAND 简单明了,只需将其设置为在显示提示之前运行的命令即可。由于引用更复杂,shopt提示变量也更复杂。主要缺点是这两种方法都是 bash 特定的,其他 shell 会有所不同。

相关内容