centos6.5 修改命令提示符样式

来源:互联网 发布:mac文明6补丁包 编辑:程序博客网 时间:2024/06/15 17:25

学习linux时,当命令有很长的输出信息时,总感觉输入的命令和命令的返回结果难以分辨。就像下面这样

这里写图片描述

命令有一大堆的输出信息,而命令本身夹杂其中,怎么找到输出信息的第一行?可以将修改命令提示符的样式,以不同的颜色显示出来,那么就能很清楚的分辨了。

了解PS1

linux的文本模式下,总有这么一行

[root@localhost ~]# 

这个其实是在变量里设置。输入set,可以看到返回的变量列表中有一个PS1
这里写图片描述

这个 PS1 ,就是我们的『命令提示字符』! 当我们每次按下[Enter] 键去执行某个指令后,最后要再次出现提示字符时, 就会主动去读去这个变量值了。
上头 PS1 内显示的是一些特殊符号,这些特殊符号可以显示不同的信息, 每个 distributions 的bash 默认的 PS1 变量内容可能有些差异,不要紧,『习惯你自己的习惯』就好了。 你可以用 man bash (注 3)去查询一下 PS1 的相关说明,以理解底下的一些符号

 \d :可显示出『星期 月 日』的日期格式,如:"Mon Feb 2" \H :完整的主机名。 \h :仅取主机名在第一个小数点之前的名字 \t :显示时间,为 24 小时格式的『HH:MM:SS』 \T :显示时间,为 12 小时格式的『HH:MM:SS』 \A :显示时间,为 24 小时格式的『HH:MM』 \@ :显示时间,为 12 小时格式的『am/pm』样式 \u :目前使用者的账号名称,如『root』; \v :BASH 的主版本信息 \w :完整的工作目录名称,由根目录写起的目录名称。但家目录会以 ~ 取代; \W :利用 basename 函数取得工作目录名称,所以仅会列出最后一个目录名。 \# :下达的第几个指令。 \$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $ 

默认的命令行提示信息的格式PS1=’[\u@\h \W]$ ’ 的意思就是:

[当前用户的账号名称@主机名的第一个名字 工作目录的最后一层目录名]#

如何设置显示的颜色呢?

颜色设置格式

在PS1中设置字符颜色的格式为:[\e[F;Bm],其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47。

  颜色对照表:

        F   B    30  40 黑色    31  41 红色    32  42 绿色    33  43 黄色    34  44 蓝色    35  45 紫红色    36  46 青蓝色    37  47 白色

   只需将对应数字套入设置格式中即可。
   比如要设置命令行的格式为绿字黑底([\e[32;40m]),显示当前用户的账号名称(\u)、主机的第一个名字(\h)、完整的当前工作目录名称(\w)、24小时格式时间(\t),可以直接在命令行键入如下命令:

PS1='[\[\e[32;40m\]\u@\h \w \t]$ '

经过反复测试,我定义的PS1

PS1='\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\W\[\e[37;40m\]]\$ '

效果如图:
这里写图片描述

但这个是临时性的,切换用户或者重启之后就没了。

修改.bashrc文件,永久保存命令行样式.

进入用户家目录,打开.bashrc文件,将刚才

PS1='\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\W\[\e[37;40m\]]\$ '

添加进去
这里写图片描述

保存!大功告成!

注意这个方法只有对当前用户有效,如果你换了一个用户登陆,就要重新设置一遍。当然每个用户设置一遍就ok了。如何对所有用户有效,还有待摸索!