我想改变我的bash提示符(就像任何书呆子一样),并为它保留一个自定义名称。
我已经提出了有效的代码,但它有一些问题。代码是
if [ "`id -u`" -eq 0 ]; then
PS1="[ \[\e[1;33m\]| Dragon Master | \[\e[1;36m\]\[\e[49m\] \W \[\e[0m\]]\e[0;37m ";
else
PS1="\[\e[1;36m\][ \[\e[1;33m\]| Dragon Master | \W $\[\e[1;36m\]]\e[0;37m ";
fi
它工作正常(不完全),
但是这有一个问题,当命令变大然后一行时,它不会转到下一行,但它会在同一行开始覆盖。像这样,
作为参考,上图中的命令是
x86_64-softmmu/qemu-system-x86_64 -m 1024 -enable-kvm -drive if=virtio,file=test.qcow2,cache=none -cdrom Fedora-Live-Desktop-x86_64-20-1.iso
现在,这种奇怪的换行不会以任何方式影响命令。它运作得很好。
建议伙伴?
答案 0 :(得分:1)
在评论中发布的链接中找到答案。
在PS1
引号中,每个颜色集必须在其前面有\\[
。
所以,我的代码变成了,
if [ "`id -u`" -eq 0 ]; then
PS1="[ \\[\e[1;33m\]| Dragon Master | \\[\e[1;36m\]\\[\e[49m\] \W \\[\e[0m\]]\\[\e[0;37m\] ";
else
PS1="\\[\e[1;36m\][ \\[\e[1;33m\]| Dragon Master | \W $\\[\e[1;36m\]]\\[\e[0;37m\] ";
fi
取自this回答。