OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] 프롬프트, 컬러 프롬프트 설정 - 이스케이프 이용

주누다 2015. 1. 23. 00:37
반응형

프롬프트 설정

- 배시 쉘에서는 환경 변수 PS1에 프롬프트로 사용할 문자열을 저장.

- '\'으로 시작하는 문자를 이스케이프 문자라고 함.

- '\'으로 시작하는 이스케이프 문자는 두 글자가 아닌 한글자로 처리

- 이스케이프 문자는 화면에 문자 그대로 출력되지 않고

 쉘이 문자의 의미를 해석하여 실행

- '\$'은 $를 특수 문자로 인식하는 것이 아닌 일반 문자로 인식

- 프롬프트를 바꾼 다는 것은 환경 변수 PS1에 새로운 형태의 문자열을 지정하는 것.

- 환경 변수를 사용할수도 있음

 ex) set 명령시 'PWD'라는 변수가 있음(현재 경로명)

 1-> user@ubuntu:~$ PS1='[$PWD $]'

 2-> [/home/user $] 


이스케이프 문자

 이스케이프 문자

기능 

\a 

ASCII 종소리 문자(07) 

\d 

'요일 월 일' 형식으로 날짜를 표시(ex:'Thu May 1') 

\e 

ASCII의 이스케이프 문자로 터미널에 고급 옵션을 전달 

\h 

첫 번째 .(마침표)까지의 호스트 이름(ex:host.co.kr에서 host까지) 

\H 

전체 호스트 이름 

\n 

줄 바꾸기 

\s 

쉘 이름 

\t 

24시간 형식으로 현재 시각을 표시(HH:MM:SS 형식) 

\T 

12시간 형식으로 현재 시각을 표시(HH:MM:SS 형식) 

\@ 

12시간 형식으로 현재 시각을 표시(오전/오후 형식) 

\u 

사용자 이름 

\v 

배시 쉘의 버전 

\w 

현재 작업 디렉터리(절대 경로) 

\W 

현재 작업 디렉터리의 절대 경로에서 마지막 디렉터리명 

\! 

현재 명령의 히스토리 번호 

\[ 

출력하지 않을 문자열의 시작 부분을 표시 

\] 

출력하지 않을 문자열의 끝 부분을 표시 



컬러 프롬프트 설정    

 컬러 프롬프트

- 형식 : PS1='\[\e[x;y;nm\] 프롬프트 \[\e[x;y;0m\]' 

- '\[' 을 사용하지 않으면 이스케이프 문자까지 모두 카운트되어 자동 줄 바꿈이 이상하게 동작.

- '\e는 터미널 제어를 알리는 이스케이프 문자

- ' x;y; ' 는 컬러 번호를, n은 밑줄이나 역상 표시 등 특수 기능을 나타냄

- 프롬프트 앞은 지정한 색상과 기능은 프롬프트의 색상과 특수 효과를

 프롬프트 뒤의 색상은 원래 색상으로 돌아가기 위한 것.

- 프롬프트 뒤의 색상을 지정하지 않으면 이후 쉘의 모든 출력이 프롬프트의 색상과 같아짐


프롬프트 컬러 번호 - x;y;

컬러 

글자 색 번호 

배경 색 번호 

검은색 

30 

40 

빨간색 

31 

41 

초록색 

32 

42 

갈색 

33 

43 

파란색 

34 

44 

보라색 

35 

45 

청록색 

36 

46 

하얀색 

37 

47 


프롬프트 특수 기능 번호 - n

 번호

기능 

기본 색 

굵게(Bold) 

흑백에서 밑줄 

반짝임 

역상 

10 

기본 폰트 

38 

밑줄 사용 가능 

39 

밑줄 사용 불가능 


컬러 프롬프트 설정 예제

user@ubuntu:~$ PS1="\[\e[33;457m\} \u@\h $ \[\e[0;0m\]"


- '\[' , '\]' 을 사용하는 이유는

 터미널에서 언제 줄 바꿈을 해야하는지 배시 쉘이 계산할 때,

 프롬프트를 설정하면서 지정한 이스케이프 문자도 카운트 되기에 

 문제가 발생하게 됨(줄바꿈이 안 되는 경우 등등)

- 프롬프트로 지정한 문자와 사용자에게 보이지는 않지만 이스케이프 문자도 모두 카운트되어 

 터미널 창의 길이를 계산할 수 있도록 '\[', '\]' 를 사용해주는 것이 좋음.



반응형