Chinaunix首页 | 论坛 | 博客
  • 博客访问: 558073
  • 博文数量: 116
  • 博客积分: 2063
  • 博客等级: 大尉
  • 技术积分: 1174
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-26 16:44
个人简介

none

文章分类

全部博文(116)

文章存档

2023年(2)

2020年(3)

2019年(4)

2018年(7)

2017年(6)

2016年(17)

2015年(13)

2014年(19)

2013年(6)

2012年(13)

2011年(5)

2010年(11)

2008年(10)

分类: LINUX

2010-03-27 09:02:59

    对于兼容ANSI的终端,如xterm、rxvt、konsole等,可以彩色显示终端文本中的底色或前景颜色,本文将详细讨论如何实现随意修改和定制这些终端的颜色。
 
转义序列符
 
  为了添加个人风格的彩色提示符,我们需要使用转义序列符。一个转义序列符是一个控制命令,它控制Shell执行某个特定的动作。一个转义序列符通常以 ESC开始,在Shell中被记录为"^[",有时候也被常常记录为3(因为ESC在ASCII编码中是27,八进制就被记录为033)。为了直接在 Shell中输入一个转义序列符,一般会以¡°Ctrl+V¡±作为前导,也就是¡°Ctrl-v ESC¡±。
 
使用Shell颜色
 
  首先使用一个例子来说明如何实现Shell彩色:
PS1="[ 3[0;32;40mu@h:w$ 3[0m ]"
这时候就会显示如下的提示符:
在上面命令中,¡°3[0;32;40m¡±表示定义后面文本的颜色,¡°3¡±表示启动一个转义序列,¡°[¡±定义开始颜色定义,¡°0¡±定义默认的字体颜色,其它部分稍后定义。¡°32¡±定义文本的前景色,这里32表示绿色;¡°40¡±定义文本的背景色,40表示黑色。在字符串的最后定义了¡° 3[0m¡±,它是用来恢复了默认的文本颜色设置,这样就只会得到一个彩色提示符,而不会影响命令和其输出的颜色显示(即黑底白字)。
 
  我们一共有8种字体颜色可供选择,它们分别是30 (黑色)、31 (红色)、32 (绿色)、33 (黄色)、34 (蓝色)、35 ( 紫红色)、36 (青色)和37 (白色)。对于底色也有8种颜色可供选择,只需要将字体颜色的3修改为4即可,例如40、41、42、43、44、45、46、47。
 
前景      背景      颜色
---------------------------------------
30          40          黑色
31           41          红色
32          42          绿色
33          43          黄色
34          44          蓝色
35          45          紫红色
36          46          青蓝色
37          47          白色

 代码      意义
-------------------------
0            OFF
1            高亮显示
4            下划线
5            闪烁
7            反白显示
8            不可见
 
【例子】
# echo -e '\033[34mYour input invaild !!\033[0m'

ANOTHER

参考



\e      an ASCII escape character (033)

颜色设置开始   \033[31m    或者\e[31m
恢复设置前颜色 \033[0m          或者\e[0m

其中“[”后面整数31表示修改字符颜色红色

可以设置背景颜色和字符高亮/下划线等,写多个颜色设置即可
如\033[0;31m\033[44m   蓝底红字

echo -e "\033[0;31m\033[44mhello\033[0m"   蓝底红字的"hello"
echo -e "\033[0;31m\033[44m\033[4mhello\033[0m"   蓝底亮红字的"hello"


Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37
Red background  41
Blue background 44
Underscore      4
Blink          5 
Inverse       7     前景背景色翻转
Concealed      8     不显示(比如输入密码)

下面这个脚本可以打印颜色代码,执行一下挑选喜欢的颜色,很不错


#!/bin/bash

#

# This file echoes a bunch of color codes to the 

# terminal to demonstrate what's available. Each 

# line is the color code of one forground color,

# out of 17 (default + 16 escapes), followed by a 

# test use of that color on all nine background 

# colors (default + 8 escapes).

#


T='gYw' # The test text


echo -"\n 40m 41m 42m 43m\
     44m 45m 46m 47m"
;

for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
           '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
           ' 36m' '1;36m' ' 37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG $T "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
  done
  echo;
done

阅读(1419) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~