我知道在bash终端中一种可靠的改变颜色的方法是使用ANSI转义序列.例如:
echo -e "\033[0;31mbrown text\033[0;00m"
Run Code Online (Sandbox Code Playgroud)
应该输出
brown text (in brown)
Run Code Online (Sandbox Code Playgroud)
有没有办法使用ANSI的特定RGB集输出颜色?说我要亮红色:
echo -e "**\033[255:0:0m**red text\033[0;00m"
Run Code Online (Sandbox Code Playgroud)
这种事情存在吗?
我只是想使用标准的bash.
Qix*_*Qix 63
这里既有答案不能不提真彩 ANSI支持的8bpc颜色.这将获得OP最初要求的RGB颜色.
而不是;5
,使用;2
和指定以下三个控制段中的R,G和B值(0-255).
\x1b[38;2;40;177;249m
Run Code Online (Sandbox Code Playgroud)
printf "\x1b[38;2;40;177;249mTRUECOLOR\x1b[0m\n"
Run Code Online (Sandbox Code Playgroud)
在我的机器上,XTerm愉快地输出了正确的颜色; 虽然,在现代RGB颜色之前的终端之后建模的终端通常不支持truecolor - 在使用转义码的这个特定变体之前,请确保您知道目标.
我还想指出的38
和;5
/ ;2
-蓝冰提到的那个38
路线,然后5
改变颜色.这有点不正确.
38
是xterm-256扩展前景色码; 30
- 37
只是16色前景码(通过转义码控制的亮度1
在某些系统和可以说支持90
- 97
非标准"亮"的代码)被所有VT100 /兼容的xterm色终端所支持.
的;2
和;5
表示的颜色的格式,最终告诉终端多少多个序列传送到拉:;5
仅需要1更多的控制段指定一个8位格式(如蓝雪提到的),以及;2
指定要求3一个完整的24位的RGB格式控制段.
这些扩展模式在技术上是 "未记录的",并且完全是实现定义的.据我所知并可以研究,它们不受 ANSI委员会的管辖.
对于如此倾向,5;
(256色)格式从16种原始颜色(暗/亮,30-37和90-97)开始,颜色为0-15.
进行216种颜色(16-231)由偏移16的3bpc RGB值形成,打包成单个值.
最终的24种颜色(232-256)是灰度,从比黑色稍浅的阴影开始,最深处比白色稍暗.有些仿真器将这些步骤解释为256 / 24
所有三个通道上的()线性增量,但我遇到了一些似乎明确定义这些值的仿真器.
这是一个Javascript函数,它执行这样的转换,考虑到所有的灰色.
function rgbToAnsi256(r, g, b) {
// we use the extended greyscale palette here, with the exception of
// black and white. normal palette only has 4 greyscale shades.
if (r === g && g === b) {
if (r < 8) {
return 16;
}
if (r > 248) {
return 231;
}
return Math.round(((r - 8) / 247) * 24) + 232;
}
var ansi = 16
+ (36 * Math.round(r / 255 * 5))
+ (6 * Math.round(g / 255 * 5))
+ Math.round(b / 255 * 5);
return ansi;
}
Run Code Online (Sandbox Code Playgroud)
因此,在某种程度上,你可以计算出从8到3位减少他们为了形成要在不支持真彩色终端编程这么做事件256编码值从最初的RGB值256种ANSI颜色.
Blu*_*Ice 44
这确实存在,但是不是OP寻找的16777216(256 ^ 3)种颜色,而是有256(6 ^ 3)种均匀分布的颜色,在256种颜色的较大集合中.例:
echo -e "\033[38;5;208mpeach\033[0;00m"
Run Code Online (Sandbox Code Playgroud)
这将输出一个令人愉快的桃色文本.
拆开此命令:\ 033 [38; 5; 208m
该\ 033是换码.的[38; 将命令指向前台.如果要改变背景颜色,请使用[48; 代替.的5; 只是改变颜色的序列的一部分.而最重要的部分,208米,选择实际的颜色.
这种逃逸可以在256色序列中找到3组颜色.第一组是基本的"糖果"颜色组,或值0-15.然后有一个分布式颜色的立方体,从16-231.最后,有一个详细的灰度设置从232-255.
您可以在此处找到包含所有这些值的表格:http://bitmote.com/index.php?post/2012/11/19/Using-ANSI-Color-Codes-to-Colorize-Your-Bash-Prompt-上的Linux#256%20(8位)%20Colors
这会起作用
echo -e "**\033[38;2;255;0;0m**red text\033[0;00m"
Run Code Online (Sandbox Code Playgroud)
格式:"\033[38;2;R;G;Bm"
归档时间: |
|
查看次数: |
23359 次 |
最近记录: |