Bash

終端底部的狀態欄代替 PS1

  • February 13, 2020

我突然想到,當我在終端中執行操作時,我的 PS1 會為每個命令重複幾次。我的 PS1 包括 CWD 和 git 分支,因此它可以變得相當長。

**有沒有辦法可以將我的 PS1 設置為僅美元符號,但將其他資訊移動到“狀態欄”或將其保留在終端底部?**很像 tmux 的狀態欄,但這些位通常構成我的提示的一部分。

理想情況下,我想要一個只涉及更改我的 .bashrc 的解決方案,但任何解決方案都可以。我做了一些Google搜尋,發現 tmux 的 git branch 東西(但沒有 CWD / 其他位)和一個非常脆弱的“狀態欄與時間”並沒有真正起作用。

問題範例: 在此處輸入圖像描述

該提案應被視為“概念證明”,不一定是交鑰匙解決方案。可能需要改進/調整。

您似乎無論如何都在使用 console_codes,PS1因此可能允許進行一些擴展使用。對於螢幕底部出現的“狀態欄”,無論之前如何調整大小,LINES都可以使用 shell 變數以及一些 shell 整數算法來縮小滾動區域,保存/恢復游標位置,並列印到螢幕底部。嘗試

CSI=$'\e'"["
PS1="\[${CSI}s${CSI}1;$((LINES-1))r${CSI}$LINES;1f\u:YourOutputGoesHere:\w${CSI}K${CSI}u\]>"

在處理 PS1 shell 變數和函式程式碼時,有一些已知的注意事項,這些注意事項在這裡不一定要考慮,但在其他執行緒中有所涉及,請在這些論壇中搜尋並在需要時合併。

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