给Linux终端上点颜色

1.PS1
查看Linux当前PS1配置

[root@cn01~]#echo $PS1
[\u@\h \W]\$

PS1的参数可以通过『man bash』查看,详细介绍在「PROMPTING」

PROMPTING

   When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and  the  secondary
   prompt PS2 when it needs more input to complete a command.  Bash allows these prompt strings to be customized by inserting
   a number of backslash-escaped special characters that are decoded as follows:
          \a     an ASCII bell character (07)
          \d     the date in "Weekday Month Date" format (e.g., "Tue May 26")
          \D{format}
                 the format is passed to strftime(3) and the result is inserted into  the  prompt  string;  an  empty  format
                 results in a locale-specific time representation.  The braces are required
          \e     an ASCII escape character (033)
          \h     the hostname up to the first `.'
          \H     the hostname
          \j     the number of jobs currently managed by the shell
          \l     the basename of the shell's terminal device name
          \n     newline
          \r     carriage return
          \s     the name of the shell, the basename of $0 (the portion following the final slash)
          \t     the current time in 24-hour HH:MM:SS format
          \T     the current time in 12-hour HH:MM:SS format
          \@     the current time in 12-hour am/pm format
          \A     the current time in 24-hour HH:MM format
          \u     the username of the current user
          \v     the version of bash (e.g., 2.00)
          \V     the release of bash, version + patch level (e.g., 2.00.0)
          \w     the  current  working  directory,  with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM
                 variable)
          \W     the basename of the current working directory, with $HOME abbreviated with a tilde
          \!     the history number of this command
          \#     the command number of this command
          \$     if the effective UID is 0, a #, otherwise a $
          \nnn   the character corresponding to the octal number nnn
          \\     a backslash
          \[     begin a sequence of non-printing characters, which could be used to embed a terminal control  sequence  into
                 the prompt
          \]     end a sequence of non-printing characters

   The  command  number  and the history number are usually different: the history number of a command is its position in the
   history list, which may include commands restored from the history file (see HISTORY below), while the command  number  is
   the  position  in  the sequence of commands executed during the current shell session.  After the string is decoded, it is
   expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject to the  value  of
   the promptvars shell option (see the description of the shopt command under SHELL BUILTIN COMMANDS below).

可以对比输出的PS1参数结果,看到对应的含义。
使用最多的是

\d、\h、\H、\t、\T、\u、\w、\W、\$

2.颜色
在PS1中设置颜色配置的格式是:[e[F;B;Sm],「F」为字体颜色,「B」为背景色,「S」为特殊显示。
[u@h W]$ 为例,例如要修改 [ 的颜色,就写成 \[\e[F;B;Sm\]]
F B
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
S
0 关闭颜色
1 高亮显示
4 显示下划线
5 闪烁显示
7 反白显示

贴下我的配置:

[root@cn01~]#vim .bashrc
PS1='\[\e[37;40;1m\][\[\e[32;40;1m\]\u\[\e[37;40;1m\]@\h\[\e[36;40;1m\]\w\[\e[37;40;1m\]]\[\e[33;1m\]\$\[\e[;m\]'

修改完成之后

[root@cn01~]#source .bashrc

3.遇到的问题
PS1配置中,如果少写一个 ] ,也不会报错,但是在使用 上键 找历史命令记录的时候,历史命令会出现在 # 后,并且不可删除。例如:
[root@cn01~]#vim .bashrc
[root@cn01~]# 在此处按上键使用历史命令,则会导致终端变成
[root@cn01~]#vimvim .bashrc 并且第一个 vim 怎么也删除不了,同时也不影响使用,只能按 Ctrl+c键 中断命令才会显示正常。
这个问题困扰了很久才发现是少一个 ] 的原因

4.用途
改变颜色之后的用途

  • 美观
  • 安全 测试服务器和生产服务器颜色设置不一样,这样不至于在来回切换服务器的时候导致在生产服务器上输入测试服务器的危险命令