· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Color-ls

Colours with Linux terminals

Colours with Linux terminals

원저자:Thorbjn Ravn Andersen, ravn@dit.ou.dk

작성일(원본): 1996년 04월 27일 16시 56분 15초 번역자:Suck Joong.Hwang - 황석중 whitehsj@nownuri.net

1. 소 개

대부분의 리눅스 배포본들은 컬러를 지원하는 ls를 포함하고 있습니다. 이색상을 고처보고 싶을 때도 있지만, 그게 그리 쉬운일이 아니었을 것입니다. 그래서 본문 서는 컬러 ls를 비롯해 리눅스 터미널에서의 색상설정의 여러가지 방법을 다루었 습니다. 이문서의 HTML(번역본이 아님:역자주)버전은 < www.dit.ou.dk/~ravn/colour-ls> 에서 구할 수 있습니다.

이 문서는 슬랙웨어 2.0.2에서 컬파일된 커널 1.1.54과 커널 수정부분은 슬랙웨 어 2.2.0에 커널 1.2.13을 사용하였으며, 쉘로는 표준쉘인 tcsh의 사용을 전재로 하였습니다.

2. ls의 색상 설정은 어떻게 하는가?

이 쉘 스크립트(저에게 bash버젼을 보내주신 분께 대단히 감사드립니다.) 모든 표준 색상을 출력합니다. 만약 아무런 색상도 나타나지 않는 다면 독자의 콘솔(= 터미널:역자주)이 ANSI를 지원하지 못하기 때문일 겁니다.


       #!/bin/bash
       # 안시 컬러 출력!
       #
       esc="\033["
       echo -e "\t  40\t   41\t   42\t    43\t      44       45\t46\t 47"
       for fore in 30 31 32 33 34 35 36 37; do
         line1="$fore  "
         line2="    "
         for back in 40 41 42 43 44 45 46 47; do
           line1="${line1}${esc}${back};${fore}m 보톨  ${esc}0m"
           line2="${line2}${esc}${back};${fore};1m 밝은    ${esc}0m"
         # 역자주 : ^[[30;30m .or. ^[[30;30;1m  <-- 예임
         done
         echo -e "$line1\n$line2"
       done

