UroA 개발 블로그

[Linux & Unix] 쉘 프롬프트 정보 & 색상 변경하기 본문

Programming/Linux & Unix

[Linux & Unix] 쉘 프롬프트 정보 & 색상 변경하기

UroA 2016. 12. 14. 00:21

쉘 프롬프트 정보 & 색상 변경하기


 이번 시간에는 쉘 프롬프트 정보와 색상을 변경하는 방법에 대해서 알아보겠습니다. 그전에 먼저 쉘 변수에 대해 알아야 합니다. 현재 사용자의 시스템 사용환경을 개별적으로 사용할 수 있도록 지원하는 사용자별 시스템 환경변수를 쉘 변수라고 합니다. 쉘변수들 가운데 PS1이라는 변수가 프롬프트의 정보를 포함하고 있습니다.



Prompt 기본 설정 확인

 bash shell 에서 PS1 의 값을 확인하면 다음과 같이 나타납니다.


 


\h : 현재 호스트의 이름을 나타냅니다.

\W : 현재 위치의 디렉토리를 나타냅니다.

\u : 현재 로그인된 사용자를 나타냅니다.


 따라서 현재 기본으로 설정된 \h:\W \u\$ 에 따라 분석하면 현재 호스트는 KimJongMinui-MacBook-Pro 이고, 현재 디렉토리 위치는 ~(Home) 이며, 현재 로그인된 사용자는 kimjongmin 입니다.



Prompt에 나타낼 수 있는 정보

 다음 표는 프롬프트에 나타낼 수 있는 정보들 입니다.


 쉘변수 기호

의미 

 \t

 24시간의 단위로 현재시각을 HH:MM:SS 로 표시

 \T

 12시간의 단위로 현재시각을 HH:MM:SS 로 표시

 \@

 12시간의 단위로 현재시각을 오전/오후 로 표시

 \d

 현재 날짜를 나타냄. 요일, 월, 일 형식으로

 \s

 현재 사용중인 쉘의 이름을 나타냄 (C쉘이면 /bin/csh, bash쉘이면 /bin/bash)

 \w

 현재 디렉토리의 전체 절대경로를 모두 표시함

 \W

 현재 디렉토리의 전체 절대경로명 중 마지막 디렉토리명만을 표시함. 즉 현재디렉토리만 표시함

 \u

 사용자명을 표시함

 \h 서버의 호스트명을 표시함 (www.uzuro.com에서 www 부분)
 \H 서버의 도메인명을 표시함 (www.uzuro.com에서 uzuro.com 부분)
 \# 접속한 순간부터 사용한 명령어의 번호를 1번부터 차례대로 표시함
 \! 사용한 명령어의 history 번호를 표시함
 \\$ 현재 사용자가 root(uid 가 0 )이면 # 을 표시하고 아니면 $ 를 표시함
 \\ '\' 문자 자체를 표시함
 \a ASCII 종소리 문자 (07)
 \e ASCII 의 escape 문자 (033)
 \n 개행문자 (줄바꿈)
 \v 사용중인 bash 의 버전
 \V 사용중인 bash 의 배포, 버전+패치수준으로 버전을 상세히 표시함
 \r Carrage retrun



Prompt 색상 정보 (ANSI color)

 프롬프트의 색상 정보 입니다.


 코드

색상 

 30

 (Nomal) Black 

 31

 (Nomal) Red 

 32

 (Nomal) Green 

 33

 (Nomal) Yellow 

 34

 (Nomal) Blue 

 35

 (Nomal) Magenta 

 36

 (Nomal) Cyan 

 37

 (Nomal) Whit


색상은 0~7 까지 사용 가능합니다. 그런데 그냥 사용하는 것은 아니고 색상 값에 30, 40, 90, 100을 더해서 사용합니다. 예를 들면 32는 Nomal Green을 나타내고, 40을 더한 42는 Bright 옵션을 더하게 됩니다.


ANSI escape code에 대한 설명은 다음 블로그를 참고하면 좋을것 같습니다.

참고 -> (http://egloos.zum.com/sunyzero/v/4282610)


PS1 변수 변경하기

 이제 위의 정보를 바탕으로 프롬프트를 자신의 기호에 맞게 변경할 수 있습니다. 적용 방법에는 전체사용자에게 적용하는 법과, 개별사용자에게 적용하는 방법이 있습니다.


전체사용자 적용

 /etc/bashrc : 모든 사용자들에게 적용되는 쉘 설정파일입니다.


개별사용자 적용

 ~/.bashrc : 모든 사용자들의 홈 디렉터리에 존재하며 각 개별 사용자들의 쉘을 설정할 수 있습니다.


저는 프롬프트에 현재 Git branch 정보를 포함하여 나타낼 수 있도록 PS1 변수 값을 작성하였습니다. (http://bashrcgenerator.com/ 를 이용한다면 쉽게 작성할 수 있습니다.)

export PS1="\[\033[32;1m\]\u:\[\033[33;1m\]\w\[\033[m\]\$(parse_git_branch) $"
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}


색상 정보를 나타내는 부분이 복잡하기 때문에 색상코드만 따로 상수로 선언하여 사용한다면 조금 더 보기 좋을 것 같습니다.

참고 -> (http://blog.saltfactory.net/linux/change-prompt-in-terminal.html)

Comments