⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linux 终端机下的彩色显示.txt

📁 LINUX下的安装声卡等操作和技巧介绍
💻 TXT
字号:
作者:独孤九剑
email: mikaiyue@sina.com
日期:2001-6-29 13:33:09
Linux 终端机下的彩色显示

 

作者: Thorbjo/rn Ravn Andersen, ravn@dit.ou.dk

译者: Chou-Kai Wang, stylon@ms2.hinet.net

v1.4, 7 August 1997

_________________________________________________________________

 

虽然大部份的 Linux 发行版本都附有一个用来把目录的内容列出来,而且可以利

用彩色来增强输出在视觉上的效果的'ls'指令,不过要把他设定的合你意却不是

件容易的事。这份文件说明了设定一些已经内附在你的 Linux 发行版本的软体,

来达到这个目地的好几种不同的方法,还有在那□可以找到一些在大部份版本的

Unix □都会用到,但是却常常不被附在 Slackware 或 RedHat Linux □的软体

。这份文件的 HTML 版本也可以在我的原始档案这□

[1]http://www.mip.ou.dk/~ravn/colour-ls 找的到。

_________________________________________________________________

 

1. 简介

2. 快速入门:给没有那麽多耐心的读者

3. 这样就好了吗?

4. 有那些颜色可以选择呢?

5. 如何设定 ls 的彩色输出

6. 如何改变系统的预设值: 前景白色而背景是黑色

* 6.1 Xterm

* 6.2 虚拟主控台

* 6.3 远端登入

 

7. 软体

_________________________________________________________________

 

1. 简介

这些年来彩色的显示器已经相当普遍,使用者也开始使用一些以彩色来表示例如

:程式语言□的保留字,或是拼错的字,来给使用者一些视觉上的回馈。

 

自从 Linux 的文字模式控制台支援彩色後,原来的 GNU ls 也很快的被修改成支

援输出彩色的讯息而且被附在 Slackware 2.0 版□。 这些改良原来版本的缀补

档案已经被整合到标准版的 GNU ls 里,现在也应该是所有新的 Linux 发行版本

的一部份了。

 

现在这版本的文件是把最初的版本改写了许多部份後更新而来的,包括了一些关

於 xterm 和 如何利用缀补档来更新核心的资讯。

 

这份文件里的资讯都在 Redhat 4.1 □验证过,而且主要是在Slackware 2.0.2

版及核心版本 1.1.54 的环境□搜集而来的。 核心的缀补档的资讯是在

slackware 2.2.0,1.2.13 版的核心,并且以 tcsh 为预设的 shell的环境□取

得的, 而後来也在 2.0.27 的核心□验证过。如果你使用其它的设定或是 unix

版本,我会很感激你告诉我你的作业系统及版本, 还有它是否支援彩色的显示。

 

2. 快速入门:给没有那麽多耐心的读者

如果你有个 新版的 Linux,对你使用者目录下的这些档案作这些修改,下次你登

入的时候就会生效了。

 

~/.bashrc:

alias ls="ls --color"

~/.cshrc:

alias ls 'ls --color'

这样就好啦!

 

你也许还会想要作:``eval `dircolors $HOME/.colourrc`'', 来设定你自己想

要的颜色。这个档案可以用 ``dircolors -p >$HOME/.colourrc'' 来制造出来,

而且□面有许多的注解方便你更改设定。

 

3. 这样就好了吗?

首先你需要知道你使用的 ls 是不是可以适当的处理彩色输出。在 Linux 的文字

模式控制台试试看这个指令(在 xterm □也可以):

 

% ls --color

(这□的 % 是 shell 的提示符号):

 

如果你看到了表示你的 ls 不能接受这个选项的错误讯息,那你应该安装新版本

的 GNU fileutils 软体。如果你使用的发行版本没有提供新的升级软体,那麽就

从 GNU 的映射站台取得这个软体并且直接从原始码安装。

 

如果你并没有看到错误讯息,那麽你使用的 ls 便可以接受这个选项。但很不幸

的,有一些在 Slackware (其它的发行版本也有可能) □附的早期版本是有臭□

的。在 Redhat 4.1 □面附的 3.13 版的 ls 就没有问题。

 

% ls --version

ls - GNU fileutils-3.13

如果你在 Linux 的文字模式终端机□执行 ``ls -- color'',那麽它的输出应该

依照系统的预设值而有适当的彩色,而且你现在可以开始决定是不是需要改变任

何的设定。

 

如果你在 xterm □执行上面的过程,也许你还是没办法看到输出变成彩色。就跟

ls 一样,原来的 xterm 并不支援应用程式的彩色输出,而较新的版本有支援。

如果你的 xterm 不支援彩色,那麽请参考这个文件的结尾拿到较新版本的

xterm,同时你也只好切换到文字模式并且继续下面的步骤。

 

4. 有那些颜色可以选择呢?

下面的 shell 命令稿(感谢许多把 bash 的版本寄给我的人)显示出现在使用的主

控台能够支援的各种颜色组合。如果没有颜色出现,那麽你的主控台就不支援

ANSI 的颜色选择。

 

#!/bin/bash

# 显示 ANSI 的彩色

#

esc="\033["

echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43"

echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _"

for fore in 30 31 32 33 34 35 36 37; do

line1="$fore "

line2=" "

for back in 40 41 42 43 44 45 46 47; do

line1="${line1}${esc}${back};${fore}m Normal ${esc}0m"

line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m"

done

