如何讓我的 bash 提示符號在結尾該行的位置(遊標像往常一樣位於同一行的開頭)?具體來說,我想顯示一個縮寫的單字元提示,例如$
或 ,>
然後我可以鍵入命令。但我希望能夠在行尾看到當前工作目錄,它不是“在我面前”。
我不在乎輸入很長的命令時會發生什麼。它可以覆蓋當前工作目錄或我的提示符號顯示在那裡的任何其他目錄。
或者,我不介意提示是否會導致目前工作目錄顯示在螢幕的右上角或左上角,或右下角/左下角。我只是不想讓它一直出現在我的臉上,但我希望它是可見的。
答案1
我能夠將 PS1 設定為在提示行末尾列印當前路徑的內容:
PS1='\[$(for ((i=1; i < COLUMNS - ${#PWD} - 3; ++i)) ; do printf " " ; done ; printf "$PWD")\]'
但它有幾個我無法解決的問題:
- 當您按下時路徑消失Backspace
- 儘管整個表達式都包含在零寬度標記中
\[...\]
,但一旦您還列印了$
or>
,遊標就會移動到最右側。
我見過人們使用PROMPT_COMMAND=pwd
代替來顯示路徑,但它減少了終端機中包含命令的行數。
另一種選擇是配置您的終端或 screen/tmux 以在某處顯示路徑。例如,以下內容在 xterm 中有效:
PS1='\[\e[m\e]0;\W\a\]$ '
此序列\e[m\e]0;...\a
設定視窗的標題。在螢幕上,它是 "\033k\033\0134\033kTITLE\033\0134"
.