为什么超级简单的函数在我的 Mac 终端中不显示 256 色?

Why is the super simple fuction not displaying 256 colors in my Mac terminal?

长期 Mac(阅读 GUI)用户最近开始 运行 Ubuntu 并花了一周左右的时间自定义我的 .bashrc (Ubuntu) 文件和.bash_profile (Mac) 提供丰富多彩的 PS1 和终端输出。

我有这个小功能:

function colors2nums()
{ for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done }

显示 256 种颜色和代码,因此我可以选择我想要的颜色...

它在 Ubuntu(14.0.4 LTS,Gnome 终端)中完美运行,在 Mac(OS 10.7.5 iTerm 和 Terminal.app).

Ubuntu 上的 .bashrc 文件的 PROMPT_COMMAND 功能与 Mac 的 PROMPT_COMMAND 完全相同,逐行复制和粘贴函数在 .bash_profile.

两个 PS1 提示的颜色相同(在 Mac 一侧只有一些奇怪的间距)并且 ls -GFa(或任何变体)以 [=38= 设置的颜色打印] 和 .dircolors。所以颜色适用于某些输出,但不是全部。在 Mac 上,我得到 256 行颜色与我的终端输入设置的颜色相同,由我的 PS1.

中最后转义的颜色(绿色、白色等)设置

WTH?!?

是的,我已经尝试了陷阱的 2 个变体 - DEBUG(hack?):

#trap 'echo -ne \e[0m' DEBUG

trap 'printf "\e[0m" "$_"' DEBUG

可以重置 Ubuntu 端的输出。 Mac 都不起作用。

我错过了什么?

在终端中拥有不止几种颜色是相对较新的 "invention",并不是所有的终端程序都能处理它。

另请注意,它是处理它的实际终端程序,shell 与它无关。

尝试使用 printf 代替:

for code in {0..255}; do printf "\e[38;05;${code}m $code: Test"; done