在大多数终端上,可以使用\033 ANSI转义序列对输出进行着色。
我正在寻找所有支持的颜色和选项的列表(如明亮和闪烁)。
由于支持它们的终端之间可能存在差异,因此我主要对xterm兼容终端支持的序列感兴趣。
在大多数终端上,可以使用\033 ANSI转义序列对输出进行着色。
我正在寻找所有支持的颜色和选项的列表(如明亮和闪烁)。
由于支持它们的终端之间可能存在差异,因此我主要对xterm兼容终端支持的序列感兴趣。
当前回答
对于那些除了上述语言之外没有得到正确结果的人,如果你使用c#将文本打印到控制台(终端)窗口,你应该将“\033”替换为“\x1b”。在Visual Basic中是Chrw(27)。
其他回答
如何:
编码字符集的控制函数,第5版(1991年6月) 定义颜色控制代码的标准,显然xterm也支持该标准。
SGR 38和48最初由ECMA-48保留,但几年后在联合ITU、IEC和ISO标准中得到了补充,该标准分为几个部分,并(在许多其他方面)记录了直接颜色和索引颜色的SGR 38/48控制序列:
信息技术。开放文档体系结构(ODA)和交换格式:文档结构T.412。国际电信联盟。 信息技术。开放文档体系结构和交换格式:字符内容体系结构T.416。国际电信联盟。 信息技术。开放文档架构(ODA)和交换格式:字符内容架构ISO / IEC 8613 - 6:1994。国际标准化组织。
在维基百科的ANSI转义码表中有一列xterm
还有一些更有趣的和相关的信息。
http://wiki.bash-hackers.org/scripting/terminalcodes http://www.termsys.demon.co.uk/vtansi.htm(死了;archive.org快照) http://invisible-island.net/xterm/ctlseqs/ctlseqs.html http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/c327.html https://wiki.archlinux.org/index.php/Color_Bash_Prompt
对于那些除了上述语言之外没有得到正确结果的人,如果你使用c#将文本打印到控制台(终端)窗口,你应该将“\033”替换为“\x1b”。在Visual Basic中是Chrw(27)。
您正在寻找的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)。
如下表所示,您可以设置大量的文本属性,如粗体、字体、下划线等。
字体效果
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) |
2比特的颜色
你已经有这个了!
4比特的颜色
实现终端颜色的标准从有限的(4位)选项开始。下表列出了各种终端模拟器所使用的背景色和前景色的RGB值:
使用上面的方法,你可以在绿色背景上创建红色文本(但是为什么呢?)
\033[31;42m
11种颜色(插曲)
在他们的书《基本颜色术语:它们的普遍性和演变》中,Brent Berlin和Paul Kay使用从20种不同语言中收集的数据,从一系列语系中确定了11种可能的基本颜色类别:白色、黑色、红色、绿色、黄色、蓝色、棕色、紫色、粉红色、橙色和灰色。
柏林和凯发现,在少于最多11种颜色类别的语言中,颜色遵循特定的进化模式。这种模式如下:
All languages contain terms for black (cool colours) and white (bright colours). If a language contains three terms, then it contains a term for red. If a language contains four terms, then it contains a term for either green or yellow (but not both). If a language contains five terms, then it contains terms for both green and yellow. If a language contains six terms, then it contains a term for blue. If a language contains seven terms, then it contains a term for brown. If a language contains eight or more terms, then it contains terms for purple, pink, orange or gray.
这可能就是为什么故事贝奥武夫只包含黑色、白色和红色。这也可能是为什么《圣经》中没有蓝色。《荷马的奥德赛》中,黑色出现了近200次,白色出现了约100次。红色出现15次,而黄色和绿色只出现10次。(详情请点击此处)
语言之间的差异也很有趣:请注意,英语和汉语使用了大量不同的颜色词。然而,深入研究这些语言会发现,每种语言都以不同的方式使用颜色。(更多信息)
一般来说,人类语言中颜色的命名、使用和分组是令人着迷的。现在,回到节目上。
8位(256)颜色
技术进步了,有了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
这里列出了对“真彩色”终端的支持。
以上大部分内容来自维基百科页面“ANSI转义代码”。
一个方便的提醒自己的脚本
因为我经常在试图记住什么颜色是什么,我有一个方便的脚本叫做:~/bin/ ansi_colors:
#!/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[49m - 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 off
:top
cls
echo [101;93m STYLES [0m
echo ^<ESC^>[0m [0mReset[0m
echo ^<ESC^>[1m [1mBold[0m
echo ^<ESC^>[4m [4mUnderline[0m
echo ^<ESC^>[7m [7mInverse[0m
echo.
echo [101;93m NORMAL FOREGROUND COLORS [0m
echo ^<ESC^>[30m [30mBlack[0m (black)
echo ^<ESC^>[31m [31mRed[0m
echo ^<ESC^>[32m [32mGreen[0m
echo ^<ESC^>[33m [33mYellow[0m
echo ^<ESC^>[34m [34mBlue[0m
echo ^<ESC^>[35m [35mMagenta[0m
echo ^<ESC^>[36m [36mCyan[0m
echo ^<ESC^>[37m [37mWhite[0m
echo.
echo [101;93m NORMAL BACKGROUND COLORS [0m
echo ^<ESC^>[40m [40mBlack[0m
echo ^<ESC^>[41m [41mRed[0m
echo ^<ESC^>[42m [42mGreen[0m
echo ^<ESC^>[43m [43mYellow[0m
echo ^<ESC^>[44m [44mBlue[0m
echo ^<ESC^>[45m [45mMagenta[0m
echo ^<ESC^>[46m [46mCyan[0m
echo ^<ESC^>[47m [47mWhite[0m (white)
echo.
echo [101;93m STRONG FOREGROUND COLORS [0m
echo ^<ESC^>[90m [90mWhite[0m
echo ^<ESC^>[91m [91mRed[0m
echo ^<ESC^>[92m [92mGreen[0m
echo ^<ESC^>[93m [93mYellow[0m
echo ^<ESC^>[94m [94mBlue[0m
echo ^<ESC^>[95m [95mMagenta[0m
echo ^<ESC^>[96m [96mCyan[0m
echo ^<ESC^>[97m [97mWhite[0m
echo.
echo [101;93m STRONG BACKGROUND COLORS [0m
echo ^<ESC^>[100m [100mBlack[0m
echo ^<ESC^>[101m [101mRed[0m
echo ^<ESC^>[102m [102mGreen[0m
echo ^<ESC^>[103m [103mYellow[0m
echo ^<ESC^>[104m [104mBlue[0m
echo ^<ESC^>[105m [105mMagenta[0m
echo ^<ESC^>[106m [106mCyan[0m
echo ^<ESC^>[107m [107mWhite[0m
echo.
echo [101;93m COMBINATIONS [0m
echo ^<ESC^>[31m [31mred foreground color[0m
echo ^<ESC^>[7m [7minverse foreground ^<-^> background[0m
echo ^<ESC^>[7;31m [7;31minverse red foreground color[0m
echo ^<ESC^>[7m and nested ^<ESC^>[31m [7mbefore [31mnested[0m
echo ^<ESC^>[31m and nested ^<ESC^>[7m [31mbefore [7mnested[0m
pause > nul
goto top