ANSI코드를 이용한 Bash Prompt 색상 변경 방법
이번 포스트에선 ANSI 코드를 활용한 Linux Terminal Prompt 색상 변경방법에 대해 작성하겠습니다.
저는 기본적으로 Red Hat 계열(CentOS 포함)을 사용 중 이기에 Debian이나 Ubuntu와 같은 다른 Linux OS에 대해는 다루지 않겠습니다.
ANSI코드 지원하는 리눅스 터미널 환경에선 해당 코드로 색깔표현이 가능하기에 Color 값을 이용해 Prompt의 대한 형식을 변경하곤 합니다.
특정 목적을 가진 서버를 로그인시에 한눈에 알아보기 위해서 설정하거나, Default로 설정 되어있는 값이 절대경로를 표시해주지 않기 때문에 편의성을 위해서 설정하는 경우가 있습니다.
실제 운영환경에서도 설정하는 경우가 많으며 절대경로와 같은 편의성과
"중요도가 높은 서버에서 명령사용에 경각심을 위해 로그인시 한눈에 알아보고싶다" 라는 고지식한 이유로 설정해드린 경우가 몇번 있었습니다.
(사실.. ssh로그인시 출력되는 sshd의 issue파일이나 motd같은 파일로 Welcome 문구를 경고형식으로 작성해도 되고, hostname으로 구분해도되나.. 여러서버를 관리하는 입장에선 햇갈릴수도 있다... 개인적으론 꾸미는 목적이 크다고 생각..)
기본적인 설명
먼저 Linux에서 환경변수 중 Shell에 대한 Prompt 변수는 PS1과 PS2가 있습니다.
PS1 변수는 일반적으로 서버 로그인 직후부터 보이는 1차 Prompt 라고 생각하면 됩니다.
PS2 변수는 bash 명령어를 다 마치지 않은 상태에서 추가 입력을 기다리는 상태, 2차 Prompt 라고 생각하면 됩니다.
(> 형식으로 다음 명령을 기다리는 상태거나 현재 명령을 마무리짓기 기다리는 상태)
$PS1 의 기본값 : [\u@\h \W]\$
$PS2 의 기본값 : >
echo 명령을 통해 현재 설정되어있는 값을 쉽게 확인 할 수 있습니다.
(변수를 정의하는게 아닌이상 '$' 붙혀 설정된 변수를 불러오거나 사용할 수 있음)
$ echo $PS1
$ echo $PS2
해당 변수를 지정할때는 터미널에서 $ PS1= Value 형식으로 지정하면 되고,
매번 명령을 입력해서 형식을 변경할 순 없으니 로그인시 적용되는 환경설정 파일에 변수에 대해 export 시켜 유지시키는게 기본적입니다.
/etc/profile : 서버 내 전체 계정에서 환경변수 정의가능
~/.bash_profile OR ~/.bashrc : 현재 로그인한 계정에서만 적용
(각 계정의 home 디렉토리에 bash에 관련된 파일은 숨김파일 형식으로 . 이 붙어있으며 $ ls -al 로 리스팅 확인가능)
주로 저는 root 계정일때만 적용 되게끔 사용합니다. (/root/.bash_profile)
# vi /root/.bash_profile
=======================
....
export PS1=' ~~~~~~~ '
....
=======================
파일 내용 저장 후 해당 파일 # source / # bash로 실행하면 적용
주요 프롬프트 형식
터미널에서 사용되는 프롬프트의 특수한 문자열마다 의미가 다른데, 해당 내용을 알고 있어야
원하는 프롬프트 형식을 만들어 낼 수 있습니다.
문자열의 의미는 하기 표를 통해 확인할 수 있고, 하기 내용만으로도 충분히 커스텀 가능합니다.
형식 | 의미 설명 |
₩d | current date (요일 월 일) |
₩s | shell 이름 |
₩t | 24시간 형식의 현재 시간 |
₩T | 12시간 형식의 현재 시간 |
₩@ | AM/PM 형식의 현재 시간 |
₩h | Hostname |
₩u | 로그인한 User 명 |
₩w | 현재 위치한 절대경로 |
₩W | 현재 위치한 상대경로 |
₩! | 현재 명령의 History 넘버 |
₩[ | Non-printing 캐릭터 시그널 시작 |
₩] | Non-printing 캐릭터 시그널 종료 |
₩[, ₩] 와 같은 문자열로 시퀀스를 묶어 여러가지의 코드를 조합 할 수 있습니다.
원리에 대해 설명하자면 너무 길어지기에 의미정도만 알아두고 넘어가겠습니다.
(밑에 ANSI Color Code를 활용하여 제가 사용하고 있는 예시를 몇개 작성하겠으니 형식을 보고 파악하시면서 원하는데로 커스텀해서 사용하시면 될 것 같습니다.)
ANSI Color Code
[0m : 모든 색과 스타일 초기화
[1m : 굵게(bold) / 밝게
[3m : 이탤릭체(italic)
[4m : 밑줄(underline)
[7m : 반전(글자색/배경색을 거꾸로)
[9m : 가로줄 치기
[22m : 굵게(bold) 제거
[23m : 이탤릭체(italic)제거
[24m : 밑줄(underline)제거
[27m : 반전 제거
[29m : 가로줄 제거
[30m : 글자색:검정
[31m : 글자색:빨강
[32m : 글자색:초록
[33m : 글자색:노랑
[34m : 글자색:파랑
[35m : 글자색:마젠트(분홍)
[36m : 글자색:시안(청록)
[37m : 글자색:백색
[39m : 글자색으로 기본값으로
[40m : 바탕색:흑색
[41m : 바탕색:적색
[42m : 바탕색:녹색
[43m : 바탕색:황색
[44m : 바탕색:청색
[45m : 바탕색:분홍색
[46m : 바탕색:청록색
[47m : 바탕색:흰색
[49m :바탕색을 기본값으로
사용 예시
몇가지 예시 내용을 작성 후에 이번 포스트를 마치겠습니다.
하기 내용을 참조해서 원하는 프롬프트 형태로 커스텀하시면 됩니다.
export PS1='\033[01;31m[\u\[\033[01;32m\]@\h \[\033[01;34m\w]\[\033[00m\]\$ '
환경설정 파일에 넣은 후 적용
export PS1='\033[01;34m[\u\[\033[01;34m\]@\h \[\033[01;34m\w]\[\033[00m\]\$ '
환경설정 파일에 넣은 후 적용
export PS1='\033[01;31m[\u\[\033[01;31m\]@\h \[\033[01;34m\w]\[\033[00m\]\$ '
환경설정 파일에 넣은 후 적용
export PS1='\e[34;42m[\u@\h \w]\$ \e[0m '
환경설정 파일에 넣은 후 적용
'OS > RHEL | CentOS' 카테고리의 다른 글
Swap 영역 생성/확장 (Standard Partition / LVM) (0) | 2022.07.05 |
---|---|
Swap 영역에 대해 (Swap 메모리) (0) | 2022.07.04 |
RHEL (Red Hat Enterprise Linux) EOS (End Of Service) 날짜 (0) | 2022.06.17 |
CentOS EOL(End Of Life) 날짜 및 Rocky Linux (0) | 2022.06.17 |
Linux Password 강제 변경 방법 및 복잡성 정책 (0) | 2022.06.16 |
댓글