echo -e "$line1\n$line2"

done

前景的颜色号码是在左边那一排,背景的则是在上方。如果你要粗体的字元和高

亮度就在参数□加一个 "1",所以前景是白色而背景是蓝色就成了 "37;44;1"。

整个的 ANSI 颜色选择序列就是

ESC [ 3 7 ; 4 4 ; 1 m


 

注: 背景不可以是高亮度,所以黄色(高亮度的棕色)只能用来作前景。这是硬体

上的限制。

 

颜色代码:

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 -foreground black -background white -store

"-store" 参数把现在所作的改变设定成预设值。这需要你现在使用的的终端机种

类(在 TERM 环境变数□)在 termcap 资料库□有足够详细的纪录。如果

setterm 因为某种因素不能正常的工作,你还有其它的选择。

 

6.1 Xterm

你要有至少一种下列的 xterm,而且要支援彩色。

 

xterm -fg white -bg blue4

color_xterm -fg white -bg blue4

color-xterm -fg white -bg blue4

nxterm -fg white -bg blue4

这□的 'color_xterm' 支援彩色版的 'ls'。这□的颜色选择是模彷 SGI 上面使

用的颜色。

 

6.2 虚拟主控台

你也可以修改核心,这样就可以一劳永逸的用控制码来改变虚拟主控台的预设值

。如果你自己编译核心的话,我建议利用 kernel 的缀补档。

 

核心的原始码是在 /usr/src/linux/drivers/char/console.c ,大概在 1940 行

,这是你应该修改的地方

 

def_color = 0x07; /* white */

ulcolor = 0x0f; /* bold white */

halfcolor = 0x08; /* grey */

def_color = 0x17; /* white */

ulcolor = 0x1f; /* bold white */

halfcolor = 0x18; /* grey */

这边的十六进位数字是给显示卡用的: 最左边的位元(上面□例的 "1")是背景 ;

最右边的位元是前景。0 = 黑色,1 = 蓝色,2 = 绿色,3 = 青色, 4 = 红色,

5 = 紫色,6 = 棕色/黄色,7 = 白色。把数字加 8 可以得到高亮度的颜色。在

大部份的情况下,高亮度的背景色 == 闪烁的字加上普通的背景。 由

[2]sjlam1@mda023.cc.monash.edu.au 所提供

 

你也可以使用下面的 ANSI 控制码提供一个执行时期的主控台预设值。(在核心原

始码□找到的)

 

ESC [ 8 ]

这个控制码把预设值设成目前的前景及背景颜色。然後重设属性的控制码(ESC [

m)让这预设值马上就取代黑白色成为使用中的颜色。

 

每次你重开机的时侯你都需要再把这些字串送给主控台。依照你的 Linux 主机用

途不同,有好几个档案可以达成这个目的。

 

/etc/issue

 

在 Slackware □这就是 "Welcome to Linux xx.yy" 讯息所在的档案,如果你的

主机是个人使用的话,从这个档案下手是不错的选择(但对於用 telnet 远端登入

使用系统的人就可能有点讨厌)。 这个档案在每次开机的时侯都会被制造出来,

原来的内容则被覆盖,所以你必需要修改开机档案(在 Slackware □是

/etc/rc.d/rc.S,Redhat□是 /etc/rc.d/rc.local)□面的下列几行:

 

echo ""> /etc/issue

echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue

改成

 

ESCAPE="在这□放入 ESC 码"

echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue

echo Welcome to Linux `/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 "\033[37;44m\033[8]" #

# 或使用 setterm。

setterm -foreground white -background blue -store

fi

/etc/login 或 .login

 

if ( "$TERM" == "console" ) then

echo "\033[37;44m\033[8]"

# 或使用 setterm。

setterm -foreground white -background blue -store

endif

[ 译者注: Linux 的主控台下的 $TERM 环境变数已经是 "linux" 而不是

"console" 了 ]

 

6.3 远端登入

你应该可以用上面示□过的 setterm 程式。当然,远端的机器必需要能够得到足

够的资讯来操作你的终端机,而且你的终端机模拟程式要能够支援彩色。 在我的

经验□其它平台上最好的 vt100 终端机模拟程式有下列几种:

* MS-DOS: MS-Kermit (免费, 不是 Microsoft 的产品)

* Windows 95/NT: Kermit/95 (共享软体)

* OS/2: Kermit/95 (共享软体)。 请注意标准的 telnet 支援彩色而且可以在

本地端设定。

 

关於 kermit 的细节请看 [3]http://www.columbia.edu/kermit/

 

7. 软体

以上所有的用法都假设你使用的是 GNU/Linux。如果你是使用其它的作业环境(比

如说是执行 X 的 Sun 工作站等等)你还是可以拿到并且自己编译这些软体。

 

彩色版的 xterm 是从标准的 xterm 原始码而发展来的,而用来修改标准 xterm

的缀补档可以从任何一个 X11R6 的站台获得。 听说 R6.3 内附的 xterm 有支援

彩色,不过我没有测试过。

 

ftp://ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-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。

 

我很欢迎对於这篇文章的回应。我的电子邮件地址是 [4]ravn@dit.ou.dk

 

--

 

Thorbjo/rn Ravn Andersen

References

1. http://www.mip.ou.dk/~ravn/colour-ls

2. mailto:sjlam1@mda023.cc.monash.edu.au

3. http://www.columbia.edu/kermit/

4. mailto:ravn@dit.ou.dk

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -