Colors
字元轉義序列“033[061m”在哪裡記錄為粗體?
我正在嘗試編寫一個執行像 gcc 這樣的控制台程序並以彩色顯示其輸出的程序。我以前
openpty
不是pipe
假裝是一個字元設備,而是現在得到帶有顏色資訊的ANSI 轉義碼。我嘗試了一些程序,它們有時會給我程式碼CSI [ 49 m
。維基百科和xterm 轉義程式碼文件(搜尋)都Ps = 4 9
同意程式碼CSI [ 49 m
意味著我應該使用預設背景顏色。但是,debian 的 xterm 和 zsh 以及 ubuntu 的 linux 控制台不同意。
printf '\033[\061mTest\n\033[\060m'
在像 xterm 這樣的控制台中執行應該使用預設背景顏色列印“測試”(\033
轉義並escape + [
製作 CSI(控制序列引入器)並且\061
是八進制,即 49 十進制),但它實際上以粗體列印“測試\061
”(並且最後似乎意味著“不再粗體”,但既沒有在維基百科上也沒有在 xterm 顏色程式碼文件中記錄)。上面提到的所有控制台都同意這一點。有各種控制台和標準的顏色程式碼列表,但沒有一個列表
CSI 49 m
表示“粗體”。這種不一致從何而來?我在哪裡可以找到與 xterm、zsh 或 linux 控制台使用的顏色程式碼相對應的顏色程式碼列表?
\61``1
是ASCII 字元的八進制程式碼,所以\e[\61m
or\33[\61m
or\33\133\61\155
or\33[1m
is<ESC>[1m
。那
CSI 1 m
是 請參閱Wikipedia或文件_xterm
$ printf '\e[\61m' | od -An -vto1 -tc 033 133 061 155 033 [ 1 m $ tput bold | od -An -vto1 -tc 033 133 061 155 033 [ 1 m
對於預設背景顏色,您需要
\e[49m
,而不是\e[\61m
. 這些1
和49
數字旨在以十進製字元串表示形式表示,而不是字節值。