글을 굉장히 상세히 잘 적어주셔서 공부됐습니다 ~_~/
1. ospace님 블로그 (http://ospace.tistory.com/143)
들어가기
Bash 쉘은 대표적인 unix 쉘이다. 거의 기본 쉘로 제공이 된다. 보통 표시되는 텍스트나 배경 색상은 단색이다. 너무 믿믿하고 요즘 colorfull한 세상에는 어딘가 어색하다. 그럼 이를 수정해볼까?
일단 Bash쉘에 대해 어느정도 알고 있다는 가정하에서 시작하겠다. 모르면, 직접 찾아보기를... 밑에 참조도 참고하세요.
간단한 예제
Bash 쉘의 색을 입히기 전에 Bash 쉘의 색 표현 방법을 잠시 알아보자. 이에 대한 재미난 예제가 있다. 쉘 프롬프트 가지고 장난 친건데, 아래 예제를 간단히 살펴보겠다.[1]
export에 의해서 PS1 환경변수에 값을 설정한 것이다.
예제를 보아서는 잘 모를 것이다. 이 예제는 단순히 PS1의 프롬프트에 현재 위치를 표시하고 마지막에 ">"를 추가한 것 뿐이다.
여기서는 앞에 이상한 기호 ("\e[32; 40m")이 붙었다. 이 값이 뒤에 오는 문자(열)의 색을 지정하는 이스케이프 값이다. 기본 형은
\e[값
여기서 "값"이 설정되는 값을 의미한다. 여기서 색상을 표시하는데, 아래 같은 의미를 가진다.
\e[색상1;색상2m
색상1과 색상2은 10진수 값이 들어간다. 간단한 색 테이블은 다음과 같다.[1] 그럼 위의 예제에서 가로 32와 세로 40를 찾으면 현재 설정될 값을 알 수 있다. 간단히 바꿔서 테스트해보면 쉽게 알 수 있다.
찾기 쉽게 색상1은 글자색 기준으로 색상2는 배경색 기준으로 정리해서 배열하였다.
\e[32;40m
즉 32;40이면 글자는 녹색, 배경은 검은색이다.
\e[40;32;1m
32와 40 순서를 변경할 수 있고, 1값은 bold 표시한다는 의미이다. 이렇게 여러 속성 값을 뒤에 추가로 지정할 수 있다.(* 1값은 bold의 의미이나 실제 적용시 밝은 색상으로 적용되는 경우도 있다.)
그럼 기본 색상을 사용하려면 어떻게 해야되나? 터미널 기본 색상을 사용하려면,
\e[0m
을 사용하면 된다. 그럼 간단한 예를 보면,
다음은 다른 예제들 이다.
ls 에도 적용하기
실제 ls 명령에서 디렉토리나 파일의 색상을 표시하려면 명시적으로 사용해야하는 옵션이 있다. 바로 "--color"이다. 이는
".bashrc"환경 파일 등에 ls에 alias해주면 간단히 해결 할 수 있다. 추가로 "-F" 옵션을 주면 디렉토리 명 뒤에
백슬러쉬("\")도 표시되게 하여 디렉토리를 따로 구분해서 표시할 수 있다.
alias ls='ls --color -F'
이때 표시되는 기본 색상도 좋으나, 새로 추가되는 파일 타입이나, 익숙한 색상으로 변경하려면 추가 작업이 필요하게 된다.
ls coloring 고전적인 방식
Bash 쉘에서 ls의 색상에 영향을 미치는 환경변수는 LS_COLORS이다. 이는 Linux 기준이며, 플랫폼 별로 약간식
차이가 있을 수 있기에 해당 플랫폼의 ls명령어를 확인해 보는 것이 중요하다. 간혹 LSCOLORS인 곳도 있다.
사용법은 LS_COLORS 환경변수에 특정한 형식에 맞게 값을 넣어주면 된다. 예를 들어;[3]
LS_COLORS='di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.rpm=90'
따옴표 사이에 있는 값이 설정 값이다. "인자=값"의 쌍이며 이들 간에 콜론(":")으로 구분된다. 인자의 의미는 다음과 같다.[3]
di = directory
fi = file
ln = symbolic link
pi = fifo file
so = socket file
bd = block (buffered) special file
cd = character (unbuffered) special file
or = symbolic link pointing to a non-existent file (orphan)
mi = non-existent file pointed to by a symbolic link (visible when you type ls -l)
ex = file which is executable (ie. has 'x' set in permissions).
적용 되는 값이 텍스트 모양과 색상 등을 지정하는게 각 숫자 값의 내용은 다음과 같다.
더보기
이 값은 앞의 bash의 color값과는 조금 틀리게 보일지 모르지만, 기본적으로 값 결과는 같다.
실제 활용은 .bashrc 환경 파일에 적당한 위치에 다음과 같이 추가하면 된다.
LS_COLORS='di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.rpm=90'
export LS_COLORS
ls coloring를 dircolors로 하기
이번은 조금 다른 방법을 사용하겠다. 앞에 방법은 지정되는 색상이 다양하면 LS_COLORS에 넣는 값이 길이가 커지고 전체적인
스크립 파일도 지저분해지고, 설정되 값이 무엇인지 해갈리는 경우도 많다. 이를 도와 줄 수 있는게 dircolors 명령어이다.
플랫폼별로 이 명령어가 없을 수 있다. 없으면 설치해주면 된다.
알아서 대충 찾아서 설치하길 바란다. 잘 안된다면 이번 내용은 건너뛰면 된다. ㅡ.ㅡ;
(내가 봐도 정말 성의 없군....)
여하튼 계속 해서...
dircolors는 자신만의 파일 안에 필요한 색을 설정하고 설정된 색을 해당 쉘에 맞게 변경해서 적용해준다. 단순한
wrapper 명령어 수준이다. 그러나 깔끔하게 색상을 목록 형태로 보여주고, 다양한 쉘에 맞게 변경해주무로 때에 따라
bash사용하다가 csh로 변경해도, 같은 색상표를 적용할 수 있는 장점이 있다.
사용법은 다음과 같다. 원하는 색상을 지정한 색 목록을 특정 파일로 저장한다. 보통 자신의 홈디렉토리에 ".dircolors"라고
지정해도 된다. 아니면 터미널이나 특정 조건에 따라 변경하고 싶다면, 다른 이름 등으로 변경해도 상관없다.
그리고 .bashrc의 적당한 위치에 아래와 같은 명령어를 넣어주면 된다.[4]
eval `dircolors -b ~/.dircolors`
위의 eval는 `` 안에 있는 명령어를 실행한 결과를 실행하는 명령어이다. "dircolors -b" 에 의해
.dircolors에 있는 내용을 bash 쉘에 맞게 변경해서 결과를 표시해주는 역활을 한다. 단순히 값을 변환 해주는 것뿐
적용되는 것이 아니기에 이를 적용하기 위해서 eval를 적용해줘야 한다.
여기서는 .dircolors로 기본으로 했지만 이를 변경하면 위의 eval에 .dircolors 파일명과 실제 저장되는 위치를 정확히 일치시켜줘야한다.
아래는 간단한 .dircolors 파일 예이다.
더보기
이를 실행하면 "dircolors -b ~/.dircolors"만 실행하면 다음과 같다.
결론
Coloring은 작업에 도움을 주는 것일 뿐 실제 실행 결과에 있어서 아무런 영향이 없습니다. 오히려 너무 난잡하게 만들수 있겠죠. 즉, 그냥 보이기에 이쁘게 할 뿐이죠. 그래도 색이 들어가니 보이기에 좋네요.
보통 파일색을 지정할때 기본적인 색 외에 큰 범주에서 색을 지정하죠. 즉, 이미지, 동영상과 오디오, 문서파일 등등.
그리고, 특정 파일은 눈에 뛰게 강조하고 싶다면, 그런 파일은 따로 특이한 색상을 지정하면 되겠죠. 가급적 삼가는게 좋을 듯 싶네요.
현재 서술한 환경은 cygwin에서 테스트 한 것이므로 각자 환경에 맞지 않을 수도 있습니다. 그러나 대략적인 틀인 이 범주 안에서 적용될 거라 생각합니다.
간혹 아무리 ls에 "--color"를 넣어도 색상이 안보이는 경우도 있는데, 이는 환경 설정 문제보다는 자신의 터미널 설정에 문제가 많이 생기므로 기본 환경에서 터미널 설정을 살펴보세요.
이글이 도움이 되었으면 하는 바램이며, 도움이 되었다면, 댓글 정도 남겨주는 센스~~
끝.
덧글
시간이 된다면 지금 윈도우에서 사용하는 totalcommand의 색을 적용하려 합니다. LCD를 사용하고 있기에 배경을 흰색으로 설정해서 사용하는데... 쉘에서 흰색을 사용하면 뽀대가 안나는데.. ㅡ.ㅡ;
걍! 배경색만 검은 색으로 바꿔... 그래도 기본으로 그냥 변환해서 보기로 할까?
wincmd.ini 파일 내용중 일부
더보기
참조
[1] Prompt Magic, Daniel Robbins, http://www.funtoo.org/en/articles/linux/tips/prompt/
[2] Getting Started with BASH, scott, http://www.hypexr.org/bash_tutorial.php
[3] COLORS-Lscolors, Bartman, http://linux-sxs.org/housekeeping/lscolors.html
[4] COLORS-Dircolors, Jerry McBride, http://linux-sxs.org/housekeeping/dircolor.html
2. ubuntu forum kr (http://www.ubuntu.or.kr/viewtopic.php?f=9&t=1596&p=7568)
Attachment:
ls를 이용해서 파일목록을 살펴보면 파일종류별로 각기 다른 색으로 표시됩니다.
파일 종류나 확장자별로 색을 다시 지정하고 싶은 경우 LS_COLORS 환경변수를 조절하면 됩니다.
LS_COLORS의 기본 형식은 다음과 같습니다.
- LS_COLORS="파일종류1=속성1;색1:파일종류2=속성2;색2:파일종류3=속성3;색3:..."
(콜론:과 세미콜론;을 정확히 구별해 주세요 !)
- 파일종류는 디렉토리, 링크, 경로 또는 확장자별로 구분되는데 다음과 같은 의미를 가집니다.
fi - 일반 파일
di - 경로
ln - 심블릭 링크
pi - FIFO(파이프)
so - 소켓
bd - 블럭 장치
cd - 캐릭터 장치
ex - 실행 파일
*.png - 확장자가 png인 파일
*.mp3 - 확장자가 mp3인 파일
.
.
.
- 속성 분류는 다음과 같습니다.
0 = 기본값--- 1 = 볼드체--- 4 = 밑줄--- 5 = 점멸--- 7 = 역상
- 색코드입니다.
31 = 빨강--- 32 = 초록---33 = 오렌지
34 = 파랑--- 35 = 자주---36 = 청록 ---37 = 회색
90 = 진회색 ---91 = 연빨강--- 92 = 연두--- 93 = 노랑
94 = 연한 파랑
95 = 연한 자주
96 = 하늘색
40 = 검정 배경--- 41 = 빨강 배경
42 = 초록 배경--- 43 = 오렌지 배경
44 = 파랑 배경--- 45 = 자주 배경
46 = 청록 배경--- 47 = 회색 배경
100 = 진회색 배경--- 101 = 연한 빨강 배경
102 = 연두 배경--- 103 = 노랑 배경
104 = 연한 파랑 배경--- 105 = 연한 자주 배경
106 = 하늘색 배경
이제 LS_COLORS 환경변수를 직접 수정해보도록 하겠습니다.
우선 기본적인 LS_COLORS 환경변수를 ~/.bashrc에 기록합니다.
- $ dircolors >> ~/.bashrc
이제 vi나 gedit로 ~/.bashrc 파일을 엽니다.
.bashrc 파일의 마지막 부분을 보면 다음 부분이 추가되어 나타납니다.
- LS_COLORS='no=00:fi=00:di=01;35:ln=01;31:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:';
export LS_COLORS
LS_COLORS 첫 부분에 일반파일(fi), 디렉토리(di), 링크(ln) 등의 색을 설정하고 그 뒤로 확장자별로 색이 지정되어 나옵니다.
이제 자기가 원하는 파일종류나 확장자를 찾아서 색을 변경해 주기만 하면 됩니다.
수정이 끝난 후 터미널을 다시 시작하면 색이 변경되어 나타날 겁니다.
hwp갈은 확장자는 색을 지정해 줘도 변경이 되지 않는데 파일에 magic 넘버가 걸려 있기 때문입니다.
(이 부분은 나중에 다시 살펴보도록 하겠습니다.)
일단 기존의 확장자를 변경해서 색을 꾸며 보세요. 기분이 새롭습니다.
너무 깊이 들어가면 나도 잘 모르는데...
'Binary Life > 펭귄' 카테고리의 다른 글
우분투 해상도 수동 추가 (0) | 2014.05.06 |
---|---|
[작성중/메모] coredump (0) | 2012.07.05 |
*nix commands (0) | 2012.01.12 |
[UBUNTU] ATI 에서 부팅 등 화면 깨질 때. (0) | 2011.04.25 |
오랜만에 ubuntu (2) | 2009.03.10 |