Colors

手錶中不顯示鮮豔的顏色–color

  • January 10, 2021

給定以下 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 上看到類似的行為。有任何想法嗎?

當您執行時,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 */
       }

主分支考慮鮮豔的顏色,所以最終它會被WSL2修復和拾取。與此同時,您唯一的選擇是自己編譯並更改程式碼。watch

引用自:https://unix.stackexchange.com/questions/628416