다음 이전 차례

8. 프롬프트 색을 동적으로 불러 들이기

8.1 예 "Proof of Concept"

아래의 예는 흥미로운 프롬프트라기 보다는 "proof of concept" 입니다:동적으로 프롬프트 안의 색깔을 바꾸는 것입니다. 이 예에서는, 시스템의 부하에 따라서, 호스트 이름의 색깔을 바꾸게 됩니다(경고 로서).

#!/bin/bash
#   "hostloadcolour" - 17 October 98, by Giles
#
#   The idea here is to change the colour of the host name in the prompt, 
#   depending on a threshold load value.

# THRESHOLD_LOAD is the value of the one minute load (multiplied
# by one hundred) at which you want
# the prompt to change from COLOUR_LOW to COLOUR_HIGH
THRESHOLD_LOAD=200
COLOUR_LOW='1;34'
          # light blue
COLOUR_HIGH='1;31'
           # light red

function prompt_command {
ONE=$(uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/" -e "s/ //g")
#   Apparently, "scale" in bc doesn't apply to multiplication, but does
#   apply to division.
ONEHUNDRED=$(echo -e "scale=0 \n $ONE/0.01 \nquit \n" | bc)
if [ $ONEHUNDRED -gt $THRESHOLD_LOAD ] 
then 
    HOST_COLOUR=$COLOUR_HIGH
        # Light Red
else
    HOST_COLOUR=$COLOUR_LOW
        # Light Blue
fi
}

function hostloadcolour {

PROMPT_COMMAND=prompt_command
PS1="[$(date +%H%M)][\u@\[\033[\$(echo -n \$HOST_COLOUR)m\]\h\[\033[0;37m\]:\w]$ "
}

여러분이 선호하시는 편집기를 이용해서, 이 파일을 "hostloadcolour"라는 이름으로 저장하십시오. 만약, 배쉬프롬프트 패키지를 이미 설치하셨다면, 이 파일은 테마의 하나로서 작동할 것입니다. 배쉬프롬프트를 설치하지 않았다면, 'source hostloadcolour'라고 치고나서, 'hostloadcolour'를 입력하십시오. 어느 쪽이든지, "prompt_command"는 여러분들의 환경에서 함수들 중 하나가 됩니다. 위 코드를 잘 살펴 보시면, 색깔들($COLOUR_HIGH 와 $COLOUR_LOW)이 부분적인 색상 코드(즉, "\[\033[1;34m\]" 대신에 "1;34")로 만 설정되어 있다는 것을 아시게 될 것입니다. 이 방법을 저는 더 선호합니다. 저는 완성된 코드로 작동하게 할 수가 없었는데, 이 문제를 다룰 수 있으면 저에게 일러 주십시오.


다음 이전 차례