手表中不显示明亮的颜色 --color

手表中不显示明亮的颜色 --color

给定以下用于打印彩色文本的 python 脚本:

for i in range(30, 100):
    print(f'\033[{i}m{i}\033[0m', end=' ')
print()                                   

在 bash 上运行可以正确显示明亮的颜色(FG 代码 91-97): 显示明亮的颜色

然而,使用 运行此代码watch --color python3 test.py,明亮的颜色无法正确显示: 不显示明亮的颜色

认为在 中运行的 watch 命令有问题sh,我运行了watch --color --exec bash -c 'python3 test.py'但结果与上面相同。

我通过 Windows WSL2 运行 Ubuntu 20.04,但可以在 RHEL7 上看到类似的行为。有任何想法吗?

答案1

当您运行时,watch --color您会要求watch处理 ANSI 序列。

该程序有颜色限制硬连线到代码中它将不明白任何大于 47 的值。适用于版本 3.3.16(最新稳定版)。您应该能够使用 检查您的版本watch --version

default:
        if (attrib >= 30 && attrib <= 37) { /* set foreground color */
            fg_col = attrib - 30 + 1;
        } else if (attrib >= 40 && attrib <= 47) { /* set background color */
            bg_col = attrib - 40 + 1;
        } else {
            return 0; /* Not understood */
        }

掌握的分支watch思考明亮的色彩,所以最终它会被 WSL2 修复并采纳。与此同时,您唯一的选择是自己编译并更改代码。

相关内容