帮助处理 bash 颜色和长线

帮助处理 bash 颜色和长线

当我编写一个长命令并且文本行到达终端末尾时,它会在同一行的开头继续(就像“覆盖它”一样),并且如果我点击home它并不会真正到达该行的开头。

我找到了这个问题,这个其他等等,我现在它与颜色和我希望它显示的内容有关...我很抱歉打开另一篇文章,但我尝试自己编辑该行,但我真的无法理解。你们能给我一些帮助吗?

这是我的摘录.bashrc

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\][\u@debian]\[\033[01;34m\][\033[01;34m\]\w\]]\033[01;34m\]\$\033[00m\] '

为了澄清这一点,我希望提示是:

[username@debian][~]$

  • 含义是,括号内的 username@debian [\u@debian],绿色

*是的,我希望它显示“debian”,而不是通常的\h

  • 工作目录也在其括号之间[\w],呈蓝色
  • $普通用户的
  • 我输入的文本以白色显示。
  • 我不关心 root 用户的提示。

感谢您的帮助,再次抱歉为此打开另一篇文章......


编辑:我慢慢阅读后尝试重写它这个完整的教程。但无法使其发挥作用。现在它不会“覆盖”第一行,但在第二行上,在几个字符之后,仅覆盖第二行几个字符,然后继续正常。但对于这款新的 PS1,如果我UP按键盘上的箭头转到之前的命令,它就会变得非常时髦。

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[[\]\u\[@debian]\]\[\033[01;34m\]\[[\]\w\[]\]\[\033[01;34m\]\$\[\033[00m\] '

如果教程没记错的话,应该是:

  • \[开始一系列非打印字符。
  • \]结束非打印字符序列。
  • \033[XXm颜色,需要位于非打印字符的开头和结尾之间,因此,例如,对于蓝色 (34),它应该是:\[\033[34m\]

所以,在我看来,它现在应该有效,但事实并非如此。显然我没看对-.-

答案1

这里看起来像是一个错字:

\[\033[01;34m\][\033[01;34m\]
               ^

[应该是这样\[

\[...标记\]告诉 Bash 字符串的这些部分不会影响列计数。

相关内容