역자 주: 독자가 이 파일을 볼때는 esc="\033["이라고 나타날 것입니다. 하지만 이것이 아니고 "^[["입니다. 왜 틀리게 나타나는 지는 정확히 모르겠지만 다른 파일 시스탬을 오가면서 변경된 것으로 생각됩니다. 입력할때는 "^[["를 그냥 입력하는 것이 아니라 "컨트롤-v-ESC키-["입니 다. 이 것은 쉘 커맨드나 vi 에디터에서 쓰는 것이고 이맥스에서는 "C-q -ESC키-["입니다. 유의 하세요. :)
    전경색(글자색)의 색상번로는 리스트 왼편에 나타나고, 배경색은 맨 꼭대기에 나
   타 납니다.(한마디로 표형식입니다:역자주) 밝은 글자을 원하신다면 ANSI파라미터
   에 ";1m"을 덧붙치면 됩니다. 완전한 ANSI지정 순서는 다음과 같습니다.
  
    ESC[30;40;1m     <- ESC[ 는 ^[[을 말합니다. 이스케이프 문자입니다.: 역자주
  

유의점: 현재로서는 배경색을 밝은 색을 이용할 수 없습니다, 그래서 노란색(밝 은 갈색)같은 색을 사용할 수 없습니다. 하드웨어의 한계입니다. (Xterm에서의 실행결과와는 다소 차이가 있습니다:역자주)

3. ls의 색상설정은 어떻게 하는가?

일반적으로 슬랙웨어는 다음 파일을 보고 'LS_COLORS'라는 환경변수를 생성합니 다.

$HOME/.dir_colors 일반적인 성정값은 다음과 같을 겁니다. LS_COLORS=:no=00:fi=00:di=01:ln=01;36:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:..

표준 설정치와 다르게 설정하고 싶으시다면, 파일 내용(역시 ANSI지정법입니다: 역자주)을 수정한다음에 eval 'dircolors -t' 를 치면 환경변수를 재생성합니다.

유의점: 혹시 슬랙웨어 2.2이전의 버젼에 있는 ls를 이용하시고 있다면 업그래 이드를 권합니다. 이전버전은 상당히 버그가 많습니다.

4. 그외의 색상설정은 어떻게 하는가?

여러분이 터미널의 색상을 또다른 방법으로 기본값을 고치고 싶으시다면 터미널 드라이버 코드를 이해할고 수정할줄 알아야 합니다. 이 방법에대한 표준은 존재하 지 않습니다. 하지만 리눅스의 경우 'setterm'이라는 프로그램이 있어 그일은 않 해도 됩니다. 다음과 같이 색상의 설정을 합니다.

   setterm -foreground black -background white -store
            전경색            배경색
여기서 -store라는 파라미터는 콘솔의 기본적인 설정값을 그래로 이용한다고 set term에게 알리는 것입니다. 그러면 setterm이 알아서 현재의 터미널에게서 충분한 정보를 알아 냅니다.(TERMCAP이라는 환경변수를 참조하는 것입니다). 만약 운이 나쁘다면, 잔인하게 일일이 서술해주어야 겠죠?(export하고 TERMCAP이라는 환경 변수를 보시면 이해가 가실겁니다.:역자주)

4.1 Xterm

다음과 같이 사용합니다.

xterm -fg white -bg blue4 color_xterm -fg white -bg blue4 여기서 'color_xterm'은 컬러 ls를 지원하는 xterm의 버젼입니다.

4.2 가상 콘솔

독자들중에서는 한번쯤 커널을 수정해본 경험이 있는 분도 있을 것입니다. 가상 콘솔이 실행시 기본적으로 ANSI 이스케이프 문자를 지원하는 것은 물론이지만, 저 는 독자가 한번쯤 커널 컴파일을 해보신분이라면 커널수정을 강력하게(실력 향상? )권합니다.

   /usr/src/linux/drivers/char/console.c의 약 1800줄의 내용입니다. 이부분을 수
   정하셔야 합니다.
                def_color      = 0x07;      /* white */
                ulcolor        = 0x0f;      /* bold white*/
                halfcolor      = 0x08;      /* grey */
   를 이런식으로 고처보세요.
                def_color      = 0x17;      /* white */
                ulcolor        = 0x1f;      /* bold white 7+8*/
                halfcolor      = 0x18;      /* grey */
   
   이 16진수는 비디오 카드가 이용하는 속성 코드입니다. 첫번째 필드("1"자가 있는
   자리수)는 배경색이고 그뒤의 필드는 전경색입니다. 색상번호는  
                검정색  0       청  색  1       녹  색 2
                청록색  3       붉은색  4       자주색 5
                갈색/노란색  6                  힌  색 7
입니다. 이 값에다 8을 더하면 밝은 색이 됩니다. 유의할점은 배경색에 8을 더하 면 깜빡이는 글자가 되거나, 흐린색의 배경색이 됩니다. ( sjlam1@mda023.cc.monash.edu.au 씨로 부터).

이제 독자의 가상콘솔은 새로운 기본색상을 사용하게 될것입니다. 디스플래이마 다 비표준 안시를 기본으로 해서 말입니다.(커널 소스에서 찾아보세요.) ESC [ 8 ] 이 안시문자를 쓰면 현재의 전경-배경색을 기본값으로 지정하게 됩니다. ESC문자 로 속성을 변환한후에 사용하면 현재의 힌색/검은색의 색상대신 사용하게 그 색상 을 사용하게 됩니다. 부팅할때나오는 매세지에 이문자들을 이용하면 멋있겠죠?

/etc/issue

부팅시후 사용자명과 비밀번호를 입력받을 때 상단 "Welcome to Linux xx.yy"라 는 문구를 보신적이 있을 겁니다. 바로 이파일의 내용을 출력하는 것입니다. /etc/rc.d/rc.S 라는 스크립트가 부팅시 이파일을 생성하게 됩니다. 그러니까 이 파일을 수정해야 합니다. 약 75줄 정도에 이러한 내용이 있을 겁니다.

echo ""> /etc/issue #/etc/issue 파일 내용을 지우는 것입니다. echo Welocome to Linux '/bin/uname -a | /bin/cut -d\ -f3'. >> /etc/issue # -----------------> 이문장과 커널 버전을 합처서 issue에 넣습니다.

이 것을 이런식으로 고침니다. ESCAPE="" echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue 이렇게 고치셨다면 재부팅 하세요. 그려면 기본터미널 색상을 (백/청으로)지정한 후 화면을 지워서 화면전채의 색상이 봐뀔 것입니다. "^["를 입력할때 어떻게 해 야 하는지 아시겠죠? 유의하세요.

/etc/profile 이나 .profile의 예

역자 주: 참고로 /etc/profile 이나 .profile은 bash,tcsh등의 쉘이 기동될때 사 용하는 배치파일입니다.

if ( "$TERM" == "console" ) then echo "[8]" #이렇게 하거나 아래와 같이 하세요. setterm -foreground white -background blue -store endif

4.3 원격 접속시

위에서 본바와 같이 setterm 을 이용할줄 알아야 합니다. 원격 접속시 원격머신 은 독자의 터미널에 충분한 정보를 요구할 것입니다. 그리고 그 터미널 에뮬레이 터는 컬러 로긴(접속)을 지원할게 될것입니다. 만약 이것에대한 성공적인 사례를 접하게 되면 저의 알려 주시면 감사하겠습니다

5. 소프트웨어

이 문서에서 다룬 모든 내용들은 슬랙웨어를 설치했다는 가정하에 쓰여졌습니다. 독자가 그외의 다른 것(e.g. a Sun running X등)을 가지고 있다면 직접 구해서 컴 파일 해야 될지도 모릅니다. 컬러 xterm 버젼은 표준 xterm소스 패치와 함께 기본적으로 X11R6 site에 있습니 다. ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-R6p15-pacth.gz

구버젼의 X윈도우 시스탬을 사용하고 계시다면 관련문서를 읽어 보셔야 할것입니 다. 참고: 저는 시도해보지 않았습니다. 컬러 ls는 몇몇 미러 사이트에서도 구할수 있습니다.

ftp.denet.dk/pub/gnu/fileutils-3.12.tar.gz

ftp.funet.fi/pub/Linux/sunsite/utils/file/color-ls-3.12.0.3.patch.gz

저는 color-ls 소스를 솔라리스,SunOS,Irix에서 성공적으로 컴파일했습니다. 이 패치는 최신버젼의 소스를 요구하니 소스만 재대로 되었다면 쉽게 패치될 것 입니다. 저에게 이 문서에대한 의견을 보내주시면 감사하겠습니다. 저의 E-mail 주소는 < ravn@dit.ou.dk> 입니다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:29
Processing time 0.0530 sec