我在PS1提示符中使用了几种颜色,例如

3]01;31\] # pink
3]00m\]   # white
3]01;36\] # bold green
3]02;36\] # green
3]01;34\] # blue
3]01;33\] # bold yellow


在哪里可以找到我可以使用的颜色代码列表?

我看了一下Colorize Bash Console Color,但它没有回答我有关实际代码列表的问题。

如果还有一种可读性更好的表格也很好。

另请参阅https://unix.stackexchange.com/a/127800/10043

评论

注意,这里的最终\]实际上不是颜色序列的一部分;它的目的是专门设置提示(关于这一点,我在回答的末尾添加了几段)。 “如果还有一种更具可读性的表格,那就太好了。” ->在自己的答案中剪切n'粘贴是执行此操作的一种方法。

#1 楼

这些是ANSI转义序列;该链接指向颜色代码图表,但该Wikipedia页面上还有其他有趣的内容。并非所有人都能在(例如)普通的Linux控制台上工作。

这是不正确的:


3]00m\] # white


0将终端重置为其默认设置(可能是白色)。白色前景的实际代码是37。此外,结尾处的转义右括号(\])并不是颜色序列的一部分(有关设置提示的目的,请参阅下面的最后几段)。 >
请注意,某些GUI终端允许您指定自定义的配色方案。这会影响输出。

这里有一个列表,其中添加了我之前从未见过的7种前景色和7种背景色,但它们似乎可以使用:

# Foreground colors
90   Dark gray  
91   Light red  
92   Light green    
93   Light yellow   
94   Light blue 
95   Light magenta  
96   Light cyan  

# Background colors
100  Dark gray  
101  Light red  
102  Light green    
103  Light yellow   
104  Light blue 
105  Light magenta  
106  Light cyan 


此外,如果您拥有256色GUI终端(我想现在已经是其中的大多数),则可以从此图表中应用颜色: >使用左下角的数字选择这些序列的ANSI序列,将38;5;用作前景,48;5;用作背景,然后选择颜色编号,例如:

echo -e "\033[48;5;95;38;5;214mhello world\033[0m"


请给我淡橙色的棕褐色(意思是颜色表是近似值)。

您可以在此图表1中看到颜色,因为它们很容易出现在终端上:

#!/bin/bash

color=16;

while [ $color -lt 245 ]; do
    echo -e "$color: \033[38;5;${color}mhello\033[48;5;${color}mworld\033[0m"
    ((color++));
done  


输出是不言自明的。

某些系统通过xterm-256color中的一些shell代码在256色终端上将$ TERM变量设置为/etc/profile。在其他情况下,您应该能够配置终端以使用此功能。这样会让TUI应用程序知道256种颜色,并允许您在~/.bashrc中添加以下内容:

if [[ "$TERM" =~ 256color ]]; then
     PS1="MyCrazyPrompt..."
fi


请注意,当您在提示时,您应该将它们放在转义的方括号中,例如:

PS1="\[3[01;32m\]MyPrompt: \[3[0m\]"


请注意,\的内部颜色序列没有散逸,而封闭的内部。后者的目的是向外壳指示封闭的序列不计入提示的字符长度。如果该计数是错误的,则当您回滚历史记录时会发生奇怪的事情,例如,如果它太长,则最后一个滚动字符串的多余长度将显示在提示中,并且您将不能退格(请注意,与提示符的用法相同)。设置),则应将其设置为带单引号的文字字符串,例如:或[提示转义-这不是问题的主题,但可以在\d下的\D{format}中找到。还有许多其他有用的转义符,例如,当前目录的man bash,当前用户的PROMPTING等。


1。该图表的主要部分颜色16-231(注意,它们不是按数字顺序排列)是6 x 6 x 6 RGB颜色立方体。 “颜色立方体”指的是可以使用三维阵列(一个轴用于红色,一个轴用于绿色,一个轴用于蓝色)表示RGB颜色空间的事实。此处多维数据集中的每种颜色都可以表示为6 x 6 x 6数组中的坐标,因此可以计算出图表中的索引:

PS1='\[3[01;32m\]$(date): \[3[0m\]'
图表中索引为16的立方体为黑色(RGB 0、0、0)。您可以在shell脚本中使用以下公式:

    16 + R * 36 + G * 6 + B


评论


我建议原始的问询者使用测试图来测试颜色的可用性。这里有一个:robmeerman.co.uk/unix/…或者,如果不信任Internet上的Shell脚本,则可以很容易地做到这一点。

– IBr
14年4月12日在16:52

@IBr有趣的一点。仅查看所有颜色是一项非常简单的任务,因此我需要在上面执行几行bash操作。

–金锁
2014年4月12日17:05



此处找到的颜色参考脚本可能会更有用,它虽然紧凑但仍具有代码,并且为了清晰起见将每种颜色分开。

– Michael Plotke
2014年5月1日20:27

请不要将回声用于不以破折号(-)开头的文字文本以外的任何内容。不可携带。所有常见的实现都违反该标准,该标准规定不应支持任何选项。更糟糕的是,它们前后不一致。您应该改用printf。 (并且不要将变量嵌入printf语句中,请使用%s。)

–nyuszika7h
2014年5月4日15:08



colortest-256以很好的紧凑形式列出了xterm调色板。 (如果缺少,请apt-install install colortest)

– Volker Siegel
2014年7月3日,下午3:13

#2 楼

看起来至少有些列表是:

txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
bakgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset


基于https://wiki.archlinux.org/index.php/Color_Bash_Prompt

评论


感谢您最终提供了实际可用的字符串。

– lbutlr
19年2月28日在0:48

#3 楼

我编写了一个bash函数,可以显示所有颜色,如果有帮助的话。
您可以使用颜色来更改颜色,就像我在下面用我的名字所做的那样。

colorgrid()输出:


我通过执行以下操作在.bash_profile中更改了我的名字:要大胆。

评论


我很高兴分享了此信息。今天就派上用场了,它修复了bashrc和终端安装程序,以减少可怕程度。我也看到过约会-明天是2年前。

–等离子
18年5月27日在0:44

那种彩色打印功能真是令人赞叹,我为选择低劣的显示器而选择体面的颜色时遇到了很多麻烦,而您刚刚度过了我的一天。

– ibarrond
20年5月1日在12:19

四年前不久,才发现这个。感谢您的分享!

– kungphu
20年5月12日在7:19

这真的很方便。推荐:-)

– jackdbd
20年5月18日在9:58

#4 楼

另一个脚本,例如TAFKA'goldilocks'发布的用于显示颜色的脚本,可能更实用一些,仅供参考:正在使用。为此,它有点过头,但是现在您可以通过参数控制显示方式的许多方面。希望它们都是自我解释。

评论


像杀伤力一样没有杀戮:)

– Navin
14年4月13日在5:04

#5 楼

export PS1=\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n$ \[\e[0m\]