GNU/Linux >> Linux の 問題 >  >> Linux

ホスト名を色にハッシュする

これは、背景に基づいて「適切な」色を取得しない場合がありますが、デフォルトの背景色が常に color 0 であると仮定すると、機能するはずです。 :

tput setaf $(hostname | sum | awk -v ncolors=$(infocmp -1 | expand | sed -n -e "s/^ *colors#\([0-9][0-9]*\),.*/\1/p") 'ncolors>1 {print 1 + ($1 % (ncolors - 1))}')

これを分解するには:

  • tput - 端末制御文字列を出力する
  • setaf - 端末制御文字列。この場合、set ANSI foreground
  • $(...) - color パラメーターの BASH ネスト可能コマンド置換
    • hostname - ホスト名を取得
    • sum - ホスト名の単純なチェックサムを計算します
    • awk ...
    • -v ncolors=$(...) - AWK 変数 ncolors を設定します $(...) 内のコマンド置換の値に
      • infocmp -1 - 現在の端末タイプに関する端末情報を 1 行に 1 つのパラメーターで表示
      • expand - タブをスペースに展開して sed を作成します スクリプトをもう少し簡単に
      • sed -n -e "s/^ *colors#\([0-9][0-9]*\),.*/\1/p" - 整数 colors の値を抽出します 端末機能
    • 'ncolors>1 {...}' - {...} を実行する awk スクリプト ncolors の場合のみコード 1より大きい
      • print 1 + ($1 % (ncolors - 1)) -絶対的な$1を取る (sum からの入力のフィールド 1 、つまり $1 はチェックサム値)、(ncolors - 1) で割った余りを求める (これは範囲 0 に制限する効果があります (ncolors - 2) まで )、次に 1 を追加します

context-color に興味があるかもしれません 、J Earls の回答に基づいてまとめました:https://github.com/ramnes/context-color

これは、実行時にコマンド出力のハッシュに基づいて色を出力する単純なスクリプトです。 $PATH のどこかにインストールすると 、 .bashrc で次のようなことができます :

export PS1="$(context-color -p)$PS1\[\e[0m\]"

(ここで --prompt/-p プロンプトの色をエスケープするためのスイッチで、\[\e[0m\] 色をリセットするエスケープ シーケンス)

デフォルトでは、ハッシュの生成に使用されるコマンドは whoami; hostname です .ホスト名に応じて色を変更したいだけの場合は、 $CONTEXT を変更できます 可変環境 (export CONTEXT="hostname" ) または単に --context/-c を使用します オプション (context-color -c "hostname" ).

以下に例を示します:


Linux
  1. Linux – `hostname`のデフォルトファイルは何ですか?

  2. Debianでホスト名を変更する方法

  3. DockerComposeでのホスト名の設定

  1. Linuxサーバーのホスト名を変更する

  2. Linux での hostname コマンドの例

  3. ls 出力を csv に変換する

  1. Linuxでホスト名を変更する方法

  2. Linuxでホスト名を変更する方法

  3. トラブルシューティング:ホスト名を解決できない