端末への緑のはどうすればよいの出力異なる色合い?
-
26-09-2019 - |
質問
私は現在の端末に緑色で出力テキストに次のコードを使用しています
printf("%c[1;32mHello, world!\n", 27);
しかし、私は緑のより多くの色合いをしたいです。これを実現する最も簡単な方法は何でしょうか。
解決
あなたは 256colors2.pl のスクリプトを使用することができますhref =「http://www.robmeerman.co.uk/unix/256colours」のrel =「nofollowをnoreferrer」>必ずお使いの端末のハンドル正しく256色ことを確認するためにロブMeermanののサイト。そして、あなたは緑の右の色合いを与えるためにRGB値の正しい組み合わせを選択します。
彼のスクリプトに基づいて、それは基本的にベース6カラースキームのオフセットされている色番号のように見えます:
COLOR = r*6^2 + g*6 + b) + 16
そして、私たちが使用する必要がフォアグラウンドカラーの
\x1b[38;5;${COLORNUM}m
そして再び彼のスクリプトに基づいて、ここでは(perlの)ループだそのディスプレイ所望の色の文字Oます:
# now the color values
for ($green = 0; $green < 6; $green++) {
for ($red = 0; $red < 6; $red++) {
for ($blue = 0; $blue < 6; $blue++) {
$color = 16 + ($red * 36) + ($green * 6) + $blue;
print "\\x1b[38;5;${color}m :\x1b[38;5;${color}m O\x1b[0m ";
print "\n" if ($blue == 2 || $blue == 5);
}
}
print "\n";
}
ここでとは、その出力のサンプルです:
NOTE の<のhref = "https://stackoverflow.com/questions/2814478/how-can-i-output-different-shades-of-green-to-the-terminal / 2814725#2814725" >それは実際に動作し、あなたはシェルが必要な機能をサポートしていることを確認するために行う必要がありますどのような方法についてはかなりのようだのチャールズ。私の情報は、観察に厳密に基づいており、256色(konsoleの)をサポートするために知られているシェルでテストされます。
他のヒント
あなたがどのようにこれはあなたの端末に依存します。あなたはどのように見つけるためにはtermcapやterminfoのデータベースを照会することができるはずがあります。
これは、いくつかのtput
コマンドで証明するのが最も簡単です。
例えば。私の現在の端末でます:
tput initc 2 500 900 100
tput setaf 2
定義緑色のシェードすべきカラー2(パラメータは、0から1000の間でRGB値である)、この色にフォアグラウンドに切り替える。
あなたはC
と機能を表示することができ、あなたの特定の端末のinfocmp
プログラムに必要な文字列を表示するには、
例えば。 (私の端末用)
$ infocmp -1 | grep initc
initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
$ infocmp -1 | grep setaf
setaf=\E[38;5;%p1%dm,
書式設定PARAMTER %
は、解析するビット(OK非常に)痛いですが、infocmp
のmanページに記載されています。 printf
形式の文字列にこれを翻訳することはあまりにも難しいことではありません。
このはあなたを助けることがあります:
http://en.wikipedia.org/wiki/ANSI_escape_codeする
あなただけの本当に各色の2つの異なる色合いを得ることができます。ダークグリーンを取得するために2と1を交換してみてください。