“\\033”(ESC)的用法-ANSI的Esc屏幕控制:

时间:2021-04-20 00:19:24

                                                       ANSI的Esc屏幕控制码

 


在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码,在printf函数调用时可以输出具有颜色的字符,其格式如下:
"\033[字背景颜色;字体颜色m字符串\033[0m" 

下面是常见的一些ANSI控制码。加颜色只是以下控制码中的一种:

\033[0m   关闭所有属性  
\033[1m   设置高亮度  
\033[4m   下划线  
\033[5m   闪烁  
\033[7m   反显  
\033[8m   消隐  
\033[30m   --   \033[37m   设置前景色  
\033[40m   --   \033[47m   设置背景色  
\033[nA   光标上移n行  
\033[nB   光标下移n行  
\033[nC   光标右移n行  
\033[nD   光标左移n行  
\033[y;xH 设置光标位置  
\033[2J   清屏  
\033[K   清除从光标到行尾的内容  
\033[s   保存光标位置  
\033[u   恢复光标位置  
\033[?25l   隐藏光标  
\033[?25h   显示光标

\033[2J\033[0;0H  清屏且将光标置顶

 

   shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e
  格式如下:
  echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
  例如:
  echo -e "\033[41;36m something here \033[0m"
  其中41的位置代表底色, 36的位置是代表字的颜色
  注:
  1、字背景颜色和文字颜色之间是英文的""
  2、文字颜色后面有个m
  3、字符串前后可以没有空格,如果有的话,输出也是同样有空格
  下面是相应的字和背景颜色,可以自己来尝试找出不同颜色搭配
  例
  echo -e “\033[31m 红色字 \033[0m”
  echo -e “\033[34m 黄色字 \033[0m”
  echo -e “\033[41;33m 红底黄字 \033[0m”
  echo -e “\033[41;37m 红底白字 \033[0m”
  字颜色:30—–37
  echo -e “\033[30m 黑色字 \033[0m”
  echo -e “\033[31m 红色字 \033[0m”
  echo -e “\033[32m 绿色字 \033[0m”
  echo -e “\033[33m 黄色字 \033[0m”
  echo -e “\033[34m 蓝色字 \033[0m”
  echo -e “\033[35m 紫色字 \033[0m”
  echo -e “\033[36m 天蓝字 \033[0m”
  echo -e “\033[37m 白色字 \033[0m”
  字背景颜色范围:40—–47
  echo -e “\033[40;37m 黑底白字 \033[0m”
  echo -e “\033[41;37m 红底白字 \033[0m”
  echo -e “\033[42;37m 绿底白字 \033[0m”
  echo -e “\033[43;37m 黄底白字 \033[0m”
  echo -e “\033[44;37m 蓝底白字 \033[0m”
  echo -e “\033[45;37m 紫底白字 \033[0m”
  echo -e “\033[46;37m 天蓝底白字 \033[0m”
  echo -e “\033[47;30m 白底黑字 \033[0m”


下面是一些关于颜色的宏:

1. #define NONE         "\033[m"
2. #define RED          "\033[0;32;31m"
3. #define LIGHT_RED    "\033[1;31m"
4. #define GREEN        "\033[0;32;32m"
5. #define LIGHT_GREEN  "\033[1;32m"
6. #define BLUE         "\033[0;32;34m"
7. #define LIGHT_BLUE   "\033[1;34m"
8. #define DARY_GRAY    "\033[1;30m"
9. #define CYAN         "\033[0;36m"
10. #define LIGHT_CYAN   "\033[1;36m"
11. #define PURPLE       "\033[0;35m"
12. #define LIGHT_PURPLE "\033[1;35m"
13. #define BROWN        "\033[0;33m"
14. #define YELLOW       "\033[1;33m"
15. #define LIGHT_GRAY   "\033[0;37m"
16. #define WHITE        "\033[1;37m"


颜色分为背景色和字体色,30~39用来设置字体色,40~49设置背景:

背景色                        字体色
40: 黑                          30: 黑
41: 红                          31: 红
42: 绿                          32: 绿
43: 黄                          33: 黄
44: 蓝                          34: 蓝
45: 紫                          35: 紫
46: 深绿                      36: 深绿
47: 白色                      37: 白色

记得在打印完之后,把颜色恢复成NONE,不然再后面的打印都会跟着变色。



解释下具体含义:

颜色配置:

\[\033[1;31m\]

  • 底线:ANSI 色彩控制语法。\033 声明了转义序列的开始,然后是 [ 开始定义颜色。
  • 第一组数字:亮度 (普通0, 高亮度1, 闪烁2)。
  • 第二组数字:顏色代码。
  • 颜色: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white

\[\033[0m\]

  • 关闭 ANSI 色彩控制,通常置于尾端。

显示内容配置:

  • \a     ASCII响铃字符 (07)
  • \d     “周 月 日”格式的日期
  • \D{format}   参数format被传递给strftime(3)来构造自定格式的时间并插入提示符中;该参数为空时根据本地化设置自动生成格式。
  • \e     ASCII转义字符(ESC) (033)
  • \h     主机名在第一个点号前的内容
  • \H     完全主机名
  • \j     shell当前管理的任务数
  • \l     shell终端设备的基本名称
  • \n     新行
  • \r     回车
  • \s     shell的名称,$0的基本名称
  • \t     当前时间(24小时) HH:MM:SS
  • \T     当前时间(12小时) HH:MM:SS
  • \@     当前时间(12小时) am/pm
  • \A     当前时间(24小时) HH:MM
  • \u     当前用户名称
  • \v     bash版本(如"2.00")
  • \V     bash版本+补丁号(如"2.00.0")
  • \w     当前工作目录
  • \W     当前工作目录的基本名称
  • \!     该命令的历史数(在历史文件中的位置)
  • \#     该命令的命令数(当前shell中执行的序列位置)
  • \$     根用户为"#",其它用户为"$"
  • \nnn   8进制数
  • \\     反斜杠
  • \[     表示跟在后面的是非打印字符,可用于shell的颜色控制
  • \]     表示非打印字符结束

\033[31m WARNING! \033[m  用来输出红色的警告.



 Shell高级屏幕输出    

对于在Shell下面编写屏幕程序,大家使用echo命令比较多,而且此命令也比较快。下面介绍的是比较漂亮 
一点的方法,但是速度比较慢。要实现这一点,系统上需要一个彩色监视器和tput命令。 
一.使用 
   在使用tput前,需要在脚本或命令行中使用tput命令初始化终端。 
   $ tput init 
   tput产生三种不同的输出:字符型、数字型和布尔型(真/假)。 
/字符串输出/ 
下面是大部分常用字符串: 
名字含义 
bel 警铃 
blink 闪烁模式 
bold 粗体 
civis 隐藏光标 
clear 清屏 
cnorm 不隐藏光标 
cup 移动光标到屏幕位置( x,y) 
el 清除到行尾 
ell 清除到行首 
smso 启动突出模式 
rmso 停止突出模式 
smul 开始下划线模式 
rmul 结束下划线模式 
sc 保存当前光标位置 
rc 恢复光标到最后保存位置 
sgr0 正常屏幕 
rev 逆转视图 

/数字输出/ 
以下是大部分常用数字输出。 
名字含义 
cols 列数目 
ittab设置宽度 
lines 屏幕行数 

/布尔输出/ 
在tput中只有两种布尔操作符。 
名字含义 
chts 光标不可见 
hs 具有状态行 

例如:tput clear 清除屏幕 

二.光标位置 
可以用tput将光标放在屏幕任意位置。格式为: 
cup r c 
r为从上至下屏幕行数, c为穿过屏幕列数。 
最好将之编成函数,这样就可以把行和列的值传递给它。 
例子:tput cup 2 3命令将光标放到第2行、第3列。 

三.菜单中使用颜色 
对域使用颜色可以使数据输入屏幕看起来更加专业。下面将使用的颜色是A N S I标准颜 
色,并不是所有颜色都适合于所有系统。下面列出了大部分常用颜色。 
1. 前景色: 
数字颜色数字颜色 
3 0 黑色3 4 蓝色 
3 1 红色3 5 紫色 
3 2 绿色3 6 青色 
3 3 黄(或棕)色3 7 白(或灰)色 
2. 背景色: 
数字颜色数字颜色 
4 0 黑色4 4 青色 
4 1 红色4 5 蓝色 
4 2 绿色4 6 青色 
4 3 黄(或棕)色4 7 白(或灰)色 

例子:黑底绿字echo "\033[40;32m" 

   使用tput命令可以增强应用外观及脚本的控制。颜色设置可以增加应用的专业性。注意使 
用颜色不要太过火,否则速度会非常的慢。


ANSI标准在C/C++程序中应用和CMD程序美化

(CMD窗口中输入help color命令
首先加上头文件: 
include"stdlib.h" 
在再主程序中加入 
system("color f0"); (黑色字体白色背景) 
system("cls"); 

你可以把color后面的f0换成00-ff间的任一个数, 
C:\Documents and Settings\Administrator>help color 
设置默认的控制台前景和背景颜色。 

COLOR [attr] 

attr 指定控制台输出的颜色属性 

颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一: 

0 = 黑色 8 = 灰色 
1 = 蓝色 9 = 淡蓝色 
2 = 绿色 A = 淡绿色 
3 = 湖蓝色 B = 淡浅绿色 
4 = 红色 C = 淡红色 
5 = 紫色 D = 淡紫色 
6 = 黄色 E = 淡黄色 
7 = 白色 F = 亮白色 )每种计算机都有自己的处理屏幕的方法。这是非常必要的,如果完全局限于一种特定的标准,那么各项事业将会停滞不前。然而,当你试图为不同的计算机编写程序时,或者试图编写必须通过电话线进行通信的程序时,这种差别会带来很大的问题。为了解决这个问题,便产生了ANSI标准。
    ANSI标准试图为程序使用视频终端来完成某些标准任务而设定一个基本框架,例如以不同颜色打印文本,移动光标,清屏,等等。它通过定义一些特殊的字符序列来达到这个目的——当这些字符序列被送到屏幕上时,它们会以特殊的方式对屏幕起作用。
    然而,在有些计算机上,当你按正常的方式把这些字符序列送到屏幕上时,你所看到的将是这些字符本身,而不是它们要产生的效果。为了解决这个问题,你需要装入一个程序,通过它来检查送往屏幕的每一个字符,并删去其中的特殊字符(这样它们就不会被打印出来),然后实现这些特殊字符所指示的功能。
    在以MS-DOS为操作系统的计算机上,这个程序被称为ANSI.SYS。ANSI.SYS必须在计算机启动时被装入,为此你可以在CONFIG.SYS文件中加入下述语句:
    DRIVER=ANSI.SYS
    在实际情况中,ANSI.SYS驱动程序可能在别的目录下,这时你必须清楚地写出路径全名,例如:
    driver=c:\sys\dos\ansi.sys

17.2. 怎样通过ANSI驱动程序来清屏?

    这种操作可以通过"<esc>[2J”来完成,下面的程序演示了这一点:
# include <stdio. h>
main ( )
{
      printf( " %c[2JNice to have an empty screen. \n" , 27 ) ;
      return ( 0 );

17.3. 样通过ANSI驱动程序来存储光标位置?

    这种操作可以通过"<esc>[s"来完成,下面的程序演示了这一点:
    #include<stdio.h>
    main()
    {
        printf( "Cursor position is %c[s \n" , 27 );
        printf ( "Interrupted ! \n" ) ;
        printf( "%c[uSAVED! !\n" , 27 );
        return( 0 );
    }

17.4. 怎样通过ANSI驱动程序来恢复光标位置?

   这种操作可以通过“<esc>[u”来完成,请参见17.15中的例子。

17.5. 怎样通过ANSI驱动程序来改变屏幕颜色?

    完成这项任务的方法是先改变当前文本的背景色,然后清屏。下面的程序就是一个例子:
    # include <stdio. h>
    int main ( )
    {
        printf( " %0c[43;32m%c[2JOhh, pretty colors!\n", 27 , 27 ) ;
        return( 0 );
    }

17.6. 怎样通过ANSI驱动程序来写带有颜色的文本?

    文本的颜色是可以改变的文本属性之一。文本的属性可以通过“(esc>[<attr>m”来改变。在ANSI字符序列中,文本的属性是用数字来表示的。你可以用一条命令来设置多种属性,各种属性之间用分号分隔开,例如“<esc>[<attr>;<attr>m"。下面的程序演示了这一点:
    # include <stdio. h>
    main ( )
    {
          printf("%c[32;44mPsychedelic, man.\n" , 27 );
        return( 0 );
    }
    以下列出了ANSI驱动程序所支持的属性,你的显示器可能不支持其中的某些选项:
        1—High Intensity(高强度)
        2一Low Intensity(低强度)
        3一Italic(斜体)
        4一Underline(下划线)
        5一Blinking(闪烁)
        6一Fast Blingking(快闪)
        7一Reverse(反转)
        8一Invisible(不可见)
    前景色:
        30一Black(黑)
        31一Red(红)
        32一Green(绿)
        33一Yellow(黄)
        34一Blue(蓝)
        35一Magenta(洋红)
        36一Cyan(青蓝)
        37一White(白)
    背景色:
        40—Black(黑)
        41一Red(红)
        42一Green(绿)
        43一Yellow(黄)
        44一Blue(蓝)
        45一Magenta(洋红)
        46一Cyan(青蓝)
        47一White(白)

17.7. 怎样通过ANSI驱动程序来移动光标?

移动光标有两种方式:相对移动和绝对移动。相对移动是指相对于当前光标位置的移动,例如“将光标上移两格”。绝对移动是指相对于屏幕左上角的移动,例如“将光标移到第10行第5列”。
    相对移动可按以下方式进行:
    “<esc>[#a”,其中#表示上移的格数
    “<esc>[#b”,其中#表示下移的格数
    “<esc>[#c”,其中#表示右移的格数
    “<esc>[#d”,其中#表示左移的格数
    将光标移到绝对位置的方法是:
    “<esc>[<row>;<col>H”,其中row和col分别表示目标位置所在的行数和列数。

批处理&&彩色文字

ANSI.SYS是MS-DOS中一个很有用的设备驱动程序,利用它,我们可以取得意想不到的显示效果。
注意:语法和 ANSI 转义序列中的大写字母必须按原样键入。

ANSI.SYS 定义了一系列函数,这些函数被用来改变显示图形、控制光标移动和键的重定义,ANSI.SYS 设备驱动程序支持转义序列的 ANSI,终端仿真,以便控制系统的屏幕和键盘。

该设备驱动程序必须由位于 CONFIG.SYS 文件中的DEVICE或DEVICEHIGH命令加载。

语法

DEVICE(HIGH)=[ 驱动器 :][ 路径 ]ANSI.SYS [/X] [/K] 

参数

[ 驱动器 :][ 路径 ]
指定 ANSI.SYS 文件的位置。

选项

/X
重新映射 101 键键盘以外的扩展键。

/K
使 ANSI.SYS 文件将 101 键键盘当作 84 键键盘看待,这等价于命令 SWITCHES=/K。如果您通常使用
SWITCHES=/K命令,那么在使用ANSI.SYS 时,则需要使用选项 /K。

ANSI 转义序列中关于光标移动、图形和键盘的设置:

在下面的 ANSI 转义序列的列表中,缩写 ESC 代表 ASCII转义字符 27(1Bh),它位于每个转义序列的开始。

ESC[PL;PcH
光标位置:移动光标到指定的位置(坐标),如果不指定位置,光标将移动到起始位置,即屏幕的左上角(0 行,0 列)。
该转义序列与下面的光标位置转义序列的工作方式相同。

ESC[PL;Pcf
光标位置:与前面光标位置转义序列的工作方式相同。

ESC[PnA
上移光标:不改变列而将光标向上移动指定的行数。如果光标已在首行,则 ANSI.SYS 忽略这个序列。

ESC[PnB
下移光标:不改变列而将光标向下移动指定的行数。如果光标已经在最后一行,则 ANSI.SYS 忽略这个序列。

ESC[PnC
右移光标:不改变行而将光标向右移动指定的列数。如果光标已经在最右列,则 ANSI.SYS 忽略这个序列。

ESC[PnD
左移光标:不改变行而将光标向左移动指定的列数。如果光标已经在最左列,则 ANSI.SYS 忽略这个序列。

ESC[s
保存光标位置:保存当前光标位置。使用“恢复光标位置”序列,您可以将光标移动到保存的光标位置。

ESC[u
恢复光标位置:将光标位置返回到“保存光标位置”所储存的位置。

ESC[2J
清除显示:清除屏幕并将光标位置移到起始位置(0 行,0 列)。像cls

ESC[K
清除行:清除从光标所在位置到行尾的所有字符( 包括光标位置上的字符)。

ESC[Ps;...;Psm
设置图形模式:调用由下列数值指定的图形函数,在该序列再次出现之前,这些被指定的函数保持激活状态。图形模式改变屏幕上显示的颜色和文本(例如:黑体和下划线字体)属性。

文本属性

值功能
------------------------------------
0 无属性
1 黑体
4 下划线字体(仅适用于单色显示适配器)
5 闪烁字体
7 反显字体
8 隐藏字体

前景色
值功能
------------------------------------
30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 紫红色
36 青色
37 白色

背景色

值功能
------------------------------------
40 黑色
41 红色
42 绿色
43 黄色
44 蓝色
45 紫红色
46 青色
47 白色

参数 30 到 47 符合 ISO 6429 标准。

ESC[=psh
设置模式:改变屏幕宽度或类型,使之成为下列数值所指定的一种。

0 40 x 148 x 25 单色(文本)
1 40 x 148 x 25 彩色(文本)
2 80 x 148 x 25 单色(文本)
3 80 x 148 x 25 彩色(文本)
4 320 x 148 x 200 4 色(图形)
5 320 x 148 x 200 单色(图形)
6 640 x 148 x 200 单色(图形)
7 启用换行功能
13 320 x 148 x 200 彩色(图形)
14 640 x 148 x 200 彩色(16 色图形)
15 640 x 148 x 350 单色(2 色图形)
16 640 x 148 x 350 彩色(16 色图形)
17 640 x 148 x 480 单色(2 色图形)
18 640 x 148 x 480 彩色(16 色图形)
19 320 x 148 x 200 彩色(256 色图形)

ESC[=Psl
重新设置模式:使用“设置模式”序列所用的同一值来重新设置模式,但是 7 除外,使用 7 将使换行功能失效。

注意:该转义序列中的最后一个字符是个小写 L。


这些都要在EDIT中完成,即开始--运行edit,当然在edit里构建所需的ESC字符后再转到记事本编辑比较方便
在用EDIT编辑批处理文件时可用下列方法输入ESC字符:首先同时按下Ctrl和P键,然后按ESC此时屏幕出现一左箭头(说明:已输入了ESC字符,之后再按方括号键开始ANSI命令) 

一定还有更好的方法edit太麻烦,大家都说说看法

如:

@echo off 
chcp 437>nul&&graftabl 936>nul 
if not exist CONFIG.NT copy %WinDir%\System32\CONFIG.NT CONFIG.NT
attrib +h CONFIG.NT
::调用ANSI.sys
@cls 
echo DEVICE=%WinDir%\System32\ANSI.SYS /x >%WinDir%\System32\CONFIG.NT 
@echo. 
command /cecho 
::指定背景色,缺省状态为黑色,如:command /cecho [1;45m 则背景为紫红色
@echo. 
@echo. 
command /cecho [1;31m                            
@echo. 
command /cecho [1;37m                                        
@echo. 
command /cecho [1;32m                         
@echo. 
command /cecho [1;33m                        
@echo. 
command /cecho [1;35m                         
@echo. 
command /cecho [1;36m                       
@echo. 
command /cecho [1;37m                       
@echo. 
command /cecho [1;31m                         
@echo. 
command /cecho [1;37m                         
@echo. 
command /cecho [1;36m                         
@echo. 
command /cecho [1;32m                        
@echo.
command /cecho [1;33m 结束 
pause>nul 
copy   CONFIG.NT   %WinDir%\System32\CONFIG.NT 
del   CONFIG.NT 
exit

代码:

效果

prompt $e[0;32;40m$p$g
ANSI.SYS
是MS-DOS中一个很有用的设备驱动程序,利用它,我们可以取得意想不到的显示效果。那么,它该如何使用呢?下面就来介绍一下。
注意:在本节中,语法和 ANSI 转义序列中的大写字母必须按原样键入。
ANSI.SYS 定义了一系列函数,这些函数被用来改变显示图形、控制光标移动和键的重定义, ANSI.SYS 设备驱动程序支持转义序列的 ANSI 终端仿真,以便控制系统的屏幕和键盘。
该设备驱动程序必须由位于 CONFIG.SYS 文件中的DEVICE或DEVICEHIGH命令加载。
语法
DEVICE(HIGH)=[ 驱动器 :][ 路径 ] ANSI.SYS [/X] [/K] [/R]
参数
[ 驱动器 :][ 路径 ]
指定  ANSI.SYS 文件的位置。
选项
/X
重新映射 101 键键盘以外的扩展键。
/K
使  ANSI.SYS 文件将 101 键键盘当作 84 键键盘看待,这等价于命令 SWITCHES=/K。如果您通常使用 SWITCHES=/K命令,那么在使用 ANSI.SYS 时,则需要使用选项 /K。
/R
当  ANSI.SYS 与屏幕阅读程序(该程序使残疾人更易于使用计算机)一起使用时,此选项用来调整行的滚动,以便提高可读性。
在 ANSI 转义序列中使用的参数:
Pn
数字参数,用来指定一个十进制数。
Ps
可选参数。指定一个十进制数,用于选择函数。您可以指定多个函数,必须用分号 (;) 将参数隔开。
PL
行参数。指定一个十进制数,它代表显示器或其它设备上的一行。
Pc
列参数。指定一个十进制数,它代表屏幕或其它设备上的一列。
ANSI 转义序列中关于光标移动、图形和键盘的设置:
在下面的 ANSI 转义序列的列表中,缩写 ESC 代表 ASCII转义字符 27(1Bh),它位于每个转义序列的开始。
ESC[PL;PcH
光标位置:移动光标到指定的位置(坐标),如果不指定位置,光标将移动到起始位置,即屏幕的左上角(0 行,0 列)。
该转义序列与下面的光标位置转义序列的工作方式相同。
ESC[PL;Pcf
光标位置:与前面光标位置转义序列的工作方式相同。
ESC[PnA
上移光标:不改变列而将光标向上移动指定的行数。如果光标已在首行,则  ANSI.SYS 忽略这个序列。
ESC[PnB
下移光标:不改变列而将光标向下移动指定的行数。如果光标已经在最后一行,则  ANSI.SYS 忽略这个序列。
ESC[PnC
右移光标:不改变行而将光标向右移动指定的列数。如果光标已经在最右列,则  ANSI.SYS 忽略这个序列。
ESC[PnD
左移光标:不改变行而将光标向左移动指定的列数。如果光标已经在最左列,则  ANSI.SYS 忽略这个序列。
ESC[s
保存光标位置:保存当前光标位置。使用“恢复光标位置”序列,您可以将光标移动到保存的光标位置。
ESC[u
恢复光标位置:将光标位置返回到“保存光标位置”所储存的位置。
ESC[2J
清除显示:清除屏幕并将光标位置移到起始位置(0 行,0 列)。
ESC[K
清除行:清除从光标所在位置到行尾的所有字符( 包括光标位置上的字符)。
ESC[Ps;...;Psm
设置图形模式:调用由下列数值指定的图形函数,在该序列再次出现之前,这些被指定的函数保持激活状态。图形模式改变屏幕上显示的 颜色和文本(例如:黑体和下划线字体)属性。
文本属性
值功能
------------------------------------
0 无属性
1 黑体
4 下划线字体(仅适用于单色显示适配器)
5 闪烁字体
7 反显字体
8 隐藏字体
前景色
值功能
------------------------------------
30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 紫红色
36 青色
37 白色
背景色
值功能
------------------------------------
40 黑色
41 红色
42 绿色
43 黄色
44 蓝色
45 紫红色
46 青色
47 白色
参数 30 到 47 符合 ISO 6429 标准。
ESC[=psh
设置模式:改变屏幕宽度或类型,使之成为下列数值所指定的一种。
0 40 x 148 x 25 单色(文本)
1 40 x 148 x 25 彩色(文本)
2 80 x 148 x 25 单色(文本)
3 80 x 148 x 25 彩色(文本)
4 320 x 148 x 200 4 色(图形)
5 320 x 148 x 200 单色(图形)
6 640 x 148 x 200 单色(图形)
7 启用换行功能
13 320 x 148 x 200 彩色(图形)
14 640 x 148 x 200 彩色(16 色图形)
15 640 x 148 x 350 单色(2 色图形)
16 640 x 148 x 350 彩色(16 色图形)
17 640 x 148 x 480 单色(2 色图形)
18 640 x 148 x 480 彩色(16 色图形)
19 320 x 148 x 200 彩色(256 色图形)
ESC[=Psl
重新设置模式:使用“设置模式”序列所用的同一值来重新设置模式,但是 7 除外,使用 7 将使换行功能失效。
注意:该转义序列中的最后一个字符是个小写 L。
ESC[code;string;...p
设置键盘字符串:将键盘键重新定义为指定的字符串。该转义序列的参数定义如下:
“code”是列于下表的一个或多个数值,这些数值代表键盘键和键的组合。当在命令中使用这些数值时,除了该序列要求的分号外,您还必须键入该表中显示的分号。括号中的代码在一些键盘上不存在,除非选项 /X 在  ANSI.SYS 的DEVICE 命令中被指定,否则, ANSI.SYS 将不为这些键盘翻译括号中的代码。
“string”对于单个字符是 ASCII 代码,或者是包含在引号中的串。例如:65 和“A”都被用来代表大写字母 A。
要点:下表中的一些值并不是对于所有的计算机都有效,对于那些不同的数值,请检查您的计算机文档。
键代码 SHIFT+ 代码 CTRL+ 代码 ALT+ 代码
------------------------------------------------------------------
F1 0;59 0;84 0;94 0;104
F2 0;60 0;85 0;95 0;105
F3 0;61 0;86 0;96 0;106
F4 0;62 0;87 0;97 0;107
F5 0;63 0;88 0;98 0;108
F6 0;64 0;89 0;99 0;109
F7 0;65 0;90 0;100 0;110
F8 0;66 0;91 0;101 0;111
F9 0;67 0;92 0;102 0;112
F10 0;68 0;93 0;103 0;113
F11 0;133 0;135 0;137 0;139
F12 0;134 0;136 0;138 0;140
A 97 65 1 0;30
B 98 66 2 0;48
C 99 66 3 0;46
D 100 68 4 0;32
E 101 69 5 0;18
F 102 70 6 0;33
G 103 71 7 0;34
H 104 72 8 0;35
I 105 73 9 0;23
J 106 74 10 0;36
K 107 75 11 0;37
L 108 76 12 0;38
M 109 77 13 0;50
N 110 78 14 0;49
O 111 79 15 0;24
P 112 80 16 0;25
Q 113 81 17 0;16
R 114 82 18 0;19
S 115 83 19 0;31
T 116 84 20 0;20
U 117 85 21 0;22
V 118 86 22 0;47
W 119 87 23 0;17
X 120 88 24 0;45
Y 121 89 25 0;21
Z 122 90 26 0;44
1 49 33 -- 0;120
2 50 64 0 0;121
3 51 35 -- 0;122
4 52 36 -- 0;123
5 53 37 -- 0;124
6 54 94 30 0;125
7 55 38 -- 0;126
8 56 42 -- 0;126
9 57 40 -- 0;127
0 48 41 -- 0;129
- 45 95 31 0;130
= 61 43 -- 0;131
[ 91 123 27 0;26
] 93 125 29 0;27
92 124 28 0;43
; 59 58 -- 0;39
' 39 34 -- 0;40
, 44 60 -- 0;51
. 46 62 -- 0;52
/ 47 63 -- 0;53
` 96 126 -- 0;41 
通 常,在DOS提示符下按ESC键时,屏幕会显示一个反斜杠(\)并把光标移到下一行.这时可以使用PROMPT命令.假如现在DOS提示符是$P$G,想 要清屏,就可键入: PROMPT=$E[2J $P$G 这里$E即表示按ESC键,然后再把提示符改回$P$G,不然在执行每条命令前就都要清屏了.
在用EDIT编辑批处理文件时可用下列方法输入ESC字符.首先同时按下Ctrl和P键 然后再按下作方括号,此时屏幕出现一左箭头(?说明已输入了ESC字符.之后必须放 开Ctrl再次按下方括号键开始ANSI命令.



今天看见有人在论坛问ASCII特殊字符的问题,就google了一份比较全面的资料。值得说明的是,文中介绍的内容不仅在shell(或者说commond line)有效,还可以用在C程序中,不过要将Esc用0x1b表示,比如:
        printf("%c[2J", 0x1b);      /* Clean screen */
        printf("%c[0;0H", 0x1b);    /* Move cursor to (0,0) */

=====================================================================================


 BBS支持ANSI/3.64控制码标准,ANSI控制码均以Esc[作为控制码的开始标志。 
 BBS中ESC字符的输入方法是[ESC]+[ESC],在编辑器中用"*"代表。 
 *是按两下ESC键或者按ALT+027(数字键盘)两次,在Cterm里面也可以按Insert。 
 签名档有六行的行数限制(所谓六行,是输入字符占六行 而不是显示字符占六行), 
 BBS目前的每行字符限制在240左右,因而一个签名档总共可使用大约1320个字符。 
 做活动签名档就要掌握ANSI光标控制码,原理和动画制作一样。 
 DOS支持大部分ANSI控制码,在DOS下使用请看c:>help ansi.sys(无效命令?) 
 下面是BBS常用ANSI控制码表,注意控制符区分大小写。 
 DEVICE=ANSI.SYS 

                     BBS  常  用  ANSI  控  制  码  表 

  【光标控制】 

 ┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ 
 ┃  控  制  码  ┃                说                    明                  ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃    [X;YH     ┃  将光标移至第 X 行,第 Y 列的位置。                      ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [nA      ┃  光标上移 n 列。<<若至屏幕顶端则无效>>                   ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [nB      ┃  光标下移 n 列。<<若至屏幕底端则无效>>                   ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [nC      ┃  光标向右 n 行。<<若已至屏幕最右端则无效>>               ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [nD      ┃  光标向左 n 行。<<若已至屏幕最左端则无效>>               ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [6n      ┃  报告光标位置。                                          ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [s       ┃  保存目前的光标位置。                                    ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [u       ┃  取出保存的光标位置来使用。                              ┃ 
 ┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 
  注: BBS 系统一屏显示大约是 25*80,后两行为 BBS 系统占用,实际只有 23*80。 

  【屏幕控制】 

 ┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ 
 ┃  控  制  码  ┃                说                    明                  ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [2J      ┃  清除屏幕。 <<功能和 DOS 的 CLS 命令一样>>               ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [K       ┃  将光标位置开始至本列结束的所有字符清除。                ┃ 
 ┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 

  【显示字符属性控制】 

 ┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ 
 ┃  控  制  码  ┃                说                    明                  ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃              ┃Ⅰ设定显示字符的属性状态。                                ┃ 
 ┃[n1;n2;......m┃Ⅱ若有两个以上的属性状态要设定则以分号将代码(n1;n2;..)隔开┃ 
 ┃              ┃Ⅲ除非重新设定,否则原设定之属性一直被保留。              ┃ 
 ┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 

 ┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ 
 ┃   代   码    ┃                意                    义                  ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃      0       ┃  所有属性 OFF,即返回正常显示模式 (Normal)               ┃ 
 ┃      1       ┃  高亮度显示 (Bright)                                     ┃ 
 ┃      4       ┃  加下划线 (Underline) (注1)                              ┃ 
 ┃      5       ┃  闪烁显示 (Flash) (注2)                                  ┃ 
 ┃      7       ┃  反相显示 (Inverse)                                      ┃ 
 ┃      8       ┃  不可见 (Invisable)                                      ┃ 
 ┣━━━┳━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃ 前景 ┃ 背景 ┃                颜                    色                  ┃ 
 ┣━━━╋━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃  30  ┃  40  ┃  黑色                                                    ┃ 
 ┃  31  ┃  41  ┃  红色                                                    ┃ 
 ┃  32  ┃  42  ┃  绿色                                                    ┃ 
 ┃  33  ┃  43  ┃  黄色                                                    ┃ 
 ┃  34  ┃  44  ┃  蓝色                                                    ┃ 
 ┃  35  ┃  45  ┃  紫红色                                                  ┃ 
 ┃  36  ┃  46  ┃  青蓝色                                                  ┃ 
 ┃  37  ┃  47  ┃  白色                                                    ┃ 
 ┗━━━┻━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 
  注1: 老版本的Sterm不支持下画线功能,现在的1.266+版本支持下划线,且下划线的颜 
       色和前景色一致。例如,前景色是绿色的,则下划线也是绿色。而使用Cterm看到 
       的下划线一律都为白色,不论前景色是什么颜色。 
  注2: Sterm和Cterm显示效果略有不同。本来背景色是没有高亮的,但是Sterm 1.266版 
       本却有显示高亮背景的本领,就是通过这个相反显示函数。例如高亮红色前景和 
       低亮的黄色背景,如果你用Sterm 1.266版来看的话,加了反显函数之后那个例子 
       变成了高亮的红色背景和低亮的黄色前景,就是前景色和背景色完全互换,连亮 
       度也互换。但如果用Cterm来看得话,加了反显函数之后的例子是低亮的红色背景 
       和高亮的黄色前景,颜色互换,亮度不换,因为Cterm无法显示出高亮的背景。 

  【字体控制】 

 ┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ 
 ┃  控  制  码  ┃                说                    明                  ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [0I      ┃  恢复正常字体                                            ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [1I      ┃  宋体                                                    ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [2I      ┃  黑体                                                    ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [3I      ┃  楷体                                                    ┃ 
 ┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 

  【特殊控制】 

 ┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ 
 ┃  控  制  码  ┃                说                    明                  ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [G       ┃  响铃                                                    ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [nU      ┃  URL确认(n个字节)                                        ┃ 
 ┣━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ 
 ┃     [nM      ┃  延时(n为微秒数) <<Cterm和Sterm 1.266+版本才支持此功能>> ┃ 
 ┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 

                       特  殊  的  上  色  控  制  符 

 ·:号 
 其实就是当你回文章时系统在文章前所加的:,它会使文章颜色变为暗青色,与*[0;36m 
 效果相同,这个冒号必须是英文输入法状态下的冒号,而且必须处在该行第一的位置, 
 冒号后可以有空格,该符号只对本行内容有效。 

 ·【 在……………… 】格式 
 这种格式也要处在该行的起始位置,效果与*[1;33m的效果相同,【后要空上一个英文字 
 符的位置,那个“在”字不能少,而且必须是第一个字,后面的内容任意。该符号对从 
 此行开始的一屏内所有文字都有效。 

 ·>号 
 效果和:号完全一样,也是要放在该行的起始位置,>号后面可以不空格,也可以加空格, 
 效果都一样。该符号仅对本行的内容有效。 

 ·==>号 
 效果相当于*[1;33m,位置也要位于该行起始位置,==>后面不需空格,加空格也可以, 
 该符号对从此开始一屏内的内容均有效。 

                               色  彩  常  识 

 ·三原色: 红黄蓝 
   红+黄=橙  黄+蓝=绿  红+蓝=紫  红+黄+蓝=黑 

 ·三原光:红绿蓝 
   红+绿=黄  绿+蓝=青  红+蓝=紫  红+绿+蓝=白 

 ·计算机上的颜色系统都是按照三原光设置的。 

                  BBS  系  统  的  一  些  操  作  方  法 

 ·特殊命令: (请先按 ESC, 再选择以下项目) 

   (I)汇入档案      (E)汇出档案      (C)观看彩色编辑成果 
   (B)设定背景色彩  (F)设定前景色彩  (R)还原色彩 
   (ESC)彩色控制码  (M)区块处理      (L)开或关讯息栏 

 ·一般命令: 

   ^W,^X  存档後结束编辑   丨 ^L,^G  重绘屏幕 
   ^Q     显示辅助画面     丨 ^Z     查看或回信息 

 ·游标移动指令: 

   ^P,↑    向上    |^N,↓    向下    |^R,←    向左   |^V,→    向右 
   ^A,Home  至行首  |^E, End  至行末  |^B,PgUp  上一页 |^F,PgDn  下一页 
   ^S       档案开头|^T       档案结尾|Esc-s    搜寻   |Esc-n    继续搜寻 
   Esc-g    跳到##行│ 

 ·删除命令: 

   ^O,Ins  切换插入/置换模式 丨 ^H,BS  删除左方字符  丨 ^Y  删除一行 
   ^D,DEL  删除目前字符      丨 ^K     删至行末      丨 

 ·区块处理: 

   ^U  区块标定  丨 ^C  复制区块  丨  Esc-d  清除区块 丨 Esc-Q  清除标定 

             ANSI.SYS and NANSI.SYS Functions  -  ANSI x3.64 

      ESC[y,xH     Cursor position y,x 
      ESC[nA       Cursor Up n lines 
      ESC[nB       Cursor Down n lines 
      ESC[nC       Cursor Forward n characters 
      ESC[nD       Cursor Backward n characters 
      ESC[y;xf     Cursor position y,x (less frequently used) 
      ESC[y;xR     Cursor position report y,x 
      ESC[6n       Device status report (cursor pos)(n is constant 'n') 
      ESC[s        Save cursor position 
      ESC[u        Restore cursor position 
      ESC[2J       Erase display 
      ESC[K        Erase to end of line 
      ESC[nL       Inserts n blank lines at cursor line.   (NANSI) 
      ESC[nM       Deletes n lines including cursor line.  (NANSI) 
      ESC[n@       Inserts n blank chars at cursor.        (NANSI) 
      ESC[nP       Deletes n chars including cursor char.  (NANSI) 
      ESC[nP       Deletes n chars including cursor char.  (NANSI) 
      ESC[n;ny     Output char translate                   (NANSI) 
                   When first char is encountered in output request, it 
                   is replaced with the second char.  When no parameters 
                   are given, all chars are reset. 
      ESC["str"p   Keyboard Key Reassignment. The first char of str gives 
                   the key to redefine; the rest of the string is the 
                   key's new value.  To specify unprintable chars, give 
                   the ASCII value of the char outside of quotes, as a 
                   normal parm.   IBM function keys are two byte strings. 

                   Ex:  ESC[0;";dir a:";13;p 

                   redefines F1 to have the value "dir a:" followed by CR. 
                   If no parameters given, all keys are reset to their 
                   default values.  Single or double quotes are valid. 

      ESC[n;n;...nm  Set Graphics Rendition is used to set attributes as 
        well as foreground and background colors.  If multiple parameters 
        are used, they are executed in sequence, and the effects are 
        cumulative. 'n' is one of the following attributes or colors: 
        0  All attributes off       5  Blink 
        1  Bold                     7  Reverse Video 
        2  Dim                      8  Invisible 
        4  Underline 

      Foreground colors          Background colors 

         30  Black                  40  Black 
         31  Red                    41  Red 
         32  Green                  42  Green 
         33  Yellow                 43  Yellow 
         34  Blue                   44  Blue 
         35  Magenta                45  Magenta 
         36  Cyan                   46  Cyan 
         37  White                  47  White 

      ESC[=nh     Set mode (see screen modes for n) 
      ESC[=nl     Reset Mode (see screen modes for n) 

          Screen modes are similar to those found in the IBM BIOS: 

             0   text 40x25 Black & White 
             1   text 40x25 Color 
             2   text 80x25 Black & White 
             3   text 80x25 Color 
             4   320x200 4 bits/pixel 
             5   320x200 1 bit/pixel 
             6   640x200 1 bit/pixel 
             7   cursor wrap 
            13   320x200 4 bits/pixel (EGA) 
            14   640x200 4 bits/pixel (EGA) 
            16   640x350 4 bits/pixel (EGA)


相关链接:  http://tianweixing.blog.163.com/blog/static/9878341200912032249225/

                       http://bbs.51cto.com/thread-524399-1-1.html