我正在寻找一个控制代码,使用ANSI或其他标准在终端中创建橙色文本,这可能吗?我只看到黄色和红色可用,我不认为你可以混合红色和黄色相同的角色:)
严格来说,不是:ANSI从未标准化任何称为"橙色"的东西(对于终端的控制序列).有些终端可以做到这一点,但这超出了标准的范围.
xterm(参见XTerm控制序列)使用遵循"ANSI"(实际上很久以前退出标准化)ECMA-48语法的控制序列.
橙色可以由RGB代码组成.例如,X的rgb.txt文件将其定义为
255 165 0 orange
Run Code Online (Sandbox Code Playgroud)
(鲜红色加上适度亮绿色).要在shell脚本中获取它,可以使用
#!/bin/sh
printf "\033[48:2:255:165:0m%s\033[m\n" "Hello world"
printf "\033[48;2;255;165;0m%s\033[m\n" "Hello world"
Run Code Online (Sandbox Code Playgroud)
这两行之间的区别在于使用冒号作为参数分隔符(ECMA-48有一些措辞,对于xterm中使用的子参数,这在早期被忽略了).为了兼容性(包括从xterm的早期实现中复制的终端),xterm对两者都表示尊重.
xterm还支持称为动态颜色的"非ANSI"方案,它接受颜色名称,但设置整个屏幕的文本颜色.
最后,xterm可以指定显示颜色而不是闪烁,粗体,斜体,反转和下划线(例如,参见讨论colorBD).这是通过X资源设置完成的(在转义序列的帮助下).分配给这些资源的颜色可以通过相同的88/256颜色扩展设置.
256 色调色板更加兼容并且更易于使用。橙子有很多种:
printf "\033[48:5:208m%s\033[m\n" "Hello world" # bright orange
printf "\033[48:5:166m%s\033[m\n" "Hello world" # darker orange
Run Code Online (Sandbox Code Playgroud)
您的终端下的冒号可能需要是分号。将第一个数字更改为 38,以设置前景。第二个数字 (5) 表示使用 256 调色板,第三个数字选择索引颜色。