웹사이트 검색

Linux 터미널 프롬프트에서 Bash 색상 및 콘텐츠를 사용자 정의하는 방법


오늘날 Bash는 대부분의 (전부는 아니지만) 최신 Linux 배포판의 기본 셸입니다. 그러나 터미널의 텍스트 색상과 프롬프트 내용은 배포판마다 다를 수 있습니다.

권장 자료: 가장 자주 사용되는 Linux용 오픈 소스 셸 5개

더 나은 접근성이나 단순한 변덕을 위해 이를 사용자 정의하는 방법이 궁금하신 경우 계속 읽으십시오. 이 기사에서는 이를 수행하는 방법을 설명합니다.

PS1 Bash 환경 변수

명령 프롬프트와 터미널 모양은 PS1이라는 환경 변수에 의해 제어됩니다. Bash 매뉴얼 페이지에 따르면 PS1은 셸이 명령을 읽을 준비가 되었을 때 표시되는 기본 프롬프트 문자열을 나타냅니다.

PS1에서 허용되는 콘텐츠는 맨 페이지의 PROMPTING 섹션에 그 의미가 나열되어 있는 여러 개의 백슬래시 이스케이프 특수 문자로 구성됩니다.

설명을 위해 시스템에 PS1의 현재 콘텐츠를 표시해 보겠습니다(귀하의 경우에는 다소 다를 수 있습니다).

echo $PS1

[\u@\h \W]$

이제 필요에 따라 PS1을 사용자 정의하는 방법을 설명하겠습니다.

PS1 형식 사용자 정의

매뉴얼 페이지의 PROMPTING 섹션에 따르면 각 특수 문자의 의미는 다음과 같습니다.

  1. \u: 현재 사용자의 사용자 이름입니다.
  2. \h: 정규화된 도메인 이름의 첫 번째 점 (.)까지의 호스트 이름입니다.
  3. \W: 현재 작업 디렉토리의 기본 이름, $HOME은 물결표 (~)로 축약됩니다.
  4. \$: 현재 사용자가 루트이면 #을 표시하고, 그렇지 않으면 $를 표시합니다.

예를 들어, 현재 명령의 기록 번호를 표시하려면 \!를 추가하고, 대신 FQDN을 표시하려면 \H를 추가하는 것이 좋습니다. 짧은 서버 이름입니다.

다음 예에서는 이 명령을 실행하여 두 가지를 모두 현재 환경으로 가져옵니다.

PS1="[\u@\H \W \!]$"

Enter를 누르면 프롬프트 내용이 아래와 같이 변경되는 것을 볼 수 있습니다. 위 명령을 실행하기 전과 후의 프롬프트를 비교하십시오.

이제 한 단계 더 나아가 명령 프롬프트에서 사용자호스트 이름의 색상(텍스트와 주변 배경 모두)을 변경해 보겠습니다.

실제로 프롬프트의 세 가지 측면을 사용자 정의할 수 있습니다.

Text Format Foreground (text) color Background color
0: normal text 30: Black 40: Black
1: bold 31: Red 41: Red
4: Underlined text 32: Green 42: Green
33: Yellow 43: Yellow
34: Blue 44: Blue
35: Purple 45: Purple
36: Cyan 46: Cyan
37: White 47: White

시작 부분에 \e 특수 문자를 사용하고 끝에 m를 사용하여 뒤에 오는 색상 순서를 나타냅니다.

이 순서에서 세 가지 값(배경, 형식전경)은 쉼표로 구분됩니다(값이 지정되지 않으면 기본값이 가정됩니다). .

권장 읽기: Linux에서 Bash 쉘 스크립팅 알아보기

또한 값 범위가 다르기 때문에 어느 값(배경, 형식, 전경)을 먼저 지정하는지는 중요하지 않습니다.

예를 들어, 다음 PS1을 사용하면 프롬프트가 빨간색 배경에 노란색 밑줄이 그어진 텍스트로 표시됩니다.

PS1="\e[41;4;33m[\u@\h \W]$ "

보기에는 좋지만 이 사용자 정의는 현재 사용자 세션 동안에만 지속됩니다. 터미널을 닫거나 세션을 종료하면 변경 사항이 손실됩니다.

이러한 변경 사항을 영구적으로 적용하려면 배포판에 따라 ~/.bashrc 또는 ~/.bash_profile에 다음 줄을 추가해야 합니다.

PS1="\e[41;4;33m[\u@\h \W]$ "

자신에게 가장 적합한 색상을 찾기 위해 자유롭게 색상을 시험해 보세요.

요약

이 글에서는 Bash 프롬프트의 색상과 내용을 사용자 정의하는 방법을 설명했습니다. 이 게시물에 대한 질문이나 제안 사항이 있는 경우 아래 댓글 양식을 사용하여 언제든지 문의해 주세요. 여러분의 의견을 기다리겠습니다!