カラーテキストを印刷するための次の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
実行すると、ANSIシーケンスを処理watch --color
するように求められますwatch
。
プログラムに色制限があります。コードに組み込まれているそうだろうわからない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で修正され採用されます。その間唯一のオプションは、直接コンパイルしてコードを変更することです。