在使用终端连接服务器的时候,看别人可以调的很迷人,那我们怎么正确的调这个颜色呢?强调下是正确两字,网上很多人也写过,但笔者看过很多网上写法都是不对的(盲人摸象),有的错误写法会让后续输入代码过长时覆盖前缀、乱码等诸多问题。
原理:这块字体内容的显示依靠系统读取文件bashrc来实现的,不同的系统可能会有差异,linux默认情况是读取用户下的~/.bashrc文件来实现,然而默认的~/.bashrc文件里面写了包含/etc/bashrc,两者存在关联性。mac os x没有~/.bashrc这个目录,mac直接读取/etc/bashrc文件来实现。下面将会分别讲解centos、ubuntu、mac os x等系统配置。
首先描述下linux登录过程中加载这块配置文件的大概顺序:
/etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc]
正确的基础语法格式(包含样式和颜色):
PS1='\[\e[F;Bm\]跟随参数'
用法举例(推荐格式这样写):
PS1='\[\e[F;Bm\]\u \[\e[F;Bm\]\$ \[\e[0m\]'
# 解释:此写法包含三段, \[\e[F;Bm\]\u 指定样式的用户名、\[\e[34;3m\]\$ 指定样式的提示符、\[\e[0m\] 意思是后续的代码为shell终端默认样式且让每段分别单独有意义,三段之间用空格分开,PS1=后面必须为单引号 PS1='代码'
\[\e[0m\]
用法讲解:\[\e[0m\] 这段代码意义重大,如果代码中存在多段属性,只有一段属性用到了“样式颜色”语法\[\e[F;Bm\],这种情况如果代码结尾没有\[\e[0m\],那么其他例如\u \w \h...之类的属性全部重置为同一种样式颜色,当有两种属性用到了样式颜色语法才得以区分开;如果代码末尾加了\[\e[0m\] ,则显示的效果为用到样式颜色语法的那段属性的内容为有效果,没有用到样式颜色语法的属性即为shell终端默认样式,所以\[\e[0m\] 相对而言是有全局性的,有的网友说是“开关”我觉得是不恰当的。大家可以进行多种写法测试下便明白了。
如果你不要任何样式和颜色,那就按如下例子最最最基础的写法就可以了:
PS1='\u@\h\w \$'
# 解释:显示用户名@主机名当前工作目录空格提示符。
用法举例:
PS1='\[\e[31;40m\]\u '
# 解释:设置当前登录的用户名为红色,后面有空格隔开,回引号前方有个空格,这样写的话,后面输入的代码会跟前面的颜色相同,后续会讲到怎么设置输入的字符颜色。
字体样式代码
可利用export命令测试代码是否正确,正确的话再拿来用。
笔者自定义的样式(推荐使用):
export PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'
#解释:用户名黄色@主机名绿色:当前路径空格$空格占位符,后续输入字符会shell终端默认样式。
如果特定的字符不想随前方代码样式,可以这样写:
PS1='\[\e[F;Bm\]特定字符'
用法举例:PS1='\[\e[31;1m\]@ '
# 解释:将“@”这个符号用红色、加粗、高亮的样式显示/p>
(1)centos系统:
使用root登录,修改/etc/bashrc ,
vim /etc/bashrc
然后将以下代码加入到最下面并保存退出:
PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'
然后重新加载下配置文件使其立刻生效,也可以客户端重连验证
source /etc/bashrc
(2)ubuntu系统:
注意:ubuntu需要修改2个文件,修改/etc/bash.bashrc文件(这个不改,新用户在系统重新启动后是无法加载到效果的),且修改登录的用户的 /home/user/ 的 ~/.bashrc 文件 。
<1> 、使用root用户登录,编辑 /etc/bash.bashrc 文件,
vim /etc/bash.bashrc
将以下这个位置的PS1注释掉,将截图下方的代码加入到这个位置并保存退出:
PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'
编辑 root 家目录下的 ~/.bashrc 文件,
vim ~/.bashrc
将以下代码加入到最下面并保存退出:
PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'
然后重新加载下配置文件使其立刻生效,也可以客户端重连验证。
source ~/.bashrc
<2> 、如果是其他用户要用这个效果,除了以上<1>中修改 /etc/bash.bashrc 之外,还要从当前~/.bashrc复制到新用户的 /home/user/.bashrc 文件中(不复制也可以,那就手动按<1>中去修改 ~/.bashrc ),ubuntu默认没有自动追加到新用户的配置中,让其他用户也生效需要以下操作 :
cp ~/.bashrc /home/user/.bashrc
然后可以切换到那个user用户下登录验证是否生效。
(3)mac os x系统:
使用root登录,修改/etc/bashrc
vim /etc/bashrc
sudo -i # 切换到root用户,需输入root密码
将以下代码加入到以下图中合适位置,原来的PS1注释掉:
PS1='\[\e[33;1m\]\u@\[\e[32;1m\]\h \[\e[36;1m\]\w\[\e[34;3m\]\$ \[\e[0m\]'
然后重新加载下配置文件使其立刻生效,也可以客户端重连验证
source /etc/bashrc
如笔者讲的不对的地方,可联系站长邮箱反馈,欢迎交流!