我正在使用 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 会有所不同。