任意の文字列からカラーコードを生成する

任意の文字列からカラーコードを生成する

私のシェルプロンプトは、サーバーのホスト名によって自動的に異なり、一意で一貫した色を持つことを望みます。

たとえば、特定のサーバーにログインするとき、プロンプトはそのサーバーに固有の色でなければならず、次にそのサーバーにログインするときにも同じ色でなければなりません。サーバー名と色のマッピングをハードコードしたくありません。色が必ずきれいである必要はありませんが、暗い背景にコントラストが高いと良いです。

したがって、ホスト名の決定的なハッシュを生成し、プロンプトで使用できるカラーコードに変換できます。

どうすればいいですか?

ベストアンサー1

私は結局この仕事をしました。

# get hash and byte size
prompt_hash_and_size=`hostname|cksum`
# get hash part and apply modulo 256 to put it in range 1..255
prompt_hashcolor=$(echo $prompt_hash_and_size|awk '{print $1%255 + 1}')
# use it as background color in prompt
PROMPT="%K{${prompt_hashcolor}}%F%~%f%k%  "

圧縮して使用することができます

prompt_hashcolor=$(hostname|cksum|awk '{print $1%256}')

おすすめ記事