CentOS命令行改色。

用了远程工具xshell默认黑色背景白的的字,但是输出和输入都混在一起非常不好分辨,也去网上查了线命令改色。最后试出这个在xshell中觉得比较好辨认的颜色。。。。。

先上干货后说原理:

[root@geili html]# PS1='\[\e[33;40m\][\u@\h \W]\$ \[\e[0m\]'
PS1='[\u@\[\e[32;40m\]\h \[\e[31;40m\]\w\[\e[0m\]]\$'

效果如下
CentOS命令行改色。_第1张图片
在这里插入图片描述

这个目前只是当前生效,要想永久生效的话要修改配置文件。

[root@geili /]# cd  root
[root@geili ~]# ls -a
.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .elinks  .tcshrc
[root@geili ~]# vi .bashrc 
在这文件中加上上边那一行命令。
# .bashrc
PS1='\[\e[33;40m\][\u@\h \W]\$ \[\e[0m\]'

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

然后重新加载这个配置文件

[root@geili ~]# source .bashrc 
[root@geili ~]# 

下面说原理,可以根据情况改成自己看着舒服的颜色。

[root@geili ~]# echo $PS1
//这个可以查看当前状态 ,以免改错不好恢复。

PS1 常用参数

  \d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
  \H :完整的主机名称
  \h :仅取主机名中的第一个名字
  \t :显示时间为24小时格式,如:HH:MM:SS
  \T :显示时间为12小时格式
  \A :显示时间为24小时格式:HH:MM
  \u :当前用户的账号名称
  \v :BASH的版本信息
  \w :完整的工作目录名称
  \W :利用basename取得工作目录名称,只显示最后一个目录名
  \# :下达的第几个命令
  \$ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $

所以linux默认的命令行提示信息的格式
PS1=’[\u@\h \W]$ ’ 的意思就是:[当前用户的账号名称@主机名的第一个名字 工作目录的最后一层目录名]#

在PS1中设置字符颜色的格式为:

\[\e[F;Bm\]........\[\e[0m\]

其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47, [\e[0m]作为颜色设定的结束。

颜色对照表:

F B

30 40 黑色

31 41 红色

32 42 绿色

33 43 黄色

34 44 蓝色

35 45 紫红色

36 46 青蓝色

37 47 白色

只需将对应数字套入设置格式中即可。

以上的修改对root用户生效,换用户就没了。当然你也可以直接修改 /etc/.bashrc 这个文件,让改色对所有的用户都生效。

/root/.bashrc是root用户的家目录下的嘛,/etc/bashrc是对全局生效的。

脚本中的写法

如果想要将这个写到脚本中在最初配置时 就配置好的话要这样写

方法一:

#!/bin/bash
common="PS1='\[\e[33;40m\][\u@\h \W]\\$ \[\e[0m\]'"
echo "$common" >> /root/.bashrc
. /root/.bashrc

注意在$符号前边有2个\ \这个是转义,不知道为什么,就这个特殊,别的都正常。

最后.bashrc文件中的输出结果就是下边的。

PS1='\[\e[33;40m\][\u@\h \W]\$ \[\e[0m\]'

方法二:

PS1 可以直接就是变量的。注意这时正常写,不要多加\ \ 。

#!/bin/bash
PS1='\[\e[33;40m\][\u@\h \W]\$ \[\e[0m\]'
echo "PS1='$PS1'" >> /root/.bashrc
. /root/.bashrc

这个在.bashrc文件中的输出结果也是

PS1='\[\e[33;40m\][\u@\h \W]\$ \[\e[0m\]'

总结起来就是转义,如果直接将最前边写的PS1直接写到脚本中,会少个\,少个\语法就不对了。因为 \ $才表示用户身份。

你可能感兴趣的:(linux的技巧)