これは魅力的なプロンプトというよりは、動的にプロンプトを変えるには こうすれば可能であるという例示です。この例では、ホスト名がシステム 負荷に応じて色を変えます(警告になります)。
#!/bin/bash # "hostloadcolour" - 17 October 98, by Giles # # この例は、プロンプトのホスト名を負荷の値によって変えます。 # THRESHOLD_LOAD は、プロンプトの色を COLOUR_LOW から COLOUR_HIGH に # 変える1分間の負荷量(の100倍)を示します。 THRESHOLD_LOAD=200 COLOUR_LOW='1;34' # ライトブルー COLOUR_HIGH='1;31' # ライトレッド function prompt_command { ONE=$(uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/" -e "s/ //g") # bcのscaleは、乗算には適用されず、除算に適用されるようです。 ONEHUNDRED=$(echo -e "scale=0 \n $ONE/0.01 \nquit \n" | bc) if [ $ONEHUNDRED -gt $THRESHOLD_LOAD ] then HOST_COLOUR=$COLOUR_HIGH # ライトレッド else HOST_COLOUR=$COLOUR_LOW # ライトブルー fi } function hostloadcolour { PROMPT_COMMAND=prompt_command PS1="[$(date +%H%M)][\u@\[\033[\$(echo -n \$HOST_COLOUR)m\]\h\[\033[0;37m\]:\w]$ " }
好みのエディタを使って、これを hostloadcolour というファイルに保存します。
Bashprompt パッケージがインストールされているなら、これはテーマファイルに
なります。もしインストールしていないなら、source hostloadcolour
に続いて、hostloadcolour
とします。どちらにしても prompt_command が
あなたの環境の関数になります。コードをみると、色($COLOUR_HIGHと$COLOUR_LOW)
は色コードの一部つまり"\[\033[1;34m\]"(こうしたかったのですが)ではなく
"1;34"で定義されていることに気づくでしょう。完全な色コードを使いたかった
のですが、動きませんでした。どうしたらいいか分かったら教えてください。