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

2008-02-23 07:23:29来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


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 可以得到高亮度的颜色。在大部份的情况下,高亮度的背景色 == 闪烁的字加上普通的背景。由 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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:如何设定与维持准确的电脑时钟

下一篇:桥接器的运作 mini-Howto