我将 bash 提示更改为:
PS1="\[\033[1;31m[\[\033[1;33m\$(date +%H:%M)\[\033[1;31m] \u:\[\033[1;32m\W\[\033[1;37m\$\[\033[0m\] "
抱歉排了很长的队,这主要是由于颜色的原因。基本上,当我点击向上箭头返回 Bash 历史记录时,提示就会消失,一切都搞砸了。它类似于这个问题但我不知道 a 是否\[
缺失以及在哪里。
答案1
让我们稍微清理一下它并使其更加便携。一般来说,最好使用tput
生成控制序列而不是对其进行硬编码,如中所述Bash 常见问题解答 53。这样就更容易找到你失踪的人\]
。
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
white=$(tput setaf 7)
reset=$(tput sgr0)
PS1="\[$red\][\[$yellow\]\A\[$red\]] \u:\[$green\]\W\[$white\]\$\[$reset\] "
请注意,我用显示相同内容(24 小时格式)的date
内置提示转义替换了您的调用。 \A
HH:MM
这种方法有一个警告,如链接的 Bash FAQ 中所述,如果任何控制tput
序列输出恰好包含提示转义的内容,则输出将出现乱码。我从来没有遇到过这个问题,所以我通常会忽略它。
答案2
\[
你的和不平衡\]
。控制序列需要包含在其中,以便 bash 知道它们实际上并不占用终端中的任何空间。
尝试这个:
PS1="\[\033[1;31m\][\[\033[1;33m\]\$(date +%H:%M)\[\033[1;31m\]] \u:\[\033[1;32m\]\W\[\033[1;37m\]\$\[\033[0m\] "
@jw013的解决方案但更好,因为它更干净。
答案3
这ASCII 表有颜色、粗体、斜体等参考。