Bash

如何將更新數據放在 Bash 命令提示符中?

  • June 30, 2020

我正在嘗試提示顯示目前的電池百分比,但是如果我有我的程式碼來設置它PS1.bashrc編寫方式,那麼它只會在互動式 shell 在打開終端的新實例時初始化時檢查一次數據模擬器。.bashrc如果我想更新數據,這需要我重新載入。我對類 unix 的作業系統還是很陌生,所以我有可能甚至很可能遺漏了一些微不足道的東西。也許我應該創建一個更新提示的守護程序?

這不是我提示的全部程式碼,但它與不斷變化的數據相關。

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

我不知道主動更新值的好方法,但是您可以在 shell 有活動時(例如,當您按 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

有了這個,我添加了一個名為的 bash 函式update_ps1,當它執行時,將更新PS1變數。接下來,我將PROMPT_COMMAND變數設置為該函式的名稱。根據man bash

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

這樣,每次 bash 寫入提示時,它都會執行 的值PROMPT_COMMAND,這將在 bash 寫入之前更新該PS1值,因此它將在寫入時具有最新的值。

引用自:https://unix.stackexchange.com/questions/595762