다음 이전 차례

5. 색

앞에서 언급한 바와 같이, non-printing 이스케잎 시퀀스들은 \[\033[와 \]로 둘러 싸여 있어야만 합니다. 색 이스케잎 시퀀스들의 경우에는, 소문자 m도 같이 넣어야 합니다.

아래와 같은 프롬프트들을 시도해서, 명명된 색깔들이 나타나지 않는다면, ' /.Xdefaults' 파일(혹은 같은 종류의 파일)을 검토해서 "XTerm*Foreground: BlanchedAlmond" 와 같은 줄이 있는지 살펴 보십시오. 그 줄의 앞쪽에 느낌표('!')를 삽입해서 주석 처리할 수 있읍니다. 물론, 이 작업은 사용하는 터미널 에뮬레이터의 종류에 따라 달라 집니다. 이것이 터미널의 전경 색깔을 무효화 할 수 있는 가장 가능성이 있는 곳입니다.

프롬프트에 파란색 텍스트를 포함하기 위해 :

PS1="\[\033[34m\][\$(date %H%M)][\u@\h:\w]$ "

이 프롬프트의 문제점은, 34번 색 코드로 시작하는 파란색깔이 통상적인 회색으로 되돌아 가지 않아서, 프롬프트 뒤에 써 넣는 어떤 종류의 텍스트라도 프롬프트와 같은 색을 가지게 된다는 것입니다. 이것은 어두운 파란색이라서, 강조 코드가 약간은 도움이 될 수 있읍니다.

PS1="\[\033[1;34m\][\$(date %H%M)][\u@\h:\w]$\[\033[0;37m\] "

이제는 밝은 파란색으로 되며, 대부분의 사람들이 바라는 회색으로 되돌아 가서 끝 나게 됩니다.

주의 : 다음과 같은 점을 지적해 두고자 합니다. 만약, X텀을 사용하면서, 터미널의 색깔에 대해 "xterm -bg midnightblue -fg yellow" 과 같은식으로 설정해 놓으셨다면, 위에서 기술한 바와 같이 색깔을 되돌리는 작업이 여러분들이 설정한 "-fg"을 무효화 시킨다는 것입니다. 저는 이문제를 해결하지 못했으며, 여러분들이 해법을 발견하게 되면 저에게 일러 주시기 바랍니다. 여러분들이 밝은 색의 배경을 사용하고 계신다면, 위에서 사용된 회색 텍스트는 읽기가 곤란할 것입니다. 또한, X텀에서 밝은 배경을 사용하면서, 콘솔과 X텀 양쪽에서 프롬프트를 사용하기를 원하시면 제목 표시줄 절에 서 보인 바와 같이 "case $TERM in ..." 로써 색 설정에 대해서 약간의 조정을 할 필요가 있읍니다.

아래에 색상표가 주어집니다:

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

배경색도 또한 설정할 수 있는데, 파란 배경에 대해서는 44, 빨간색 배경에 대해서는 41, 등을 사용할 수가 있읍니다. 배경색에 대해서는 강조 색은 없읍니다. 파란색 배경에 밝은 빨간색 텍스트와 같이 조합을 해서도 사용할 수있읍니다: \[\033[44;1;31m\], 그렇지만, 따로 따로 색깔을 설정하는 것이 더 잘 작동하는 것 같읍니다(즉, \[\033[44m\]\[\033[1;31m\]). 다른 코드들도 포함하여 사용할 수 있는데, 4:밑줄, 5:깜박거림, 7:반전 그리고 8:숨김 등이 있읍니다.

프롬프트 패키지(제가 수정을 하여, 원문을 보기위해 요구되는 특별한 X텀 폰트들 을 사용하기 보다는 표준적인 콘솔에서 더 잘 작동하도록 만들었읍니다)에 있는 "elite2"라고 이름 붙인 프롬프트에 근거하여, 아래의 프롬프트는 제가 아주 많이 사용하는 것입니다.

function elite
{

local GRAY="\[\033[1;30m\]"
local LIGHT_GRAY="\[\033[0;37m\]"
local CYAN="\[\033[0;36m\]"
local LIGHT_CYAN="\[\033[1;36m\]"

case $TERM in
    xterm*)
        local TITLEBAR='\[\033]0;\u@\h:\w\007\]'
        ;;
    *)
        local TITLEBAR=""
        ;;
esac

local GRAD1=$(tty|cut -d/ -f3)
PS1="$TITLEBAR\
$GRAY-$CYAN-$LIGHT_CYAN(\
$CYAN\u$GRAY@$CYAN\h\
$LIGHT_CYAN)$CYAN-$LIGHT_CYAN(\
$CYAN\#$GRAY/$CYAN$GRAD1\
$LIGHT_CYAN)$CYAN-$LIGHT_CYAN(\
$CYAN\$(date %H%M)$GRAY/$CYAN\$(date %d-%b-%y)\
$LIGHT_CYAN)$CYAN-$GRAY-\
$LIGHT_GRAY\n\
$GRAY-$CYAN-$LIGHT_CYAN(\
$CYAN\$$GRAY:$CYAN\w\
$LIGHT_CYAN)$CYAN-$GRAY-$LIGHT_GRAY " 
PS2="$LIGHT_CYAN-$CYAN-$GRAY-$LIGHT_GRAY "
}

색깔들을 읽기 쉬운 이름으로 임시 쉘 변수로 정의 하였읍니다. 이렇게 하면, 작업 하기에 편리합니다. "GRAD1"변수가 사용되어, 사용하는 터미널의 종류를 결정합니다. X텀에서 작업을 하는지 결정하기 위해 테스트한 것과 마찬가지로, 단지 한번만 실행될 필요가 있읍니다. 색깔을 제외하면, 아래와 같은 프롬프트를 보시게 됩니다.

--(giles@nikola)-(75/ttyp7)-(1908/12-Oct-98)--
--($:~/tmp)--

다음 이전 차례