环境:oracle linux 6.4

管理很多台服务器时,经常需要打开多个终端窗口进行操作,一不小心就可能操作失误,本来是要在别的服务器上执行的命令,结果在另一台上的执行了。
平时打开多个窗口,要养成给不同窗口分配不同背景色的习惯。
不过我们还可以做一些其它设置,来区别不同的机器。

QQ截图20151212165141

上面就是所管理的一台服务器的提示符显示。可以很方便的知道当前窗口是哪台服务器。

只要在/etc/bashrc中添加以下语句即可实现:

IP=$(/sbin/ifconfig eth0|awk ‘/inet addr:/ {print $2}’|cut -c6-)
export PS1=”[\u@\h(\[\e[31m\]$IP\[\e[m\]) \W]\\$”

解释说明:
PS1是linux里头的一个默认的环境变量,用来设置命令提示符的环境变量。
PS1能配置并显示在提示符中的:

\d :代表日期,格式为weekday month date,例如:”Mon Aug 1″
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

自己可根据需要进行组合。
只要写入PS1中,把上面的代表符一个接一个的写进去就行了。
export PS1=”[\u@\h \W]\\$” 对应的就是 [用户名@主机名 路径]根据用户显示的符号(root用户显示#,普通用户显示$)

自己还可以写一些语句获取一些值,插入到这个提示符中。
比如就上面那个显示IP,让提示符中显示主机IP

IP=$(/sbin/ifconfig eth0|awk ‘/inet addr:/ {print $2}’|cut -c6-)
export PS1=”[\u@\h($IP) \W]\\$”
这样就会显示出来:[root@localhost(172.31.1.132) ~]#

根据需要选择让哪个用户实现这种效果,可以放到那个用户的.bash_profile中。
如果想让全部用户都用这种效果,就写入/etc/bashrc中。

现在再来讲颜色效果:

在PS1中设置字符序列颜色的格式为:
\[\e[F;Bm\] 其中“F”为字体颜色,编号30~37;“B”为背景色,编号40~47。
最后要加上\[\e[m\] 结束颜色设置。
颜色表

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

除了颜色,还有其它的显示格式:

代码 意义
0     OFF
1      高亮显示
4     underline
7    反白显示
8    不可见

现在可以把颜色设置和PS1结合起来:
[\e[31m\] 就代表红色
[\e[31;47m\] 代表白底红字

[\e[1m\]  高亮显示

export PS1=”[\u@\h(\[\e[31m\]$IP\[\e[m\]) \W]\\$” 让IP显示红色
[root@localhost(172.31.1.132) ~]#

export PS1=”[\u@\h(\[\e[4m\]$IP\[\e[m\]) \W]\\$” 让IP显示下划线

[root@localhost(172.31.1.132) ~]#

再扩展一下:
export PS1=”]\#[\u@\h(\[\e[31m\]$IP\[\e[m\]) \W]\\$”
\#显示现在运行的是第几条命令
3[root@localhost(172.31.1.132) ~]#

附:颜色这个还可以放到脚本中用echo显示
#! /bin/bash

echo -e “\e[31;47m”
echo “白底黑字”
echo -e “\e[0m”

E91E8B76-FF62-4115-BD62-190A287F6642



发表评论