ANSI设备驱动器

时间:2021-11-15 02:03:59

这个是在《C/C++程序员实用大全·精华版:C/C++最佳编程指南》一书中提到了"ANSI设备驱动器"。

在shell编程中也是类似的

要是通过彩色化提示符来增加个性化,就要用到转义序列。 转义序列就是一个让 shell 执行一个特殊步骤的控制指令。 转义序列通常都是以 ESC 开头(这也是它的命名原因)。 在 shell 里表示为 ^[。这种表示法需要一点时间去适应, 也可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 27, = 用八进制表示的 33)。要直接在 shell 里面输入转义序列我们需要先按 ctrl-v:CTRL-v ESC。

转义序列

功能

示例

Esc[x;yH

把光标放置在x行y列上

Esc[10;25H

Esc[xA

上移光标x行

Esc[1A

Esc[xB

下移光标x行

Esc[2B

Esc[yC

右移光标y列

Esc[10C

Esc[yD

左移光标y列

Esc[10D

Esc[S

存储光标当前的位置

Esc[S

Esc[U

恢复光标位置

Esc[U

Esc[2J

清屏,将光标移至起始位置

Esc[2J

Esc[K

清除至行尾

Esc[K

 

C 语言示例

用绿色打印"Hello Word":

#include <stdio.h>

int main(void){

const char *const green = "\033[0;40;32m";

const char *const normal = "\033[0m";

printf("%sHello World%s\n", green, normal);

return 0;

}

 

另外一个有用的转义序列是 printf("\033[2J"),它和 system(clear) 完成的功能一样。但是可以不需要头文件 unistd.h。

使用printf("\033[1K") 可以删除一行。