Bash
彩色終端輸出忽略復位序列。顏色繼續
我擺弄了幾個小時,找不到解決方案…
假設我將其列印到終端*(在執行新 Linux Mint 的 VM 的基因組終端中使用 bash 和 zsh 進行測試)*:
python3 print("\033[41mFOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\033[0m BAR")
\033[41m
為後面的文本啟用紅色背景。\033[0m
將背景重置為預設值。- 假設有足夠的O來生成一個輸出,該輸出正好填滿終端中的一行半。
在一個新的終端中,輸出看起來像這樣(就像我預期的那樣):
|FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| |=================================| |OOOOOOOOOOOOOO BAR | |============== | | |
- 每個帶有 a 下劃線的字元
=
都有紅色背景。|
定義終端的邊界。所以我們看到
FOO...
有紅色背景和BAR
沒有紅色背景。如果我再次執行該命令,我會得到:
|FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO| |=================================| |OOOOOOOOOOOOOO BAR | |============== ===============| | |
在
BAR
這條線繼續變紅之後……我不知道為什麼?任何的想法?
Mac OS X 上的 iTerm2 也會在彩色文本繞過可用列時執行此操作。
BAR
一種解決方法可能是在通過CSI Ps K Erase in Line (EL)
控制序列寫入後擦除到行尾,例如$ perl -e 'print "\e[41m".("a"x120)."\e[0mBAR\e[K"'