如何在bash中更改主机名的颜色?

时间:2016-06-17 13:40:32

标签: bash shell

我想修改提示的某些部分的颜色,我希望它显示我的用户名在Cyan中的颜色,我搜索它与\ u匹配然后我想显示我的主机名的颜色在紫色中与\ h匹配,以便在我键入时实现此目的:

echo $PS1

我明白了:

[\u@\h \W]\$
然后我尝试了:

export PS1="\e[0;36m\e[0;35m[\u@\h \W]\$ \e[m "

但我失败了,因为它只是为紫色的一切颜色, 我想知道如何实现为什么不着色主机名,颜色的列表如下:

Color   Code
Black   0;30
Blue    0;34
Green   0;32
Cyan    0;36
Red     0;31
Purple  0;35
Brown   0;33
Blue    0;34
Green   0;32
Cyan    0;36
Red     0;31
Purple  0;35
Brown   0;33

3 个答案:

答案 0 :(得分:1)

尝试:

export PS1="[\e[0;36m\u@\e[0;35m\h \e[0;30m\W]\$"

这应该是青色的用户名和紫色的主机名和黑色之后。

答案 1 :(得分:1)

逃离必须在$ PS1内的\[\]之间。否则他们将逐字打印。

export PS1='\[\e[0;36m\e[0;35m[\]\u@\h \W]\$ \[\e[0m\] '

结尾处的\[\e[0m\]表示"重置为默认颜色。"

另外,您可能需要考虑单引号字符串,因为在其中\始终表示\;这样可以更轻松地查看您正在做的事情。

答案 2 :(得分:1)

通过\e[0m重置每个颜色变化。

在提示的不可见部分周围使用\[...\],否则历史导航会对行长度感到困惑:

PS1="[\[\e[0;35m\]\u\[\e[0m\]@\[\e[0;36m\]\h\[\e[0m\] \W]\$ "