CONSOLE_CODESCONSOLE_CODES
Section: Linux Programmer's Manual (4)
Updated: October 31, 1996
Index Return to Main Contents
NAME 名称
控制终端代码 - Linux 控制终端转义和控制序列
DESCRIPTION 描述
Linux 控制台实现了 VT102和ECMA-48/ISO 6429/ANSI X3.64 终端控制的子集 , 这个子集很庞大 , 当然还有
Linux 自己私有的控制序列 , 以改变颜色配置 , 字符集映像 , 等等 . 在下面将要给出的表格中 , 第二列为指定的功
能给出了 ECMA-48 或者 DEC助记符 ( 如果是后者会在前面加有 DEC前缀 ). 没有给出助记符的序列既不是 ECMA-48
也不是 VT102字符 .
在所有标准输出进程执行完毕 , 并且一个字符流被送到控制台驱动程序准备显示出来的时候 , 所发生的第一件
事就是将进程使用的代码转换成显示使用的代码 .
如果控制台工作于 UTF-8 模式 , 那么输入的字节会首先编码成 16位的 Unicode 代码 . 如果不是 UTF-8模式 , 那
么每个字节会按照当前的字符映射表完成转换 ( 转换成 Unicode 编码的值 ). 参看下面将要讨论的 CHARACTER
SETS 一章 .
在一般情况下 ,Unicode 代码被转换成为存储在视频存储器中的字体索引 , 这样对应的具体字符 ( 字符存储在
视频 ROM中) 就显示在屏幕上了 . 注意使用 Unicode 编码允许我们同时使用 512 种不同的字体 ( 和计算机硬
件有关 ).
如果当前的 Unicode 代码是一个控制字符 , 或者系统目前正在处理一个转义序列 , 处理的方式有些特别 . 它不
会被转换成字体索引 , 也不会直接显示在屏幕上 . 它可能控制光标的移动 , 或者实现其它控制功能 . 参看下面的
LINUX CONSOLE CONTROLS 一节所进行的讨论 .
一般来说直接在程序中插入终端控制字符并不是很好 .Linux 支持终端兼容的 terminfo (5)(5) 数据库 . 除了
直接插入控制和转义序列 , 也可以使用象 ncurses (3),(3), tput (1),(1), 或者 reset (1).(1). 这样的显示库或者工
具.
LINUX CONSOLE CONTROLS Linux终端控制
这一段描述了所有在 Linux 控制台下使用的调用特殊功能的控制字符和转义序列 ( 例如 . 任何不在当前光标处
插入可见字符的序列 ).
Control characters 控制字符
当一个字符在通过字符映射表转换之前含有以下 14个代码之一的时候表明它是一个控制字符 . 00(NUL),07
(BEL),08(BS),09(HT),0a(LF),0b(VT), 0c(FF),0d(CR),0e(SO),0f(SI),18(CAN),1a(SUB), 1b(ESC),7f
(DEL). 我们可以通过设置 ` 显示控制字符 ' 模式 ( 见下文 ) 以允许 07,09,0b, 18,1a,7f 像普通字符一样显示
在屏幕上 . 另一方面 , 在UTF-8模式下所有位于 00-1f 之间的代码都被认为是控制字符 , 而不管是否处于 ` 显示
控制字符 ' 模式 .
一个控制字符会立刻生效 , 然后被丢弃 ( 即使是在转义序列中间 ), 之后转义序列才继续处理下一个字符 . ( 在
任何情况下 ,ESC都表示一个新的转义序列的开始 , 可能导致 前一个序列的非正常终止 ,CAN和SUB 终止任何转
义序列 .) 可识别的控制字符是 BEL,BS,HT,LF,VT,FF,CR,SO,SI,CAN, SUB,ESC,DEL,CSI. 他们的功能如下 .:
评论0