Colors

字元轉義序列“033[061m”在哪裡記錄為粗體?

  • November 4, 2017

我正在嘗試編寫一個執行像 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[\61mor \33[\61mor \33\133\61\155or \33[1mis <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. 這些149數字旨在以十進製字元串表示形式表示,而不是字節值。

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