45

bash 端末で確実に色を変更するには、ANSI エスケープ シーケンスを使用することを知っています。例えば:

echo -e "\033[0;31mbrown text\033[0;00m"

出力する必要があります

brown text (in brown)

ANSI で特定の RGB セットを使用して色を出力する方法はありますか? 明るい赤が欲しいとしましょう:

echo -e "**\033[255:0:0m**red text\033[0;00m"

このようなものは存在しますか?

標準のbashを使いたいだけです。

4

6 に答える 6

52

これは存在しますが、OP が探していた 16777216 (256^3) 色の代わりに、より大きな 256 色のセットに 216 (6^3) 色が均等に分散されています。例:

echo -e "\033[38;5;208mpeach\033[0;00m"

これにより、心地よい桃色のテキストが出力されます。


このコマンドを分解すると: \033[38;5;208m

\033はエスケープ コードです。[ 38; コマンドをフォアグラウンドに向けます。代わりに背景色を変更する場合は、[48;を使用します。代わりは。5 ; 色が変わるシーケンスの一部です。そして最も重要な部分である208mは、実際の色を選択します。


このエスケープの 256 色のシーケンスで見つけることができる色のセットが 3 つあります。最初のセットは、基本的な「キャンディー」カラー セット、または値 0 ~ 15 です。次に、16 ~ 231 の分散色の立方体があります。最後に、232 ~ 255 の詳細なグレースケール セットがあります。

これらすべての値を含む表をここで見つけることができます: http://bitmote.com/index.php?post/2012/11/19/Using-ANSI-Color-Codes-to-Colorize-Your-Bash-Prompt- on-Linux#256%20(8ビット)%20Colors

于 2013-03-29T23:02:15.003 に答える
4

これはうまくいきます

echo -e "**\033[38;2;255;0;0m**red text\033[0;00m"

フォーマット:"\033[38;2;R;G;Bm"

  • R は RGB の RED コンポーネントです
  • G は、RGB の GREEN コンポーネントです。
  • B は RGB の BLUE コンポーネントです
于 2020-07-08T06:27:11.280 に答える
2

現在、True Color エスケープ シーケンス (\e[38;2;R;G;Bm) は、gnome-terminal (vte >= 0.36)、konsole、および st [suckless] を含む特定の端末エミュレータでサポートされています。

この機能は、pterm [putty]、terminology [enlightenment]、urxvt などの特定の機能ではサポートされていません。

xterm はその中間です。エスケープ シーケンスを認識しますが、すべての色を 256 色パレットの最も近い色に丸めます。

于 2015-04-16T23:36:14.260 に答える
0

いいえ、ありません。

そして、細かく言うと、それらは技術的には「ANSIエスケープシーケンス」ではなく、VT100制御コードです(グラフィカル端末や「RGB」などの用語が登場するずっと前に定義されていました)。

于 2013-03-28T13:08:35.273 に答える