端末エミュレータの色に問題があります。私はそれをLXTerminal
ターミナルエミュレータとLXDE
デスクトップ環境として使用します。
次のコマンドは、灰色の背景に赤いテキストを印刷する必要があります。
printf "\n\033[1;31;40m"hello"\033[00m\n\n"
しかし、これはうまくいきません。灰色の背景がありません(赤いテキストも機能します)。私の古いコンピュータ(Gnome/Gnome Terminal
)では、すべてがうまくいきました。
他の複数の端末エミュレータをインストールしてみましたが、問題は解決しません。この問題がターミナルエミュレータに関連しているのか、それとも何なのかよくわかりません。コンソール(CTRL + ALT + F1)では、背景グレーは両方のシステムで機能しません。
この問題は灰色の背景に制限されます。他のすべての色はうまく機能します。たとえば、次は緑色の背景に赤いテキストを印刷します。
printf "\n\033[1;31;42m"hello"\033[00m\n\n"
助けてくれてありがとう。トラブルシューティングをどこから始めるべきかさえわかりません。
ベストアンサー1
各端末エミュレータは8つの標準ANSI色をサポートしています。ほとんどの端末エミュレータには、標準のANSI色の8つの明るいバリエーションもあります。
しかし、エスケープコードがマッピングされる実際の色値は標準化されておらず、実際には端末エミュレータごとにわずかに異なる場合が多い。したがって、printf "\e[31;47mTest\n"
白い背景に赤いテキストを印刷する場合、実際に表示される赤と白のトーンは、使用する端末エミュレータによって異なります。
したがって、これは問題を部分的に説明します。色の値が標準ではなく、LXTerminal
慣れていない他の基本パレットがあるかもしれません。設定を見ると、通常は好きな色でカラースキームを構成できます。
直面するもう1つの問題は、太い属性が実際に実行する作業も標準化されていないことです。 3つの可能性があります。フォントを太字にしたり、前景色を明るくしたり、前景色を明るくしたり、フォントを太字にしたりできます。
ここでも、デフォルトの動作は端末エミュレータによって異なり、通常は正しい設定が見つかったら変更できます。 Grepは「bold」または「bright」への言及を探します。
明るい色を使用するには、太字の代わりにいわゆるaixtermカラーエスケープコードを使用できます。これは標準ではありませんが、私が知っているすべての最新の端末エミュレータはそれをサポートしています。太字のフォントとは異なり、常に明るい色を使用し、明るい背景色を表示するために使用できます。
たとえば、明るい白地に明るい赤いテキストを印刷するには、次のようにしますprintf "\e[91;107mTest\n"
。
ちなみに、以下はすべてのカラーエスケープコード表です。
| ANSI | ANSI | ANSI | | Aixterm | Aixterm
| Color | FG Code | BG Code | Bright Color | FG Code | BG Code
+---------+---------+-------- +----------------+---------+--------
| Black | 30 | 40 | Bright Black | 90 | 100
| Red | 31 | 41 | Bright Red | 91 | 101
| Green | 32 | 42 | Bright Green | 92 | 102
| Yellow | 33 | 43 | Bright Yellow | 93 | 103
| Blue | 34 | 44 | Bright Blue | 94 | 104
| Magenta | 35 | 45 | Bright Magenta | 95 | 105
| Cyan | 36 | 46 | Bright Cyan | 96 | 106
| White | 37 | 47 | Bright White | 97 | 107