ANSI最全介紹linux終端字體改變顏色等

ANSI轉義序列

維基百科,自由的百科全書

因爲國內不能訪問wiki並且國內關於ANSI的介紹都是簡短的不能達到,不夠完整因此轉wiki到此博客,方便國內用戶參考,原地址(https://zh.wikipedia.org/wiki/ANSI%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97

 

ANSI轉義序列是一種帶內信號英語In-band signaling轉義序列標準,用於控制視頻文本終端上的光標位置、顏色和其餘選項。在文本中嵌入肯定的字節序列,大部分以ESC轉義字符和"["字符開始,終端會把這些字節序列解釋爲相應的指令,而不是普通的字符編碼php

ANSI序列是在二十世紀七十年代引入的標準,用以取代特定於終端供應商的序列,並在二十世紀八十年代早期開始在計算機設備市場上普遍使用。與早期缺乏光標移動功能的系統相比,新生的電子公告板系統使用ANSI序列改進其顯示。正是由於這個緣由,ANSI序列變成了全部製造商共同採用的標準。git

在21世紀,儘管硬件文本終端已經愈來愈少了,但ANSI標準依然存在,由於大多數終端模擬器會對部分ANSI轉義序列進行解釋。一個值得注意的例外是,在微軟Windows 10更新TH2以前,Windows操做系統Win32控制檯是不支持ANSI轉義序列的。shell

歷史

最初,幾乎每一個視頻終端製造商都各自添加了特定的轉義序列用於執行一些特殊操做,好比把光標置於屏幕上的某個位置。舉例來講,VT52英語VT52終端容許經過發送ESC字符、y字符,後面跟上兩個等於x,y位置的數值加上32的字符(這是爲了從ASCII空格字符開始,並避開控制字符),將光標置於屏幕上的x,y位置。編程

因爲這些序列對於不一樣的終端並不同,所以人們不得不開發了一些複雜的庫(好比termcap英語termcap)和實用程序(好比tput英語tput),以便程序可使用同一套API應對各類終端。另外,在不少終端中須要藉助字符的二進制值發送數字(如行和列)。對於某些編程語言,以及內部不使用ASCII的系統來講,把數字轉換爲正確的字符經常是有困難的,甚至徹底作不到。緩存

ANSI標準試圖解決這些問題。標準制訂了一種全部終端共享的指令集,並要求用ASCII的數字字符傳遞全部數值信息。該系列的第一個標準是1976年經過的ECMA-48。它是一系列字符編碼標準的延續,其中第一個是從1965年的ECMA-6英語ECMA-6,一個7標準,ISO 646就源自此標準。「ANSI轉義序列」的名稱能夠追溯到1979年ANSI採用ANSI X3.64。此外,ANSI X3L2委員會與ECMA委員會TC 1合做制訂了一個幾乎如出一轍的標準。以上兩個標準合併爲ISO 6429的國際標準[1]。1994年,ANSI取消了其標準,以支持國際標準。app

第一個支持這個標準的流行視頻終端是1978年推出的Digital VT100英語VT100[2]。這個終端在市場上很是成功,引起了各類各樣的仿製品,其中最先和最流行的是1979年的Zenith Z-19英語Zenith Z-89[3]。其餘品牌還有Qume英語Qume QVT-108,Televideo英語Televideo TVI-970,Wyse英語Wyse WY-99GT。另外,許多其餘品牌的終端也不一樣程度地兼容可選的「VT100」、「VT103」或「ANSI」模式。 隨着愈來愈多的軟件(尤爲是BBS系統)普及,愈來愈多的軟件依賴轉義序列起做用,致使幾乎全部新的終端和終端模擬器都支持了此標準。編程語言

1981年,ANSI X3.64被美國政府採用(FIPS 86)。後來,美國政府中止複製行業標準,因此FIPS 86又被撤回了[4]ide

ECMA-48已經經歷了屢次更新換代,當前是從1991年開始的第5版。它也被ISOIEC用做標準ISO/IEC 6429函數

平臺支持

隨着諸多BBS和線上服務普遍使用ANSI,到20世紀80年代中期,ANSI幾乎獲得了全平臺支持。儘管許多操做系統在標準文本輸出中愈來愈多地支持ANSI,但大多數狀況下是以終端模擬器的形式(例如Unix上的xterm,或MacOS上的OS X TerminalZTerm英語ZTerm,以及IBM PC上的許多通訊程序)。測試

UnixAmigaOS都在操做系統中包含了對ANSI的一些支持,致使在這些平臺上運行的程序普遍使用ANSI。 類Unix操做系統能夠經過像termcap英語termcapcurses庫英語curses (programming library)之類的庫來生成ANSI代碼,許多軟件使用這些庫升級顯示方式。這些庫也應該支持非ANSI終端,可是如今不多有人測試,因此極可能已經不起做用了[來源請求]。許多遊戲和shell腳本直接輸出ANSI序列(如彩色的提示信息),所以沒法在不支持ANSI的終端上運行。

AmigaOS不只支持輸出到屏幕上的文本使用ANSI序列,打印機驅動程序也支持(用AmigaOS的專有擴展),並將它們轉換爲與特定打印機實際通訊所需的代碼[5]

儘管ANSI很普及,卻並無獲得全平臺支持。好比原始的「經典」Mac OS就沒有內置對ANSI的支持,再好比Atari ST使用的是VT52改編的命令系統,用一些擴展程序支持顏色顯示[6]

Windows和DOS

MS-DOS 1.x不支持ANSI或任何其餘轉義序列,只有少數控制字符(BEL、CR、LF、BS)能夠由底層BIOS解釋,因此幾乎[nb 1]不可能作出任何全屏應用程序。全部顯示效果都必須經過BIOS調用,或者直接控制IBM PC硬件來完成,調用速度很是慢。

DOS 2.0引入了添加設備驅動程序來支持ANSI轉義序列的功能(事實上的標準是ANSI.SYS,但也使用了ANSI.COM[7]、NANSI.SYS[8]和ANSIPLUS.EXE等其餘程序。由於繞過了BIOS,因此這些程序的速度比之前快了很多)。但因爲實際運行速度仍然比較慢,以及默認並無安裝,因此仍是不多獲得利用。應用程序每每仍是繼續用直接控制硬件的方式來顯示所需的文本[來源請求]。ANSI.SYS和相似的驅動程序繼續在Windows 9x上工做,直到Windows Me,在NT派生系統中用於在NTVDM英語NTVDM下執行的16位傳統程序。

Win32控制檯徹底不支持ANSI轉義序列。不過有一些控制檯的替代品或者附加軟件具備解釋程序輸出的ANSI轉義序列的功能,例如JP Software的TCC(之前的4NT)、Michael J. Mefford的ANSI.COM、Jason Hood的ANSICON[9]和Maximus5的ConEmu。有一個Python軟件包[10]在內部解釋了打印文本中的ANSI轉義序列,將它們轉換爲系統調用來操縱顏色和光標位置,以便更容易地將使用ANSI的Python代碼移植到Windows。

2016年,在Windows 10發佈「Threshold 2」[11]時,微軟開始在控制檯應用程序中支持ANSI轉義序列,使得從Unix移植軟件或者遠程訪問Unix變得更容易。

轉義序列

序列具備不一樣的長度。全部序列都以ASCII字符ESC(27 / 十六進制 0x1B)開頭,第二個字節則是0x40–0x5F(ASCII @A–Z[\]^_)範圍內的字符。[12]:5.3.a

標準規定,在8位環境中,這兩個字節的序列能夠合併爲0x80-0x9F範圍內的單個字節(詳情請參閱C1控制字符集)。可是,在現代設備上,這些代碼一般用於其餘目的,例如UTF-8的一部分或CP-1252字符,所以並不使用這種合併的方式。

除ESC以外的其餘C0代碼(一般是BEL,BS,CR,LF,FF,TAB,VT,SO和SI)在輸出時也可能會產生與某些控制序列類似或相同的效果。

一些ANSI轉義序列(不完整列表)
序 列 C1 名稱 做用
ESC N 0x8e SS2 – Single Shift Two 從其中一個替代字符集中選擇一個字符。在xterm中,SS2選擇G2字符集,SS3選擇G3字符集。[13]
ESC O 0x8f SS3 – Single Shift Three
ESC P 0x90 DCS – 設備控制字符串(Device Control String) 控制設備。在xterm中,這個序列的使用包括定義用戶自定義的密鑰,以及請求或設置Termcap/Terminfo數據。[13]
ESC [ 0x9b CSI - 控制序列導入器(Control Sequence Introducer) 大部分有用的序列,請參閱下一節。結束於ASCII 64到126 (@~/十六進制0x40到0x7E).[12]
ESC \ 0x9c ST – 字符串終止(String Terminator) 終止其餘控件(包括APC,DCS,OSC,PM和SOS)中的字符串。[12]:8.3.143
ESC ] 0x9d OSC – 操做系統命令(Operating System Command) 啓動操做系統使用的控制字符串。OSC序列與CSI序列類似,但不限於整數參數。一般,這些控制序列由ST終止[12]:8.3.89。在xterm中,它們也可能被BEL終止[13]。例如,在xterm中,窗口標題能夠這樣設置:OSC 0;this is the window title BEL
ESC X 0x98 SOS – 字符串開始(Start of String) 引用由ST終止的一串文本的參數。這些字符串控制序列的用途由應用程序[12]:8.3.2,8.3.128或私有規則來定義[12]:8.3.94。這些函數沒有實現,參數被xterm忽略[13]
ESC ^ 0x9e PM – 私有消息(Privacy Message)
ESC _ 0x9f APC – 應用程序命令(Application Program Command)
ESC c   RIS – 重置爲初始狀態(Reset to Initial State) 將設備重置爲原始狀態。可能包括(若是適用的話):重置圖形格式,清除製表符,重置爲默認字體等等。

按下鍵盤上的特殊鍵,以及輸出xterm CSI、DCS或OSC序列,經常用於產生從終端發送到計算機的CSI,DCS或OSC序列,就像用戶使用鍵盤輸入的同樣。

 

CSI序列

CSI序列由ESC [、若干個(包括0個)「參數字節」、若干個「中間字節」,以及一個「最終字節」組成。各部分的字符範圍以下:

CSI序列在ESC [以後各個組成部分的字符範圍[12]:5.4
組成部分 字符範圍 ASCII
參數字節 0x30–0x3F 0–9:;<=>?
中間字節 0x20–0x2F 空格、!"#$%&'()*+,-./
最終字節 0x40–0x7E @A–Z[\]^_`a–z{|}~

全部常見的序列都只是把參數用做一系列分號分隔的數字,如1;2;3。缺乏的數字視爲0(如1;;3至關於中間的數字是0,ESC[m這樣沒有參數的狀況至關於參數爲0)。某些序列(如CUU)把0視爲1,以使缺乏參數的狀況下有意義:F.4.2

一部分字符定義是「私有」的,以便終端製造商能夠插入他們本身的序列而不與標準相沖突。包括參數字節<=>?的使用,或者最終字節0x70–0x7F(p–z{|}~)例如VT320英語VT320序列CSI?25hCSI?25l的做用是打開和關閉光標的顯示。

當CSI序列含有超出0x20–0x7E範圍的字符時,其行爲是未定義的。這些非法字符包括C0控制字符(範圍0–0x1F)、DEL(0x7F),以及高位字節。

一些ANSI控制序列(不完整列表)
代碼 名稱 做用

 

CSI n A CUU – 光標上移(Cursor Up) 光標向指定的方向移動n(默認1)格。若是光標已在屏幕邊緣,則無效。

 

CSI n B CUD – 光標下移(Cursor Down)

 

CSI n C CUF – 光標前移(Cursor Forward)

 

CSI n D CUB – 光標後移(Cursor Back)
CSI n E CNL – 光標移到下一行(Cursor Next Line) 光標移動到下面第n(默認1)行的開頭。(非ANSI.SYS英語ANSI.SYS
CSI n F CPL – 光標移到上一行(Cursor Previous Line) 光標移動到上面第n(默認1)行的開頭。(非ANSI.SYS)
CSI n G CHA – 光標水平絕對(Cursor Horizontal Absolute) 光標移動到第n(默認1)列。(非ANSI.SYS)

 

CSI n ; m H CUP – 光標位置(Cursor Position) 光標移動到第n行、第m列。值從1開始,且默認爲1(左上角)。例如CSI ;5HCSI 1;5H含義相同;CSI 17;HCSI 17HCSI 17;1H三者含義相同。

 

CSI n J ED – 擦除顯示(Erase in Display) 清除屏幕的部分區域。若是n是0(或缺失),則清除從光標位置到屏幕末尾的部分。若是n是1,則清除從光標位置到屏幕開頭的部分。若是n是2,則清除整個屏幕(在DOS ANSI.SYS中,光標還會向左上方移動)。若是n是3,則清除整個屏幕,並刪除回滾緩存區中的全部行(這個特性是xterm添加的,其餘終端應用程序也支持)。

 

CSI n K EL – 擦除行(Erase in Line) 清除行內的部分區域。若是n是0(或缺失),清除從光標位置到該行末尾的部分。若是n是1,清除從光標位置到該行開頭的部分。若是n是2,清除整行。光標位置不變。

 

CSI n S SU – 向上滾動(Scroll Up) 整頁向上滾動n(默認1)行。新行添加到底部。(非ANSI.SYS)

 

CSI n T SD – 向下滾動(Scroll Down) 整頁向下滾動n(默認1)行。新行添加到頂部。(非ANSI.SYS)

 

CSI n ; m f HVP – 水平垂直位置(Horizontal Vertical Position) 同CUP。

 

CSI n m SGR – 選擇圖形再現(Select Graphic Rendition) 設置SGR參數,包括文字顏色。CSI後能夠是0或者更多參數,用分號分隔。若是沒有參數,則視爲CSI 0 m(重置/常規)。

 

CSI 5i 打開輔助端口 啓用輔助串行端口,一般用於本地串行打印機

 

CSI 4i 關閉輔助端口 禁用輔助串行端口,一般用於本地串行打印機

 

CSI 6n DSR – 設備狀態報告(Device Status Report) ESC[n;mR(就像在鍵盤上輸入)嚮應用程序報告光標位置(CPR),其中n是行,m是列。

 

CSI s SCP – 保存光標位置(Save Cursor Position) 保存光標的當前位置。

 

CSI u RCP – 恢復光標位置(Restore Cursor Position) 恢復保存的光標位置。

選擇圖形再現(SGR)參數

代碼 做用 備註
0 重置/正常 關閉全部屬性。
1 粗體或增長強度  
2 弱化(下降強度) 未普遍支持。
3 斜體 未普遍支持。有時視爲反相顯示。
4 下劃線  
5 緩慢閃爍 低於每分鐘150次。
6 快速閃爍 MS-DOS ANSI.SYS;每分鐘150以上;未普遍支持。
7 反顯 前景色與背景色交換。
8 隱藏 未普遍支持。
9 劃除 字符清晰,但標記爲刪除。未普遍支持。
10 主要(默認)字體  
11–19 替代字體 選擇替代字體{\displaystyle n-10}
20 尖角體 幾乎無支持。
21 關閉粗體或雙下劃線 關閉粗體未普遍支持;雙下劃線幾乎無支持。
22 正常顏色或強度 不強不弱。
23 非斜體、非尖角體  
24 關閉下劃線 去掉單雙下劃線。
25 關閉閃爍  
27 關閉反顯  
28 關閉隱藏  
29 關閉劃除  
30–37 設置前景色 參見下面的顏色表。
38 設置前景色 下一個參數是5;n2;r;g;b,見下。
39 默認前景色 由具體實現定義(按照標準)。
40–47 設置背景色 參見下面的顏色表。
48 設置背景色 下一個參數是5;n2;r;g;b,見下。
49 默認背景色 由具體實現定義(按照標準)。
51 Framed  
52 Encircled  
53 上劃線  
54 Not framed or encircled  
55 關閉上劃線  
60 表意文字下劃線或右邊線 幾乎無支持。
61 表意文字雙下劃線或雙右邊線
62 表意文字上劃線或左邊線
63 表意文字雙上劃線或雙左邊線
64 表意文字着重標誌
65 表意文字屬性關閉 重置6064的全部效果。
90–97 設置明亮的前景色 aixterm(非標準)。
100–107 設置明亮的背景色 aixterm(非標準)。

顏色

3/4位

初始的規格只有8種顏色,只給了它們的名字。SGR參數30-37選擇前景色,40-47選擇背景色。至關多的終端將「粗體」(SGR代碼1)實現爲更明亮的顏色而不是不一樣的字體,從而提供了8種額外的前景色,但一般狀況下並不能用於背景色,雖然有時候反顯(SGR代碼7)能夠容許這樣。例如:在白色背景上顯示黑色文字使用ESC[30;47m,顯示紅色文字用ESC[31m,顯示明亮的紅色文字用ESC[1;31m。重置爲默認顏色用ESC[39;49m(某些終端不支持),重置全部屬性用ESC[0m。後來的終端新增了功能,能夠直接用90-97和100-107指定「明亮」的顏色。

當硬件開始使用8位DAC時,多個軟件爲這些顏色名稱分配了24位的代碼。下面的圖表顯示了發送到DAC的一些經常使用硬件和軟件的值。[來源請求]

名稱 前景色代碼 背景色代碼 VGA[nb 2] CMD[nb 3] Terminal.app PuTTY mIRC xterm X英語X11 color names[nb 4] Ubuntu[nb 5]
30 40 0,0,0 1,1,1
31 41 170,0,0 128,0,0 194,54,33 187,0,0 127,0,0 205,0,0 255,0,0 222,56,43
32 42 0,170,0 0,128,0 37,188,36 0,187,0 0,147,0 0,205,0 0,255,0 57,181,74
33 43 170,85,0[nb 6] 128,128,0 173,173,39 187,187,0 252,127,0 205,205,0 255,255,0 255,199,6
34 44 0,0,170 0,0,128 73,46,225 0,0,187 0,0,127 0,0,238[14] 0,0,255 0,111,184
品紅 35 45 170,0,170 128,0,128 211,56,211 187,0,187 156,0,156 205,0,205 255,0,255 118,38,113
36 46 0,170,170 0,128,128 51,187,200 0,187,187 0,147,147 0,205,205 0,255,255 44,181,233
37 47 170,170,170 192,192,192 203,204,205 187,187,187 210,210,210 229,229,229 255,255,255 204,204,204
亮黑(灰) 90 100 85,85,85 128,128,128 129,131,131 85,85,85 127,127,127 127,127,127   128,128,128
亮紅 91 101 255,85,85 255,0,0 252,57,31 255,85,85 255,0,0 255,0,0   255,0,0
亮綠 92 102 85,255,85 0,255,0 49,231,34 85,255,85 0,252,0 0,255,0 144,238,144 0,255,0
亮黃 93 103 255,255,85 255,255,0 234,236,35 255,255,85 255,255,0 255,255,0 255,255,224 255,255,0
亮藍 94 104 85,85,255 0,0,255 88,51,255 85,85,255 0,0,252 92,92,255[15] 173,216,230 0,0,255
亮品紅 95 105 255,85,255 255,0,255 249,53,248 255,85,255 255,0,255 255,0,255   255,0,255
亮青 96 106 85,255,255 0,255,255 20,240,240 85,255,255 0,255,255 0,255,255 224,255,255 0,255,255
亮白 97 107 255,255,255 255,255,255 233,235,235 255,255,255 255,255,255 255,255,255   255,255,255

8位

隨着256色查找表在顯卡上愈來愈常見,相應的轉義序列也增長了,以從預約義的256種顏色中選擇:[16]

   選擇前景色
   選擇背景色
     0-  7:標準顏色(同)
     8- 15:高強度顏色(同)
    16-231:6 × 6 × 6 立方(216色): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)
   232-255:從黑到白的24階灰度色
ESC[ … 38;5;<n> … mESC[ … 48;5;<n> … mESC [ 30–37 mESC [ 90–97 m

ITU的T.416信息技術-開放文檔體系結構(ODA)和交換格式:字符內容體系結構[17]使用「:」做爲分隔符:

   選擇前景色
   選擇背景色
ESC[ … 38:5:<n> … mESC[ … 48:5:<n> … m
256色模式 — 前景色:ESC[38;5;#m   背景色:ESC[48;5;#m
標準色 高強度色
 0   1   2   3   4   5   6   7     8   9  10 11 12 13 14 15
216色
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
灰度色
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

24位[編輯]

隨着16位到24位顏色的「真彩色」顯卡的普及,Xterm[13]、KDE的Konsole[18],以及全部基於libvte的終端[19](包括GNOME終端英語GNOME Terminal)支持了ISO-8613-3的24位前景色和背景色設置。[16]

   選擇RGB前景色
   選擇RGB背景色
ESC[ … 38;2;<r>;<g>;<b> … mESC[ … 48;2;<r>;<g>;<b> … m

做爲ISO / IEC國際標準8613-6採用的ITU的T.416信息技術-開放文檔體系結構(ODA)和交換格式:字符內容體系結構[20]給出了一個彷佛不太受支持的替代版本:

   選擇RGB前景色
   選擇RGB背景色
ESC[ … 38:2:<Color-Space-ID>:<r>:<g>:<b>:<unused>:<CS tolerance>:<Color-Space: 0="CIELUV"; 1="CIELAB">mESC[ … 48:2:<Color-Space-ID>:<r>:<g>:<b>:<unused>:<CS tolerance>:<Color-Space: 0="CIELUV"; 1="CIELAB">m

請注意,這裏使用了保留的「:」字符來分隔子選項,這多是在實際實現中形成混淆的始做俑者。它還使用「3」做爲第二個參數來指定使用青-品紅-黃方案的方案,「4」用於青-品紅-黃-黑的方案,後者使用上面標記爲「unused」(「未使用」)的位置做爲黑色組件。

還要注意,許多識別「:」做爲分隔符的實現錯誤地忽視了色彩空間標識符參數,並所以改變了其他部分的位置。

示例

CSI 2 J — 清除屏幕、(在某些設備上)把光標置於1,1位置(左上角)。

CSI 32 m — 使文字呈綠色。在MS-DOS上,通常綠色是暗淡的綠色,能夠用CSI 1 m啓用粗體使其變成明亮的綠色,或者將二者合併爲CSI 32 ; 1 m。MS-DOS ANSI.SYS用粗體狀態使字符變亮,閃爍狀態(經過INT 10, AX 1003h, BL 00h)使背景色變成明亮模式。MS-DOS ANSI.SYS並不直接支持SGR代碼90–97和100–107。

CSI 0 ; 6 8 ; "DIR" ; 13 p — 從新分配F10鍵的功能爲發送字符串「DIR」和回車符到鍵盤緩存中,在DOS命令行裏會顯示當前目錄的內容(僅MS-DOS ANSI.SYS)。這種序列有時用於「ANSI炸彈英語ANSI Bomb」。這是一個私用編碼(如字母p所示),用非標準的擴展使其包含一個字符串參數。若是按標準,會認爲字母D是序列的末尾。

CSI s — 保存光標的位置。用序列CSI u會把光標重置回這個位置。假設當前的光標位置是7(y)、10(x)。序列CSI s會保存這兩個數值。如今能夠把光標移動到其餘位置,好比用序列CSI 20 ; 3 HCSI 20 ; 3 f把光標移動到20(y)、3(x)。如今若是用序列CSI u,光標會回到7(y)、10(x)。某些終端須要使用DEC序列ESC 7/ESC 8,這獲得了更普遍的支持。

使用Shell腳本的示例[編輯]

ANSI轉移代碼經常用於UNIX和類UNIX終端,以提供語法高亮功能。例如,在兼容的終端上,如下ls命令按類型對文件和目錄的名稱進行顏色編碼。

ls --color

用戶能夠在腳本中使用轉義碼,將其做爲標準輸出標準錯誤輸出的一部分。例如,下面的GNU sed命令經過反顯「WARN」開頭的單詞的行,以及使用暗紅色背景色和亮黃色前景色顯示以「ERR」開頭的單詞(字母大小寫被忽略)的行來修飾make命令的輸出。突出顯示了設置ANSI代碼的部分。[21]

make 2>&1 | sed -e 's/.*\bWARN.*/\x1b[7m&\x1b[0m/i' -e 's/.*\bERR.*/\x1b[93;41 m&\x1b[0m/i'

如下Bash函數會使終端閃爍(經過交替發送反相和正常顯示模式代碼),直到用戶按下任意鍵[22]。這個函數能夠用於當一個冗長的命令終止時提醒用戶,用法如make; flasher[23]

flasher () { while true; do printf \\e[?5h; sleep 0.1; printf \\e[?5l; read -s -n1 -t1 && break; done; }

下面這個命令能夠重置控制檯,相似現代Linux系統的reset命令。然而,即便在較早的Linux系統和其餘(非Linux)UNIX變體上,也應該能起做用。

printf \\033c
相關文章
相關標籤/搜索