About Guestbook  
A W
BLOG main image
I love 'Dark다크묵墨.'!
 Category
전체 (156)
Dark다크묵墨 (61)
Media 보고 즐기고~ (16)
영화이야기 (15)
음악을 즐기자~ (14)
텍스트큐브 (11)
플래시 (8)
Web(html,script) (4)
MS Windows (4)
Server (6)
Linux (17)
 Recent Entries
[曰] 소중함이란...
태양의 노래
[뮤비] 소녀시대 - 훗 [H...
우분투 패키지 관리 재정...
우분투(10.10) 설치 후 ...
 Tags [click]
정리 유머 어린시절 리눅스 옴니아2 자동차 스릴러 퍼포먼스 링크 hslice 소양강 윈도우즈 단오제 영웅전설6 오류 아픔 rewrite 디셈버 프리하드 노트북 영화 드라이버 썬테크 mysql 암호 tags in flash 연예인 색상 네트웍 테트리스
 Visitor Statistics
Total : 108169
Today : 132
Yesterday : 167
텍스트큐브
rss atom
'PS1'에 해당하는 글(1)
2011/01/18   우분투 콘솔 프롬프트 변경


2011/01/18 17:43 2011/01/18 17:43
우분투 콘솔 프롬프트 변경
2011/01/18 17:43 | Linux/Ubuntu

계정 홈 디렉토리에 있는 .bashrc 파일을 아래와 같이 수정한다.

52번 째 줄 부분 (변경 전)
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

(변경 후)
if [ "$color_prompt" = yes ]; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\ $\[\033[00m\] '
else
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\ $\[\033[00m\] '
fi

루트계정 홈 디렉토리에 있는 .bashrc 파일 수정

52번 째 줄 부분 (변경 전)
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

(한 줄 추가하여 변경 후)
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \[\033[01;31m\]\$ \[\033[00m\]'


아래는 참고 자료입니다.



출처 : http://www.ibm.com/developerworks/kr/library/l-tip-prompt/index.html

팁: 프롬프트 매직

시스템 프롬프트 향상

Daniel Robbins, CEO, Gentoo Technologies, Inc

요약: 쉘 프롬프트를 다양한 컬러와 풍성한 정보로 꾸밀 수 있는데 왜 지루한 표준 쉘을 고수하는가? Daniel Robbins는 각자가 원하는 방식으로 쉘 프롬프트를 만드는 방법을 설명한다. 뿐만 아니라 X 터미널의 타이틀바를 동적으로 업데이트 하는 방법도 설명한다.

원문 게재일:  2000 년 9 월 01 일
난이도:  초급
페이지뷰: 199 회
의견: 0 (의견 추가)

1 star2 stars3 stars4 stars5 stars 평균 평가 등급 (총 2표)

리눅스/유닉스 사용자들이라면, 많은 시간 쉘에서 작업을 한다:


bash-2.04$

여러분이 root라면, "prestige" 버전을 사용할 수 있을 것이다:


bash-2.04#

이러한 프롬프트들은 솔직히 말해서 별로다. 많은 리눅스 배포판들이 색상과 부팅 정보를 추가하여 디폴트 프롬프트를 업그레이드 한다는 것은 이상한 일이 아니다. 배포판에 멋지고 다양한 색상의 프롬프트가 있지만 완벽하지는 않다. 몇 개의 색상을 추가하거나 변경하거나 또는 프롬프트 그 자체에서 정보를 추가하거나 제거하고 싶을 것이다. 자신만의 색깔을 입히고 트릭을 가한 프롬프트를 만드는 것은 어렵지 않다.


프롬프트 기초

배쉬에서, PS1 환경 변수의 값을 변경하여 프롬프트를 설정할 수 있다:


$ export PS1="> "
>

변경 즉시 효력이 나타나고, ~/.bashrc 파일에 "export" 정의를 주어서 영구적인 것으로 할 수 있다. PS1에는 여러분도 좋아할 만한 플레인 텍스트가 포함되어 있다:


$ export PS1="This is my super prompt > "
This is my super prompt >

많은 정적 텍스트를 갖고 있는 프롬프트를 유용하지 않다. 대부분의 커스톰 프롬프트에는 현재의 사용자 이름, 작업중인 디렉토리, 호스트 이름 같은 정보가 포함되어 있다. 이러한 정보들은 쉘 내부를 탐구하는데 도움이 된다. 예를 들어, 다음의 프롬프트는 사용자 이름과 호스트 이름을 디스플레이 한다:


$ export PS1="\u@\H > "
drobbins@freebox >

이 프롬프트는 특별히 다양한 계정으로 다양한 머신에 로그인하는 사람들에게 편리하다. 어떤 머신을 실제로 사용하고 있고 현재 어떤 권한을 가지고 있는지를 알려주는 리마인더(reminder)로서 작용하기 때문이다.

위 예제에서, 배쉬에게 사용자 이름과 호스트 이름을 프롬프트로 인서트하라고 명령했다. 특별한 백슬래쉬-이스케이프 문자 시퀀스를 사용했다. 다음은 배쉬가 인식하는 모든 시퀀스 리스트이다 (배쉬 맨 페이지의 "PROMPTING" 섹션에서 리스트를 찾을 수 있다.):

시퀀스 설명
\a ASCII bell 문자 (\007)
\d "Wed Sep 06" 의 날짜(date)
\e ASCII escape 문자 (\033)
\h 호스트 이름의 첫 번째 부분( "mybox")
\H 전체 호스트 이름 ("mybox.mydomain.com")
\j ^Z를 눌러서 쉘에서 중지시킨 프로세스의 수
\l 쉘의 터미널 디바이스의 이름 ("ttyp4")
\n Newline
\r 캐리지 리턴
\s 쉘 실행파일의 이름 ("bash")
\t 24 시간 포맷의 시간 ("23:01:01")
\T 12 시간 포맷의 시간 ("11:01:01")
\@ am/pm이 있는 12시간 포맷
\u 사용자 이름
\v 배쉬 버전 (2.04)
\V 패치 레벨이 포함된 배쉬 버전
\w 현재 작업중인 디렉토리 ( "/home/drobbins")
\W 현재 작업중인 디렉토리의 "basename" ("drobbins")
\! 히스토리 버퍼에서의 현재 명령어 포지션
\# 명령어 넘버
\$ root가 아닐 경우, "$"를 삽입하라; root라면, "#"를 얻는다
\xxx 세자리 숫자 xxx에 근거한 ASCII 문자를 삽입한다. ("\007"처럼 사용되지 않은 숫자는 0으로 대체한다.)
\\ 백슬래쉬
\[ 커서를 움직이지 않는 문자 시퀀스 앞에 위치한다. 배쉬가 단어 래핑을 정확히 수행할 수 있도록 한다.
\] non-printing 문자 시퀀스 뒤에 나타난다.

색깔입히기(Colorization)

색깔 추가는 쉽다; 첫 번째 단계는 컬러 없이 프롬프트를 디자인 하는 것이다. 그런 다음에는 터미널(배쉬가 아닌)에 의해서 인식될 특별한 이스케이프 시퀀스를 추가한다. 표준 리눅스 터미널과 X 터미널로 foreground (text) 컬러와 background 컬러를 설정할 수 있다. 그리고 원한다면 볼드(bold) 문자도 가능하다. 8개의 컬러를 선택할 수 있다.

컬러는 PS1에 특별한 시퀀스를 추가함으로서 선택된다. 기본적으로 "\e["와 "m"사이에 숫자를 넣는다. 숫자 코드를 하나 이상 지정하려면 세미 콜론으로 각 코드를 구별해야 한다. 다음은 컬러 코드 예제이다:


"\e[0m"

숫자 코드로 0을 지정 할 때 이것은 터미널에게 디폴트 값으로 foreground, background, 볼드 세팅을 재설정하도록 명령한다. 이제 컬러 코드들을 살펴보자:


컬러 챠트
사용자 삽입 이미지
 

이 챠트를 사용하기 위해서, 사용하기 원하는 컬러를 찾고 그에 해당하는 foreground (30-37)와 background(40-47) 숫자들을 찾는다. 예를 들어, 일반적인 검정색 background에 녹색을 원하면 숫자는 32와 40이다. 그리고나서, 프롬프트를 정의하고 적당한 컬러 코드를 추가한다:


export PS1="\w> "

는 다음과 같이 된다:


export PS1="\e[32;40m\w> "

지금까지는 좋았다. 아직까지는 완벽하지 않다. 배쉬가 작업중인 디렉토리를 프린트 한 후에 "\e[0m" 시퀀스로 다시 컬러를 정상적으로 세팅해야한다:


export PS1="\e[32;40m\w> \e[0m"

이 정의는 보기 좋은 녹색 프롬프트를 만들것이다. 하지만 몇 가지 마무리 손질을 해야 한다. 40의 백그라운드 컬러 세팅을 포함 할 필요가 없다. 이것은 디폴트 컬러인 검정으로 백그라운드를 세팅하기 때문이다. 또한 녹색은 매우 희미하다; 컬러 코드 "1" 을 추가하여 이것을 픽스할 수 있다. 색깔이 더욱 밝아지고 볼드 텍스트가 된다. 이러한 변화에 더하여, 모든 non-printing 문자들을 배쉬 이스케이프 시퀀스 (\[와 \])안에 넣어야 한다. 이러한 시퀀스들은 배쉬에게 괄호안에 있는 문자들이 라인에서 공간을 차지하지 않도록 명령한다. 다음은 최종 프롬프트이다:


export PS1="\[\e[32;1m\]\w> \[\e[0m\]"

같은 프롬프트에 여러 색상을 사용하는 것에 대해 겁먹지 말라:


export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\H> \[\e[0m\]"


Xterm 즐기기

프롬프트에 정보와 컬러를 추가하는 방법을 설명했다. 더 복잡한 일도 할 수 있다. X 터미널 (rxvt 또는 aterm)의 타이틀바가 동적으로 업데이트 되도록 하는 특별한 코드를 프롬프트에 추가할 수 있다. 다음의 시퀀스를 PS1 프롬프트에 추가하면 된다:


"\e]2;titlebar\a"

"titlebar"를 xterm의 타이틀바에 나타내고 싶은 텍스트로 바꾼다. 정적 텍스트를 사용 할 필요가 없다; 배쉬 이스케이프 시퀀스를 타이틀바에 삽입할 수 있다. 다음 예제를 보자:


export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "

이것은 위의 스크린샷에 사용했던 프롬프트이다. 이 프롬프트가 개인적으로 마음에 든다. 왜냐하면 이것은 모든 정보를 터미널이 아닌 타이틀바에 놓았기 때문이다. 타이틀바 시퀀스를 "\[" 과 "\]" 안에 반드시 넣어야 한다. 터미널이 관련되어 있는한 이 시퀀스는 "non-printing"이기 때문이다. 많은 정보를 타이틀바에 넣을 때의 문제점은, 시스템 콘솔처럼 "비 그래픽(non-graphical)" 터미널을 사용한다면 정보를 볼 수 없다는 것이다. 이러한 문제를 픽스하기 위해 .bashrc에 다음과 같은 것을 추가할 수 있다:


if [ "$TERM" = "linux" ]
then
#we're on the system console or maybe telnetting in
export PS1="\[\e[32;1m\]\u@\H > \[\e[0m\]"
else
#we're not on the console, assume an xterm
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
fi

배쉬 조건문은 현재 터미널 세팅에 기초하여 프롬프트를 동적으로 설정할 것이다. ~/.bash_profile을 설정하여 시작할 때 ~/.bashrc을 소싱하도록 한다. 다음의 라인은 반드시 ~/.bash_profile에 있어야 한다:

이것으로 인해 로그인 쉘이나 비 로그인 쉘 중 어떤 것으로 시작하든지 같은 프롬프트 세팅이 된다.


source ~/.bashrc


참고자료

필자소개

author

Daniel Robbins는 Gentoo Technologies, inc.의 CEO이다. PC용 고급 Linux인 Gentoo Linux의 창설자이자, 차세대 Linux 포트 시스템인 Portage 시스템의 창시자이다. 또한 Macmillan사에서 출판하는 Caldera OpenLinux Unleashed, SuSE Linux Unleashed, Samba Unleashed 등에 기고활동을 하고 있다.

Tag : , , ,

name    password    homepage
 hidden


 Recent Comments
웹하드 갈아 탔습니다. ...
dark다크묵墨 - 2008
아래와 같이 수정하니까 ...
dark다크묵墨 - 2008
지금상태에서 이것만 Fil...
이상준 - 2008
utf-8문제는 이렇게 해결...
이상준 - 2008
위 블로그 운영자입니다....
이상준 - 2008
또 수정할만한 사항이 있...
dark다크묵墨 - 2008
 Recent Trackbacks
トムフォード 眼鏡
トムフォード 眼鏡
ブルガリ バッグ トート
ブルガリ バッグ トート
エルメス バッグ
エルメス バッグ
 Calendar
«   2026/02   »
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
 Archive
2011/02
2011/01
2010/12
2010/05
2010/03
 Location [click]
 Link
frag's blog
쀍 의 블로그
웹 하드
한신대학교 마이컴 Lab.

Skin by BeautyFactory