Answers:
您要查找的ANSI转义序列是“选择图形渲染”子集。所有这些都具有以下形式
\033[XXXm
其中XXX
是一系列用分号分隔的参数。
可以在C语言中用红色,粗体和带下划线的文字(下面将讨论许多其他选项)来写:
printf("\033[31;1;4mHello\033[0m");
在C ++中,您将使用
std::cout<<"\033[31;1;4mHello\033[0m";
在Python3中,您将使用
print("\033[31;1;4mHello\033[0m")
在Bash中,您将使用
echo -e "\033[31;1;4mHello\033[0m"
其中第一部分使文本为红色(31
),粗体(1
),带下划线的(4
),最后一部分清除所有这些内容(0
)。
如下表所述,您可以设置许多文本属性,例如粗体,字体,下划线和&c。(StackOverflow不允许您在答案中放置适当的表格是不是很愚蠢?)
╔══════════╦════════════════════════════════╦═════════════════════════════════════════════════════════════════════════╗
║ Code ║ Effect ║ Note ║
╠══════════╬════════════════════════════════╬═════════════════════════════════════════════════════════════════════════╣
║ 0 ║ Reset / Normal ║ all attributes off ║
║ 1 ║ Bold or increased intensity ║ ║
║ 2 ║ Faint (decreased intensity) ║ Not widely supported. ║
║ 3 ║ Italic ║ Not widely supported. Sometimes treated as inverse. ║
║ 4 ║ Underline ║ ║
║ 5 ║ Slow Blink ║ less than 150 per minute ║
║ 6 ║ Rapid Blink ║ MS-DOS ANSI.SYS; 150+ per minute; not widely supported ║
║ 7 ║ [[reverse video]] ║ swap foreground and background colors ║
║ 8 ║ Conceal ║ Not widely supported. ║
║ 9 ║ Crossed-out ║ Characters legible, but marked for deletion. Not widely supported. ║
║ 10 ║ Primary(default) font ║ ║
║ 11–19 ║ Alternate font ║ Select alternate font `n-10` ║
║ 20 ║ Fraktur ║ hardly ever supported ║
║ 21 ║ Bold off or Double Underline ║ Bold off not widely supported; double underline hardly ever supported. ║
║ 22 ║ Normal color or intensity ║ Neither bold nor faint ║
║ 23 ║ Not italic, not Fraktur ║ ║
║ 24 ║ Underline off ║ Not singly or doubly underlined ║
║ 25 ║ Blink off ║ ║
║ 27 ║ Inverse off ║ ║
║ 28 ║ Reveal ║ conceal off ║
║ 29 ║ Not crossed out ║ ║
║ 30–37 ║ Set foreground color ║ See color table below ║
║ 38 ║ Set foreground color ║ Next arguments are `5;<n>` or `2;<r>;<g>;<b>`, see below ║
║ 39 ║ Default foreground color ║ implementation defined (according to standard) ║
║ 40–47 ║ Set background color ║ See color table below ║
║ 48 ║ Set background color ║ Next arguments are `5;<n>` or `2;<r>;<g>;<b>`, see below ║
║ 49 ║ Default background color ║ implementation defined (according to standard) ║
║ 51 ║ Framed ║ ║
║ 52 ║ Encircled ║ ║
║ 53 ║ Overlined ║ ║
║ 54 ║ Not framed or encircled ║ ║
║ 55 ║ Not overlined ║ ║
║ 60 ║ ideogram underline ║ hardly ever supported ║
║ 61 ║ ideogram double underline ║ hardly ever supported ║
║ 62 ║ ideogram overline ║ hardly ever supported ║
║ 63 ║ ideogram double overline ║ hardly ever supported ║
║ 64 ║ ideogram stress marking ║ hardly ever supported ║
║ 65 ║ ideogram attributes off ║ reset the effects of all of 60-64 ║
║ 90–97 ║ Set bright foreground color ║ aixterm (not in standard) ║
║ 100–107 ║ Set bright background color ║ aixterm (not in standard) ║
╚══════════╩════════════════════════════════╩═════════════════════════════════════════════════════════════════════════╝
你已经有这个了!
实现端子颜色的标准从有限的(4位)选项开始。下表列出了各种终端仿真器用于这些背景和前景颜色的RGB值:
使用以上方法,您可以使用以下方法在绿色背景上制作红色文本(但是为什么呢?):
\033[31;42m
布伦特·柏林(Brent Berlin)和保罗·凯(Paul Kay)在他们的《基本颜色术语:它们的普遍性和演变》一书中,使用了从来自多种语言族的二十种不同语言中收集的数据来识别11种可能的基本颜色类别:白色,黑色,红色,绿色,黄色,蓝色,棕色,紫色,粉红色,橙色和灰色。
柏林和凯发现,在少于最多11种颜色类别的语言中,颜色遵循特定的进化模式。此模式如下:
这可能就是为什么故事Beowulf仅包含黑色,白色和红色的原因。这也可能就是圣经不包含蓝色的原因。荷马的奥德赛包含黑色几乎200倍,白色大约100倍。红色出现15次,而黄色和绿色出现10次。(更多信息在这里)
语言之间的差异也很有趣:请注意,英语和汉语使用了大量不同颜色的单词。但是,深入研究这些语言表明每种语言都以不同的方式使用颜色。(更多信息)
一般来说,人类语言中颜色的命名,使用和分组是很有趣的。现在,回到表演。
技术先进,并且提供了256种预选颜色的表格,如下所示。
使用上面的这些,您可以像这样制作粉色文本:
\033[38;5;206m #That is, \033[38;5;<FG COLOR>m
并使用
\033[48;5;57m #That is, \033[48;5;<BG COLOR>m
而且,当然,您可以将这些结合起来:
\033[38;5;206;48;5;57m
8位颜色的排列方式如下:
0x00-0x07: standard colors (same as the 4-bit colours)
0x08-0x0F: high intensity colors
0x10-0xE7: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)
0xE8-0xFF: grayscale from black to white in 24 steps
现在我们生活在未来,可以使用以下方式获得完整的RGB光谱:
\033[38;2;<r>;<g>;<b>m #Select RGB foreground color
\033[48;2;<r>;<g>;<b>m #Select RGB background color
因此,您可以使用
\033[38;2;255;82;197;48;2;155;106;0mHello
以上大部分内容来自Wikipedia页面“ ANSI转义代码 ”。
由于我经常想记住什么颜色是什么,所以我有一个方便的脚本叫做~/bin/ansi_colours
::
#!/usr/bin/python
print "\\033[XXm"
for i in range(30,37+1):
print "\033[%dm%d\t\t\033[%dm%d" % (i,i,i+60,i+60);
print "\033[39m\\033[39m - Reset colour"
print "\\033[2K - Clear Line"
print "\\033[<L>;<C>H OR \\033[<L>;<C>f puts the cursor at line L and column C."
print "\\033[<N>A Move the cursor up N lines"
print "\\033[<N>B Move the cursor down N lines"
print "\\033[<N>C Move the cursor forward N columns"
print "\\033[<N>D Move the cursor backward N columns"
print "\\033[2J Clear the screen, move to (0,0)"
print "\\033[K Erase to end of line"
print "\\033[s Save cursor position"
print "\\033[u Restore cursor position"
print " "
print "\\033[4m Underline on"
print "\\033[24m Underline off"
print "\\033[1m Bold on"
print "\\033[21m Bold off"
此打印
echo -e "\033[38;05;34;1mHi"
和echo -e "\033[38;05;34m\033[1mHi"
工作对我来说,虽然抗锯齿字体效果已经造成颜色的外观下,在终端我加粗是在测试这个略有变化。
\033[
38和48开头的SGR()代码进行分隔,否则应保留为子分隔符,尽管主要来源尚不清楚:ecma-international.org/publications/files/ECMA-ST/Ecma -048.pdf和itu.int/rec/…。也有一些解释忘记了(16M色RGB)/ (16M色CMY)/ (??? CMYK)形式的颜色空间ID- 例如,它应该是:
2
3
4
\033[38:2::255:255:255m
用于白色16M前景而不是\033[38:2:255:255:255m
!
怎么样:
ECMA-48-编码字符集的控制功能,第5版(1991年6月) -定义颜色控制代码的标准,显然xterm也支持该标准。
SGR 38和48最初是由ECMA-48保留的,但几年后又在ITU,IEC和ISO联合标准中充实了,该标准分为几个部分,其中(包括很多其他内容)记录了SGR 38/48种直接颜色和索引颜色的控制序列:
维基百科页面上此表中的 xterm列包含ANSI转义代码
它与您的终端绝对相关。VTE不支持眨眼,如果使用gnome-terminal
,tilda
,guake
,terminator
,xfce4-terminal
等根据VTE,你会不会有闪烁。
如果在VTE上使用或要使用闪烁,则必须使用xterm
。
您可以将infocmp命令与终端名称一起使用:
#infocmp vt100
#infocmp xterm
#infocmp vte
例如 :
# infocmp vte
# Reconstructed via infocmp from file: /usr/share/terminfo/v/vte
vte|VTE aka GNOME Terminal,
am, bce, mir, msgr, xenl,
colors#8, cols#80, it#8, lines#24, ncv#16, pairs#64,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J,
cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
el=\E[K, enacs=\E)0, home=\E[H, hpa=\E[%i%p1%dG, ht=^I,
hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m,
is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C,
kb2=\E[E, kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB,
kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kf1=\EOP,
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P,
kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R,
kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~,
kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~,
kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, kf4=\EOS,
kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khome=\EOH,
kich1=\E[2~, kind=\E[1;2B, kmous=\E[M, knp=\E[6~,
kpp=\E[5~, kri=\E[1;2A, kslt=\E[4~, meml=\El, memu=\Em,
op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, ritm=\E[23m,
rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs1=\Ec,
rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e\017%;,
sgr0=\E[0m\017, sitm=\E[3m, smacs=^N, smam=\E[?7h,
smcup=\E7\E[?47h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,