質問

私は現在の端末に緑色で出力テキストに次のコードを使用しています

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を交換してみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top