Linux 终端机下的彩色显示( 二 )




% ls ‐‐version
ls - GNU fileutils-3.13

如果你在 Linux 的文字模式终端机□执行 ``ls ‐‐ color"",那麽它的输出应该依照系统的预设值而有适当的彩色,而且你现在可以开始决定是不是需要改变任何的设定 。

如果你在 xterm □执行上面的过程,也许你还是没办法看到输出变成彩色 。就跟 ls 一样,原来的 xterm 并不支援应用程式的彩色输出,而较新的版本有支援 。如果你的 xterm 不支援彩色,那麽请参考这个文件的结尾拿到较新版本的 xterm,同时你也只好切换到文字模式并且继续下面的步骤 。



--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

4. 有那些颜色可以选择呢?
下面的 shell 命令稿(感谢许多把 bash 的版本寄给我的人)显示出现在使用的主控台能够支援的各种颜色组合 。如果没有颜色出现,那麽你的主控台就不支援 ANSI 的颜色选择 。


#!/bin/bash
# 显示 ANSI 的彩色
#
esc="33["
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 "$line1n$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 因为某种因素不能正常的工作,你还有其它的选择 。

推荐阅读