我将 bash 提示符更改为:
PS1="\[\033[1;31m[\[\033[1;33m\$(date +%H:%M)\[\033[1;31m] \u:\[\033[1;32m\W\[\033[1;37m\$\[\033[0m\] "
Run Code Online (Sandbox Code Playgroud)
很抱歉排长队,这主要是由于颜色。基本上,当我点击向上箭头返回 Bash 历史记录时,提示消失并且一切都搞砸了。它类似于这个问题,但我不知道 a\[
是否丢失以及在哪里。
让我们把它清理一下,让它更便携。一般来说,最好使用tput
生成控制序列而不是硬编码它们,如Bash FAQ 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\] "
Run Code Online (Sandbox Code Playgroud)
请注意,我用显示相同内容date
的内置提示转义替换了您的调用\A
(HH:MM
格式为24 小时时间)。
这种方法有一个警告,如链接的 Bash 常见问题解答中所述,如果任何tput
控制序列输出碰巧包含提示转义的内容,则输出将是乱码。我从来没有遇到过这个问题,所以我通常会忽略它。