例如:
echo -ne "[32m" 可以将字符的显示颜色改为绿色
echo -ne "[3;1H" 可以将光标移到第3行第1列处
具体的摘抄一些如下:
[0m 关闭所有属性
[1m 设置高亮度
[4m 下划线
[5m 闪烁
[7m 反显
[8m 消隐
[30m -- [37m 设置前景色
[40m -- [47m 设置背景色
[nA 光标上移n行
[nB 光标下移n行
[nC 光标右移n行
[nD 光标左移n行
[y;xH设置光标位置
[2J 清屏
[K 清除从光标到行尾的内容
[s 保存光标位置
[u 恢复光标位置
[?25l 隐藏光标
[?25h 显示光标
[code]
Linux 终端机下的彩色显示
(2001-04-27 15:20:29)
作者:ThorbjørnRavnAndersen,ravn@dit.ou.dk
译者:Chou-KaiWang,stylon@ms2.hinet.net
v1.4,7August1997
--------------------------------------------------------------------------------
虽然大部份的Linux发行版本都附有一个用来把目录的内容列出来,而且可以利用彩色来增强输出在视觉上的效果的'ls'指令,不过要把他设定的合你意却不是件容易的事。这份文件说明了设定一些已经内附在你的Linux发行版本的软体,来达到这个目地的好几种不同的方法,还有在那□可以找到一些在大部份版本的Unix□都会用到,但是却常常不被附在Slackware或RedHatLinux□的软体。这份文件的HTML版本也可以在我的原始档案这□http://www.mip.ou.dk/~ravn/colour-ls找的到。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1.简介
这些年来彩色的显示器已经相当普遍,使用者也开始使用一些以彩色来表示例如:程式语言□的保留字,或是拼错的字,来给使用者一些视觉上的回馈。
自从Linux的文字模式控制台支援彩色後,原来的GNUls也很快的被修改成支援输出彩色的讯息而且被附在Slackware2.0版 □。这些改良原来版本的缀补档案已经被整合到标准版的GNUls里,现在也应该是所有新的Linux发行版本的一部份了。
现在这版本的文件是把最初的版本改写了许多部份後更新而来的,包括了一些关於xterm和如何利用缀补档来更新核心的资讯。
这份文件里的资讯都在Redhat4.1□验证过,而且主要是在Slackware2.0.2版及核心版本1.1.54的环境□搜集而来的。核心的缀补档的资讯是在slackware2.2.0,1.2.13版的核心,并且以tcsh为预设的shell的环境□取得的,而後来也在2.0.27的核心□验证过。如果你使用其它的设定或是unix版本,我会很感激你告诉我你的作业系统及版本,还有它是否支援彩色的显示。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2.快速入门:给没有那麽多耐心的读者
如果你有个新版的Linux,对你使用者目录下的这些档案作这些修改,下次你登入的时候就会生效了。
~/.bashrc:
aliasls="ls‐‐color"
~/.cshrc:
aliasls'ls‐‐color'
这样就好啦!
你也许还会想要作:``eval`dircolors$HOME/.colourrc`'',来设定你自己想要的颜色。这个档案可以用``dircolors-p>$HOME/.colourrc''来制造出来,而且□面有许多的注解方便你更改设定。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3.这样就好了吗?
首先你需要知道你使用的ls是不是可以适当的处理彩色输出。在Linux的文字模式控制台试试看这个指令(在xterm□也可以):
%ls‐‐color
(这□的%是shell的提示符号):
如果你看到了表示你的ls不能接受这个选项的错误讯息,那你应该安装新版本的GNUfileutils软体。如果你使用的发行版本没有提供新的升级软体,那麽就从GNU的映射站台取得这个软体并且直接从原始码安装。
如果你并没有看到错误讯息,那麽你使用的ls便可以接受这个选项。但很不幸的,有一些在Slackware(其它的发行版本也有可能)□附的早期版本是有臭□的。在Redhat4.1□面附的3.13版的ls就没有问题。
%ls‐‐version
ls-GNUfileutils-3.13
如果你在Linux的文字模式终端机□执行``ls‐‐color'',那麽它的输出应该依照系统的预设值而有适当的彩色,而且你现在可以开始决定是不是需要改变任何的设定。
如果你在xterm□执行上面的过程,也许你还是没办法看到输出变成彩色。就跟ls一样,原来的xterm并不支援应用程式的彩色输出,而较新的版本有支援。如果你的xterm不支援彩色,那麽请参考这个文件的结尾拿到较新版本的xterm,同时你也只好切换到文字模式并且继续下面的步骤。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4.有那些颜色可以选择呢?
下面的shell命令稿(感谢许多把bash的版本寄给我的人)显示出现在使用的主控台能够支援的各种颜色组合。如果没有颜色出现,那麽你的主控台就不支援ANSI的颜色选择。
#!/bin/bash
#显示ANSI的彩色
#
esc="3["
echo-n"_____40___41____42___43"
echo"___44____45___46____47_"
forforein3031323334353637;do
line1="$fore"
line2=""
forbackin4041424344454647;do
line1="$$$;$mNormal$0m"
line2="$$$;$;1mBold$0m"
done
echo-e"$line1\n$line2"
done
前景的颜色号码是在左边那一排,背景的则是在上方。如果你要粗体的字元和高亮度就在参数□加一个"1",所以前景是白色而背景是蓝色就成了"37;44;1"。整个的ANSI颜色选择序列就是
ESC[37;44;1m
。
注:背景不可以是高亮度,所以黄色(高亮度的棕色)只能用来作前景。这是硬体上的限制。
颜色代码:
0-黑色4-蓝色3#是背景颜色
1-红色5-粉红色4#是前景颜色
2-绿色6-青色
3-黄色7-白色;1是粗体和高亮度
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
5.如何设定ls的彩色输出
如果你想要修改ls内定的标准颜色,你需要用下面的指令在你的HOME目录下制造这一个档案
cd;dircolors-p>.coloursrc
在你编辑完这个注解的很详细的档案以後,你必需要把它读进你的环境变数LS_COLORS□,通常都是这样作的
eval`dircolors.colourrc`
然後你要把前面这一行放进你的.bashrc或.cshrc或.tcshrc(依照你使用的shell而定)□。更详细的用法请看dircolors(1)的使用说明。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
6.如何改变系统的预设值:前景白色而背景是黑色
你需要告诉你的终端机驱动程式你想要的另一个预设值。要如何作并没有一个标准的方法,不过如果你是用Linux的话,你有setterm这个程式可以用。
"setterm"使用终端机资料库□的资料来设定属性。要选择属性的话要这样作
setterm-foregroundblack-backgroundwhite-store
"-store"参数把现在所作的改变设定成预设值。这需要你现在使用的的终端机种类(在TERM环境变数□)在termcap资料库□有足够详细的纪录。如果setterm因为某种因素不能正常的工作,你还有其它的选择。
6.1Xterm
你要有至少一种下列的xterm,而且要支援彩色。
xterm-fgwhite-bgblue4
color_xterm-fgwhite-bgblue4
color-xterm-fgwhite-bgblue4
nxterm-fgwhite-bgblue4
这□的'color_xterm'支援彩色版的'ls'。这□的颜色选择是模彷SGI上面使用的颜色。
6.2虚拟主控台
你也可以修改核心,这样就可以一劳永逸的用控制码来改变虚拟主控台的预设值。如果你自己编译核心的话,我建议利用kernel的缀补档。
核心的原始码是在/usr/src/linux/drivers/char/console.c,大概在1940行,这是你应该修改的地方
def_color=0x07;/*white*/
ulcolor=0x0f;/*boldwhite*/
halfcolor=0x08;/*grey*/
def_color=0x17;/*white*/
ulcolor=0x1f;/*boldwhite*/
halfcolor=0x18;/*grey*/
这边的十六进位数字是给显示卡用的:最左边的位元(上面□例的"1")是背景;最右边的位元是前景。0=黑色,1=蓝色,2=绿色, 3=青色,4=红色,5=紫色,6=棕色/黄色,7=白色。把数字加8可以得到高亮度的颜色。在大部份的情况下,高亮度的背景色==闪烁的字加上普通的背景。由sjlam1@mda023.cc.monash.edu.au所提供
你也可以使用下面的ANSI控制码提供一个执行时期的主控台预设值。(在核心原始码□找到的)
ESC[8]
这个控制码把预设值设成目前的前景及背景颜色。然後重设属性的控制码(ESC[m)让这预设值马上就取代黑白色成为使用中的颜色。
每次你重开机的时侯你都需要再把这些字串送给主控台。依照你的Linux主机用途不同,有好几个档案可以达成这个目的。
/etc/issue
在Slackware□这就是"WelcometoLinuxxx.yy"讯息所在的档案,如果你的主机是个人使用的话,从这个档案下手是不错的选择(但对於用telnet远端登入使用系统的人就可能有点讨厌)。这个档案在每次开机的时侯都会被制造出来,原来的内容则被覆盖,所以你必需要修改开机档案(在Slackware□是/etc/rc.d/rc.S,Redhat□是/etc/rc.d/rc.local)□面的下列几行:
echo"">/etc/issue
echoWelcometoLinux`/bin/uname-a|/bin/cut-d\-f3`.>>/etc/issue
改成
ESCAPE="在这□放入ESC码"
echo"$[H$[37;44m$[8]$[2J">/etc/issue
echoWelcometoLinux`/bin/uname-a|/bin/cut-d\-f3`.>>/etc/issue
这□的控制码会把游标归位、设定颜色(在这□的前景是白色而背景是蓝色)、把这个设定存起来并且把萤幕上其它部份清除掉。这□的改变会在下次重开机时生效。别忘了在emacs要打入ESC字元要按C-q键而在vi□要按control-v,因为很显然的执行以上程式的sh并不了解/033这种用法。
/etc/profile或.profile
if["$TERM"="console"];then
echo"3[37;44m3[8]"#
#或使用setterm。
setterm-foregroundwhite-backgroundblue-store
fi
/etc/login或.login
if("$TERM"=="console")then
echo"3[37;44m3[8]"
#或使用setterm。
setterm-foregroundwhite-backgroundblue-store
endif
[译者注:Linux的主控台下的$TERM环境变数已经是"linux"而不是"console"了]
6.3远端登入
你应该可以用上面示□过的setterm程式。当然,远端的机器必需要能够得到足够的资讯来操作你的终端机,而且你的终端机模拟程式要能够支援彩色。在我的经验□其它平台上最好的vt100终端机模拟程式有下列几种:
MS-DOS:MS-Kermit(免费,不是Microsoft的产品)
Windows95/NT:Kermit/95(共享软体)
OS/2:Kermit/95(共享软体)。请注意标准的telnet支援彩色而且可以在本地端设定。
关於kermit的细节请看http://www.columbia.edu/kermit/
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
7.软体
以上所有的用法都假设你使用的是GNU/Linux。如果你是使用其它的作业环境(比如说是执行X的Sun工作站等等)你还是可以拿到并且自己编译这些软体。
彩色版的xterm是从标准的xterm原始码而发展来的,而用来修改标准xterm的缀补档可以从任何一个X11R6的站台获得。听说R6.3内附的xterm有支援彩色,不过我没有测试过。
ftp://ftp.denet.dk/pub/X11/contrib/...-R6pl5-patch.gz
如果你是用旧版的X的话请看内附的文件。注意:我自己并没有测试过!
'ls'是内附在GNU的fileutils软体□而你可以从prep.mit.edu或其它的映射站台拿到。请拿最新的3.13版本。
ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz
我自己曾经在Solaris,SunOS,Irix上成功编译过color-ls。
我很欢迎对於这篇文章的回应。我的电子邮件地址是ravn@dit.ou.dk
‐‐
ThorbjørnRavnAndersen
--------------------------------------------------------------------------------
[/code]