web-dev-qa-db-ja.com

bashプロンプトのトゥルーカラー?

Bashプロンプトでトゥルーカラーを使用することは可能ですか? MacOSでiTerm2を使用していますが、これはトゥルーカラーをサポートしています。しかし、bashプロンプトにトゥルーカラーをどのように使用するかはわかりません。

現在、bashプロンプトでtput af <number>を使用して色を取得しています。

4
ronakg

これは可能のようです。例えば:

export PS1="\[$(printf "\x1b[48;2;15;100;50m\]A Nice dark green [rgb(15,100,50)]:\[\x1b[0m")\] "

export PS1="\[$(printf "\x1b[38;2;255;100;250m\]A lovely shade of pink [rgb(255,100,250)]:\[\x1b[0m")\] "

$(printf ...)を呼び出すよりも良い方法があるかもしれません。あるといいのですが、わかりません。重要なのは、すべての「メタ」のもの(実際のコンテンツではない)を\[\]でラップして、シェルがプロンプトの長さの一部としてカウントしないようにすることです。再描画(例:履歴を循環するとき)

\x1b[...m式の最後の3つの数値は、目的の赤、緑、および青の値(0から255)を表します。

最初の数字は、背景(48)または前景(38)を設定します。他の番号が何をするのかわかりませんが、\x1b[38;4mを追加して遊んでみると、テキストに下線が引かれているようです。

この要点からさらに収集できる可能性があります: https://Gist.github.com/XVilka/8346728

1

それで、私は今日しばらくこれをいじくり回して、簡単に設定できるものを手に入れました。 .bash_colorsファイルを作成し、これをその中に入れて、.bash_aliasesから取得しました。

# set your RGB colors
cname='108;159;164'
cdir='108;188;150'

# leave this block alone
code_color_name="\x1b[38;2;${cname}m"
code_color_dir="\x1b[38;2;${cdir}m"
code_color_reset='\x1b[0m'

# leave this block alone
c_name=$(printf "${code_color_name}")
c_dir=$(printf "${code_color_dir}")
c_rst=$(printf "${code_color_reset}")

# your PS1 Prompt.  configure as desired
export PS1='\[${c_name}\]\u@\h\[${c_rst}\]:\[${c_dir}\]\w\[${c_rst}\]\$ '

より少ない行で実行できると確信していますが、読みやすくするために実行した方法で実行しました。 RGBコードを設定し、必要に応じてPS1を変更するだけです。

(履歴を上下にスクロールすることもきれいに機能します。)

0
async_fm