如何获取256色调色板终端颜色对应的RGB数值
终端调色板色号转RGB实现方案
实现原理
绝大多数兼容Xterm规范的现代终端模拟器都支持通过OSC 4转义序列查询指定调色板索引对应的RGB值,无需截屏取色。
具体实现
你可以直接在bash中定义如下函数,即可实现你需要的palette-to-rgb命令:
palette-to-rgb() { # 校验输入参数 if [[ $# -ne 1 || ! $1 =~ ^[0-9]+$ || $1 -lt 0 || $1 -gt 255 ]]; then echo "用法: palette-to-rgb <色号0-255>" >&2 return 1 fi local color_idx=$1 # 向终端发送调色板查询请求 echo -en "\e]4;${color_idx};?\e\\" # 读取终端返回的响应,超时0.1秒避免不支持的终端卡住 local resp IFS=';' read -r -s -t 0.1 -d '\' _ _ resp < /dev/tty if [[ -z $resp ]]; then echo "错误:当前终端不支持调色板查询或响应超时" >&2 return 1 fi # 解析返回的rgb:rrrr/gggg/bbbb格式的结果 local r_hex=${resp:4:2} g_hex=${resp:9:2} b_hex=${resp:14:2} # 输出十六进制格式的颜色值,需要rgb()格式可替换为下一行的注释内容 echo "#${r_hex}${g_hex}${b_hex}" # echo "rgb($((16#${r_hex})), $((16#${g_hex})), $((16#${b_hex})))" }
使用方法
- 将上述函数代码复制到你的
~/.bashrc文件中 - 执行
source ~/.bashrc让配置生效 - 直接运行命令即可查询对应色号的RGB值,示例:
palette-to-rgb 74
运行后会直接输出对应十六进制颜色码,比如#5fafd7。
注意事项
- 仅支持兼容Xterm OSC 4扩展的终端,目前GNOME Terminal、Konsole、iTerm2、Alacritty、WezTerm等主流终端均已支持
- 如果需要输出
rgb(R,G,B)格式,将函数最后输出的代码替换为注释里的对应内容即可
内容的提问来源于stack exchange,提问作者yolenoyer
相关产品推荐
相关产品推荐

