环境:oracle linux 6.4
管理很多台服务器时,经常需要打开多个终端窗口进行操作,一不小心就可能操作失误,本来是要在别的服务器上执行的命令,结果在另一台上的执行了。
平时打开多个窗口,要养成给不同窗口分配不同背景色的习惯。
不过我们还可以做一些其它设置,来区别不同的机器。
上面就是所管理的一台服务器的提示符显示。可以很方便的知道当前窗口是哪台服务器。
只要在/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”