Bash

添加換行以提示是否太長

  • August 25, 2019

我在我的 bash 提示符中顯示我的完整工作目錄以及其他資訊(git 等),有時它會變得很長。

我想在提示符末尾添加一個換行符,這樣我就可以在下一行鍵入命令,但**前提是提示符很長,**例如超過 50 個字元。

| ~ $ Typing a command here is nice                                              |
| ~/foo/longDirectoryName/longsubirectory/src/package (master +*) $ Typing here s|
| ucks. I want to just start on a new line                                       |

顯然,如果我想總是在下一行輸入我的命令,我可以添加一個換行符PS1(如在這篇文章中)。但我還沒有找到有條件的方法,因為PS1它只是一個格式字元串。


PS 我實際上正在使用 ZSH 嘗試自定義 Agnoster 主題,但我想一般 bash 的任何解決方案都會有所幫助。

zsh中,這就是%<number>(l:<yes>:<no>)快速擴展的目的。當數字為負數時,如-30,如果距離螢幕右邊緣至少還有 30 個字元,則yes輸出文本,否則no,則:

PS1=$'%~%-30(l::\n)$ '

如果少於 28 個字元(30 減去"$ ")供您在行上使用,則插入換行符。

您可以通過以下方式完成50 次或更多

PS1=$'%~%50(l:\n:)$ '

但是IMO,保證最小可用空間比最大不可用空間更有用。

有關詳細資訊,請參閱手冊。您會找到其他指令來截斷長提示並替換為省略號,例如您可能會發現它們也很有用。

注意zsh提示擴展和.zsh提示擴展完全不同bash。它實際上更接近 的tcsh,因此 的 解決方案bash不太可能對 有太大用處zsh,儘管反過來它通常更正確。

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