给定以下用于打印彩色文本的 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 修复并采纳。与此同时,您唯一的选择是自己编译并更改代码。