달력

4

« 2024/4 »

  • 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
.. .. ..

디폴트로 되어 있는 프롬프트를 바꾸고 싶은가? 화려한 컬러를 넣고 싶은가? 그렇다면 당신은 제대로 찾아 왔다.

bash는 프롬프트 유지를 위해 PS1에서 PS4까지 네 가지 환경변수를 갖고 있다. 여기서는 로긴쉘에 적용되는 PS1만 다룬다.

먼저 /etc/profile에서 설정된 기본 PS1 값을 살펴 보자. 어쩌면 당신은 아직도 이 기본값을 사용하고 있을 지도 모른다.

잠시후 당신은 /etc/profile에서 PS1에 대한 언급이 전혀 없음을 발견하고는 분노에 휩싸여 이 사이트를 떠나려고 할 지도 모른다. 잠깐! 파트1에서 얘기했던 내용을 다시 한번 떠올려 보자, /etc/profile의 맨 아래에 보면 /etc/bashrc가 존재할 경우 이것을 source 한다고 말했다. /etc/bashrc에 바로 기본 PS1 값이 들어 있다.

PS1='\h:\w \u\$ '

한 부분씩 설명하겠다. 첫번째 \h는 호스트이름을 보여준다. 그러고 콜론을 찍고 \w는 현재 작업 디렉토리를 보여준다. 그다음 \u는 유저네임을 보여준다. \$는 UID가 영이면 #를 아니면 $을 출력한다. 마지막으로 사용자가 명령어를 입력하는 공간과 분리를 위해 공백이 하나 들어가 있다.

그런데 참고로, 오리지널 bash 배포판에서 PS1의 기본값은 PS1='\s-\v\$ ' 이다.

\h, \w 등등 이렇게 하나의 백슬래쉬와 하나의 문자로 구성된 문자열이 프롬프트에 어떠한 정보를 넣을 것인지를 결정한다. 이 문자열들에 대한 전체 리스트는 다음과 같이 얻을 수 있다.

  1. man bash
  2. 슬래쉬를 하나 치고 PROMPTING 라고 입력한 후, 리턴을 친다
  3. 슬래쉬를 하나 치고 리턴을 친다

PROMPTING은 반드시 대문자로 해야 한다. 즉, bash 메뉴얼에서 두번째 나타나는 PROMPTING 이라는 문자열을 찾는다.

그럼 이제 색깔 넣는 연습을 해 보자. 안시 컬러는 \033[으로 시작되고 컬러코드가 이어 나오고 m으로 끝난다. bash에서는 \033 대신에 \e를 사용할 수 있다.

다음은 컬러코드 리스트이다.

0 = 기본값 1 = 볼드체 4 = 밑줄 5 = 점멸 7 = 역상
31 = 빨강 32 = 초록 33 = 오렌지 34 = 파랑 35 = 자주 36 = 청록 37 = 회색
40 = 검정 배경
41 = 빨강 배경
42 = 초록 배경
43 = 오렌지 배경
44 = 파랑 배경
45 = 자주 배경
46 = 청록 배경
47 = 회색 배경
90 = 진회 색
91 = 연빨강
92 = 연두 93 = 노랑 94 = 연한 파랑 95 = 연한 자주 96 = 하늘색
100 = 진회색 배경
101 = 연한 빨강 배경
102 = 연두 배경
103 = 노랑 배경
104 = 연한 파랑 배경
105 = 연한 자주 배경
106 = 하늘색 배경

이제 파트1에서 소개했던 예제 .bash_profile에 나오는 PS1의 값을 이해할 수 있다.

PS1="\e[33m[\w]\e[0m\n\!: \u$ "

오렌지 색깔로 현재 작업디렉토리를 표시한 후, 색깔을 까만색으로 다시 주고 (이것은 내 터미널의 기본바탕 색깔이 까만색이기 때문이다) 다음 줄로 가서, 유저네임을 표시하고 $을 붙여 준 후, 공백을 하나 표시한다.

고급예제 하나 살짝 소개한다. 네트웍 관리자라면 현재 얼마나 많은 사용자들이 로긴했는지 모니터링하고 싶어한다. 간단하게 프롬프트에 이 정보를 집어 넣을 수 있다.

PS1='$(who | wc -l) \w\$ '

$(..)은 다른 쉘의 백틱(물결무늬 아래에 있는 문자)이 bash에서 개선된 형태이다. $(..)에 대해 본격적으로 다루는 것은 이 기사의 범위를 벗어 난다.

2.2 히스토리 전방/후방 검색 키 바인딩 변경하기

히스토리를 앞뒤로 왔다 갔다 하는 키는 익히 아는 대로 상향키와 하향키로 되어 있다. 히스토리 전방/후방 검색 키는 너무 복잡해서 나 자신도 잊어 버렸다. 이렇게 복잡한 키를 상향키와 하향키로 변경해 보자. 소개했던 예제 .bash_profile에 나오는 내용이다.

bind '"\M-[A":history-search-backward'
bind '"\M-[B":history-search-forward'

이 키 바인딩은 기존의 상향키와 하향키로 히스토리를 누비는 기능을 해치지 않는다. 이것은 글자를 몇 개 입력한 후, 상향키와 하향키를 움직였을 때 동작한다.

즉, 히스토리 상에 cd 명령을 몇 개 내리고 다른 명령도 몇 개 내린 후라고 가정해 보자. 이때 프롬프트에서 cd까지만 입력하고 상향키를 눌러 보면 cd로 시작되는 히스토리의 내용만 보여 준다


.
:
Posted by .07274.