Bash
如何將更新數據放在 Bash 命令提示符中?
我正在嘗試提示顯示目前的電池百分比,但是如果我有我的程式碼來設置它
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
值,因此它將在寫入時具有最新的值。