CLIバッテリーステータスプロンプトの更新

CLIバッテリーステータスプロンプトの更新

CLI Arch Linuxを使用していますが、実行したいと思います。シェル/バッシュスクリプトマイバッテリーステータス表示通信インターフェース文字列プロンプト(PS1)から直接。

バッテリーの状態を表示するために、次のシェルスクリプトを作成しました。

# 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

必要な操作を実行するための移植可能な方法はありませんが、シェル固有のアプローチが機能する可能性があります。

ほとんどの場合、移植可能なプロンプト変数(PS1、PS2など)の2つの具体的で区別的な評価タイプがあります。割り当て拡張は、サブコマンド拡張を可能にする他の変数割り当て拡張と同じですが、バッテリには適していません。モニタリングは、この拡張は一度だけ発生し、プロンプト拡張はコマンド拡張を許可しない可能性がありますが、プロンプトが表示されるたびに拡張されるためです。

どちらの方法も継続的なバッテリ監視の可能性を提供せず、最良のケースはプロンプトが最後に表示されたときのバッテリ状態です。

移植性のないアプローチでは、要件を満たすことができます。 Bashには、プロンプトでランダムなコマンドを実行する2つの方法があります。PROMPT_COMMANDとshopt Promptvars。 PROMPT_COMMANDは簡単です。プロンプトが表示される前に実行されるコマンドに設定するだけです。参照がより複雑なので、ショッピングプロンプト変数もより複雑です。最大の欠点は、どちらの方法も bash にのみ適用され、他のシェルでは異なることです。

関連情報