カラーターミナルがあれば可能であることを知っています。エスケープ文字を使用した出力色の指定。
しかし、出力が現在どの色で表示されているのかわかりますか?それとも今テキストを出力すると、テキストはどの色で表示されますか?
これらのエスケープ文字を使用すると、以前の色設定が壊れないように要求します。 「デフォルトの前景色」エスケープ文字は、変更前のテキストの色ではなく、カラースキームから情報を取得します。
ベストアンサー1
ここでは、xterm
クエリRGBカラーコードの色の変更エスケープを変更して、レポートの現在の色を取得できます。 - を使用しますESC ] Ps m
が、?
疑問符を追加します。 ~から文書:
"?"
名前またはRGB仕様の代わりにaが指定されている場合は、同じxterm
形式の制御シーケンスが応答します。これは対応する動的色を設定するために使用できます。 1つの制御順序で2つ以上の色番号と仕様を提供できるため、xterm
2つ以上の応答が可能です。- P s = 1 0→VT100テキストの前景色をP tに変更します。
- P s = 1 1→VT100テキストの背景色をP tに変更します。
- P s = 1 2→テキストカーソルの色をP tに変更します。
- P s = 1 3→マウスの前景色をP tに変更します。
- P s = 1 4→マウスの背景色をP tに変更します。
- P s = 1 5→Tektronixの前景色をP tに変更します。
- P s = 1 6→Tektronixの背景色をP tに変更します。
- P s = 1 7→ハイライトの背景色をP tに変更します。
- P s = 1 8→Tektronixカーソルの色をP tに変更します。
- P s = 1 9→ハイライト前景色をP tに変更します。
これが他の端末エミュレータで動作できるかどうか真剣に疑われますが、xterm
実行すると...
printf '\033]11;?\007'
...xterm
次のシーケンスを端末の入力バッファに戻します。
11;rgb:ffff/ffff/ffff
...背景または前景の場合:
printf '\033]10;?\007'
10;rgb:0000/0000/0000