歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux_ANSI控制碼

Linux_ANSI控制碼

日期:2017/2/28 14:36:06   编辑:Linux教程

ANSI控制碼

簡介

ANSI控制碼用於在字符顯示系統中控制光標移動和字符色彩等,常用於BBS系統中。

ANSI ESCAPE SEQUENCES又稱為VT100系列控制碼,國內譯為ANSI控制碼。顧名思義,需要VT100系列終端的支持,當然現在已經不在局限於VT100了,包括xterm,linux都能很好完成。

ANSI控制碼開始的標志都為ESC[,ESC對應ASCII碼表的033(八進制),linux命令echo用-e啟用轉義,\033來輸入ESC,\033[31m即為ESC[31m。

格式

echo:-e 用來開啟echo中的轉義,\e 或 \033 來輸出Esc符號

格式: echo -e "\033[字背景顏色;字體顏色m字符串\033[0m"

注意m後面緊跟字符串。

例如:

echo -e "\033[41;36m something here \033[0m"

其中41的位置代表底色, 36的位置是代表字的顏色

那些ascii code 是對顏色調用的始末

\033[ ; m ……\033[0m

*****************************************************

\033[0m 關閉所有屬性

\033[1m 設置高亮度

\03[4m 下劃線

\033[5m 閃爍

\033[7m 反顯

\033[8m 消隱

\033[30m -- \033[37m 設置前景色

\033[40m -- \033[47m 設置背景色

\033[nA 光標上移n行

\03[nB 光標下移n行

\033[nC 光標右移n行

\033[nD 光標左移n行

\033[y;xH設置光標位置

\033[2J 清屏

\033[K 清除從光標到行尾的內容

\033[s 保存光標位置

\033[u 恢復光標位置

\033[?25l 隱藏光標

\33[?25h 顯示光標

*****************************************************

字背景顏色范圍:40---49
40:黑

41:深紅

42:綠

43:黃色

44:藍色

45:紫色

46:深綠

47:白色

字顏色范圍:30---39
30:黑

31:紅

32:綠

33:黃

34:藍色

35:紫色

36:深綠

37:白色

*****************************************************

顯示字元屬性控制

[n1;n2;......m

Ⅰ設定顯示字元的屬性狀態;

Ⅱ若有兩個以上的屬性狀態要設定則以分號將代碼(n1;n2;..)隔開;

Ⅲ除非重新設定,否則原設定之屬性一直被保留;

*****************************************************

用途

ANSI控制碼倚賴終端,不是倚賴語言,所以在shell,perl,c裡應用均沒有問題;

至於ANSI控制碼到底有哪些作用,恐怕要發揮想像了,比如裝扮終端,用顏色警示或分類等等。

示例

顏色與代碼對應表

代碼:

#!/bin/bash

#

for(( i=40;i<47;i++ ))

{

for(( j=30;j<37;j++ ))

{

#echo $i,$j

echo -en"\033["$i";"$j"m" $i";"$j"m\033[0m"

}

echo ""

}

前面提到字背景顏色和字體顏色范圍分別是40-49和30-39,但似乎38和39、48和49並沒有差異(不會是因為我色弱吧...),將i和j的范圍調整可得:

代碼:

#!/bin/bash

#

for(( i=40;i<50;i++ ))

{

for(( j=30;j<40;j++ ))

{

#echo $i,$j

echo -en"\033["$i";"$j"m" $i";"$j"m\033[0m"

}

echo ""

}

其他字體屬性:

BTW:

對光標的控制還沒應用到,此處暫不說明。

Copyright © Linux教程網 All Rights Reserved