web-dev-qa-db-ja.com

文字エスケープシーケンス `\ 033 [\ 061m`は、太字を意味するように文書化されていますか?

Gccのようなコンソールプログラムを実行し、出力をカラーで表示するプログラムを書こうとしています。 openptyの代わりに pipe を使用して、キャラクターデバイスのふりをして、色情報を含む ANSIエスケープコード を取得しました。私はいくつかのプログラムを試しました、そしてそれらは時々私にコード_CSI [ 49 m_を与えます。 wikipediaxtermエスケープコードのドキュメント (_Ps = 4 9_を検索)の両方で、コード_CSI [ 49 m_はデフォルトの背景色を使用する必要があることに同意します。

ただし、debianのxtermとzsh、およびubuntuのLinuxコンソールは同意しません。
_printf '\033[\061mTest\n\033[\060m'_ xtermのようなコンソールで実行すると、デフォルトの背景色で「テスト」が印刷されます(_\033_はエスケープであり、_escape + [_はCSI(制御シーケンスイントロデューサ)を作成します)および_\061_は8進数 10進数の49 )ですが、実際には「Test」が太字で表示されます(そして末尾の_\061_は「もう太字ではない」という意味のようですが、ウィキペディアにもxtermカラーコードのドキュメントにも記載されていません)。上記のすべてのコンソールはこれに同意します。

さまざまなコンソールおよび標準のカラーコードのリスト はありますが、「太字」を意味する_CSI 49 m_のリストはありません。

この矛盾はどこから来たのですか? xterm、zsh、またはLinuxコンソールのいずれかが使用しているものに対応するカラーコードのリストはどこにありますか?

6
nwp

\61はASCIIの1文字の8進コードであるため、\e[\61mまたは\33[\61mまたは\33\133\61\155または\33[1m<ESC>[1mです。

それはCSI 1 mです。 Wikipedia または the xterm documentation を参照してください。

$ 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の数値は、バイト値ではなく、10進数の文字列表現で表現されることを意図しています。

12