Bashコマンドプロンプトに更新データを入れるには?

Bashコマンドプロンプトに更新データを入れるには?

現在のバッテリー比率を示すプロンプトを作成しようとしていますが、作成された方法PS1でコードを設定すると、ターミナルエミュレータの新しいインスタンスを開くときにインタラクティブシェルを初期化するときにデータが一度だけ確認されます。データを更新するには再ロードする必要があります。私はUnixシリーズのオペレーティングシステムに初めて触れたので、マイナーなものを見逃しているかもしれません。プロンプトを更新するにはデーモンを作成する必要がありますか?.bashrc.bashrc

これはプロンプトの完全なコードではありませんが、データの変更に関連する部分です。

PS1="`upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep "percentage:" | awk '$1 == "percentage:" {print $2}'`$ "

ベストアンサー1

値を積極的に更新する良い方法はわかりませんが、シェルにアクティビティがあるたびに(Enterキーを押すなど)、次のように更新できますPROMPT_COMMAND

update_ps1() {
    PS1="$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep "percentage:" | awk '$1 == "percentage:" {print $2}')$ "
}
PROMPT_COMMAND=update_ps1

このようにして、実行時に変数をupdate_ps1更新するbashという関数を追加しました。PS1次に、PROMPT_COMMAND変数を関数名に設定しました。によるとman bash

PROMPT_COMMAND
    If set, the value is executed as a command prior to issuing each primary prompt.

これにより、 bash がプロンプトに書き込むたびに bash が書き込み前に値を更新する value を実行するため、書き込みPROMPT_COMMAND時点PS1の最新の値が得られます。

おすすめ記事