티스토리 뷰


리눅스 터미널에서 ls 색상은 어떻게 설정할까?

우분투를 설치하고 터미널에서 ls를 치면 디렉토리는 파란색, 실행파일은 녹색, 압축파일은 빨간색 등으로 표시가 됩니다. 이는 원래 리눅스의 설정이 아니라, 우분투에서 기본적으로 세팅되어 제공되는 설정 때문입니다.


터미널에서 다음 명령어를 한번 입력해 봅시다.

$ dircolors

LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00: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:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arj=01;31:.taz=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.lz=01;31:.xz=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=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:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=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:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.axv=01;35:.anx=01;35:.ogv=01;35:.ogx=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:.axa=00;36:.oga=00;36:.spx=00;36:.xspf=00;36:'; 
export LS_COLORS

LS_COLORS라는 환경변수에 파일의 각종 확장자들의 색상을 지정해놓고, export LS_COLORS 를 실행함으로써 반영을 하고 있습니다.


이 dircolors라는 명령어는 ~/.bashrc에서 실행시키고 있습니다.



색상에 대한 설명

위의 예제에서 첫 번째 것 하나만 보도록 하겠습니다. di=01;34 라고 적혀있습니다.


directory의 색상을 1;34 로 해라.


이런 말인데, 세미콜론의 앞이 0이면 기본 색상, 1이면 밝은 색상을 의미합니다.

뒤의 34는 blue를 의미함으로, 0;34 = blue / 1;34 = light blue 를 말합니다.


이 default와 light는 BOLD의 효과로 쓰이기도 합니다. 즉, 0은 regular체, 1은 bold체 처럼 말입니다.


일반적인 Non GUI환경에서와 xterm 과 같은 터미널에서는 Default/Light로 쓰이고,

gnome-terminal 에서는 Regular/Bold 체로 쓰입니다.



이 차이를 테스트해봅시다.



이것이 gnome-terminal 입니다. 그놈 터미널이자, 우분투의 기본 터미널입니다.

[사진은 클릭하면 커집니다.]


그리고 이것이 xterm입니다.



왜 우분투가 gnome-terminal을 선택했는지 알수 있습니다.. 훨씬 이뻐요


암튼 이제 테스트를 해봅시다.

아! 테스트 하기 전에 색상 소개먼저 하고 갈게요.

이 색상들이 표준으로 지정된 ANSI Color 입니다. 색상을 지원하는 터미널이라면 어떤 Unix/Linux에서도 사용하실 수 있습니다.


ANSI COLOR 테이블

Default/Regular 이름

색상코드 

Light/Bold 이름 

색상코드 

 Black

 0;30

 Dark Gray

1;30 

 Red

 0;31

 Light Red

1;31 

 Green

 0;32

 Light Green

1;32 

 Brown/Orange

 0;33

 Yellow

1;33 

 Blue

 0;34

 Light Blue

1;34 

 Purple

 0;35

 Light Purple

1;35 

 Cyan

 0;36

 Light Cyan

1;36 

 Light Gray

 0;37

 White

1;37 


참고)

세미콜론 뒤 두자리는 텍스트의 색상에 관한 얘기였고,

세미콜론 앞 한자리는 텍스트의 속성에 관한 얘기입니다.

속성도 간단히 정리합니다.


0: 기본색상/Regular

1: 밝은색상/Bold

2: 어두운색상

3: 이탤릭체 (이런거)

4: 밑줄체 (이런거)

7: 백그라운드/폰트 색상 반전체 (예: 이런거 또는 이런거 - 반전 색상은 뒤의 색상 코드에 따라..)

9: 취소선 (이런거)



본격 사용 예제

echo 명령어를 통해서 사용해봅시다.

\033 이라는 이스케이프 문자를 함께 이용합니다.


$ echo -e "\033[1;34m myfolder yourfolder \033[1;36m mysymlink \033[0m"


위의 echo를 한 번 입력해보세요.

아주 재미있는 일이 일어납니다 :)


echo인데, 마치 ls한것과 같죠?



xterm에서도 테스트!


예쁘네용



이걸 응용하면 아래와 같은 일도 할 수 있습니다.


나만의 ls 만들기

저는 폴더 이름을 언제 봐도 명확하게 하기 위해 좀 길~게 길~게 해놓는 편입니다.

그러다보니 디렉토리 다섯개만 타고 들어가면 host 옆에가 빽빽해지는 단점이.... (아래와 같이)




그래서!!

저는 호스트 옆에 전체 working directory가 나오는걸 좋아하지 않습니다.

그래서 없앱니다.


$ vi ~/.bashrc


....

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

...


PS1 = 블라블라에서 마지막에 보이는 \w를 대문자로 바꿔줍니다.  '\W'


그리고 


$ source ~/.bashrc


bash를 반영하면 전체 작업디렉토리가 보이는 대신, 현재 작업디렉토리만 보이게 됩니다.

설정을 막 바꿨기때문에, 한번 source로 반영해주는데 이 이후에 여는 쉘에는 자동으로 반영됩니다.




근데 이렇게 하니 단점이 있습니다.


전체 디렉토리가 보이지 않으니까, 어느 디렉토리에 들어와있는지 알 수가 없습니다.

저 참 까다롭죠.. 매번 pwd 명령어로 확인하는것도 지겹습니다.


그래서 alias 명령으로 ls에 약간 기법을 넣어보도록 합니다.

alias는 별명을 짓는 것으로, 아래와 같이 하면 앞으로 ls라고 간단히 치는 명령에 사실은 "~" 의 명령이 포함되어 있는 상태가 됩니다.

$ alias ls="echo -en '\033[1;33m' && pwd | sed 's/\/home\/heebum/~/' && echo -en '\033[0m' && ls --color=auto"


우분투에서 home/USER 의 디렉토리는 ~ 로 표현을 해줍니다. 그래서 저도 PWD의 풀경로를 다 쓰는 대신에, home/USER 경로는 ~ 로 치환해주는 명령어, sed를 사용했습니다.


그리고 앞 뒤로 노란색을 넣겠습니다. 

그러면 경로가 훨씬 잘 보일거 같네요.



alias 명령어를 입력한 다음 ls를 해보겠습니다.



와우, 굿이네요. 


어떤 경로에 있는지도 보이고, ls 본연의 역할인 현재 디렉토리의 목록도 보여줍니다.


마지막 한 스탭 남았습니다.

이렇게 alias를 해두면, 매번 쉘을 킬때마다 alias를 다시 해 줘야 합니다.


따라서, 이 alias도 ~/.bashrc에 넣어 줍니다.



중간 쯤에 ls가 이미 alias 되어 있는 부분이 있는데, 그 부분을 바꿔치기 해 주면 됩니다.



색상 코드를 응용하면 상당히 재밌는 것들이 많이 나옵니다.

제가 ls를 만든 것처럼, 여러분들도 한번 만들어 보시는건 어떠신지요 :)




참조:



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함