배시 프롬프트를 사용자 정의하고 색상을 지정하는 방법

0
748

대부분의 Linux 배포판은 Bash 프롬프트를 다음과 같이 구성합니다. username@hostname:directory$ . 그러나 원하는 것을 포함하도록 Bash 프롬프트를 구성하고 원하는 색상을 선택할 수도 있습니다.

여기 예제 단계는 Ubuntu 16.04 LTS에서 수행되었습니다. .bashrc 파일의 기본 Bash 프롬프트와 설정이 약간 다를 수 있지만 프로세스는 다른 Linux 배포판에서 동일해야합니다.

프롬프트 변수가 저장된 위치

Bash 프롬프트 구성은 사용자 계정의 .bashrc 파일에 저장됩니다. ~/.bashrc. 따라서 사용자 이름이 bob 인 경우 파일은 /home/bob/.bashrc.

파일을 열어 현재 Bash 변수를 볼 수 있습니다. vi, emacs 또는 다른 텍스트 편집기를 사용할 수도 있지만 nano를 예제 텍스트 편집기로 사용합니다. 터미널을 열고 다음을 실행하십시오.

nano ~/.bashrc

아래로 스크롤 PS1= 부분. 첫 번째 변수는 색상 정보를 포함하기 때문에 다소 복잡해 보입니다. 나중에 설명하겠습니다. 색상 정보가없는 두 번째 변수는 다음과 같습니다.

${debian_chroot:+($debian_chroot)}u@h:w$

이것은 여전히 ​​약간 복잡하기 때문에 ${debian_chroot:+($debian_chroot)} 비트. 이것들은 Bash에게 데비안 chroot 환경을 사용하고 있고 일반적으로 표시되지 않을 것인지 알려줍니다. 이를 무시하고 Bash 프롬프트 변수의 기본 구조는 다음과 같습니다.

u@h:w$

u 사용자 이름을 나타냅니다. @ @ 기호를 나타냅니다. h 호스트 이름 (컴퓨터 이름)을 나타냅니다. : : 문자를 나타냅니다. w 작업 디렉토리를 나타내고 $ 일반 사용자 계정 인 경우 $, 루트 인 경우 #을 나타냅니다. 모든 것을한데 모으면 username@hostname:working_directory$.

Bash 프롬프트를 변경하려면 PS1 변수에서 특수 문자를 추가, 제거 또는 재 배열하면됩니다. 그러나 기본 변수보다 더 많은 변수를 사용할 수 있습니다.

나노에서는 텍스트 편집기를 그대로두고 종료하려면 Ctrl + X를 누르십시오. 실제로 .bashrc 파일에 새 변수를 작성하기 전에 변수를 실험하는 방법을 보여줍니다.

Custom 사용자 정의 Bash 프롬프트 생성 방법

Bash 프롬프트 구성은 PS1 변수에 저장됩니다. PS1 변수의 내용을 새 변수에 저장하려면 다음 명령을 실행하십시오.

DEFAULT=$PS1

이제 PS1 변수를 다른 값으로 설정하여 실험 할 수 있습니다. 예를 들어, 여기에서 첫 번째 줄은 프롬프트를 기본“user $”프롬프트로 설정하고 두 번째 줄은 프롬프트를 기본“user : working_directory $”프롬프트로 설정합니다.

PS1="u$ "

PS1="u:w$ "

기본 프롬프트로 돌아가려면 다음 명령을 실행하십시오.

PS1=$DEFAULT

Bash는 이전에 기본 설정을 저장했기 때문에 기본 프롬프트로 복원됩니다. 여기서 변경 한 내용은 현재 Bash 세션에 대해서만 일시적이므로 터미널 창에서 항상 로그 아웃 한 후 다시 로그인하거나 닫았다가 다시 열어서 기본 프롬프트로 돌아갈 수 있습니다. 그러나 위의 줄을 사용하면 창을 로그 아웃하거나 닫는 번거 로움없이 쉽게 기본 Bash 프롬프트로 돌아갈 수 있습니다.

변수에 문자 나 텍스트를 추가 할 수 있습니다. 따라서 기본 프롬프트 앞에 “Hello World”를 붙이려면 다음을 사용할 수 있습니다.

PS1="Hello World u@h:w$ "

이제 기본 사항을 알아 냈으므로 모든 특수 문자가 무엇인지 알아야합니다. 아마도이 중 많은 것을 신경 쓰지 않을 것이지만 Bash 매뉴얼에 표시된 전체 목록은 다음과 같습니다.

  • 종 캐릭터 : a
  • “평일 월 날짜”형식의 날짜 (예 : “화 5 월 26 일”) : d
  • 형식은 strftime (3)으로 전달되고 결과는 프롬프트 문자열에 삽입됩니다. 형식이 비어 있으면 로케일 별 시간 표현이 나타납니다. 괄호가 필요합니다 : D{format}
  • 이스케이프 문자 : e
  • 첫 번째‘.’까지의 호스트 이름 : h
  • 호스트 이름 : H
  • 현재 셸에서 관리하는 작업 수 : j
  • 쉘 터미널 장치 이름의 기본 이름 : l
  • 줄 바꿈 : n
  • 캐리지 리턴 : r
  • 쉘 이름, 기본 이름 $ 0 (마지막 슬래시 다음 부분) : s
  • 24 시간 HH : MM : SS 형식의 시간 : t
  • 12 시간 HH : MM : SS 형식의 시간 : T
  • 오전 12시 / 오후 형식의 시간 : @
  • 24 시간 HH : MM 형식의 시간 : A
  • 현재 사용자의 사용자 이름 : u
  • Bash 버전 (예 : 2.00) : v
  • Bash 버전 + 패치 레벨 (예 : 2.00.0) : V
  • $ HOME이 물결표로 축약 된 현재 작업 디렉토리 ($ PROMPT_DIRTRIM 변수 사용) : w
  • $ PWD의 기본 이름이며 $ HOME은 물결표로 축약됩니다. W
  • 이 명령의 히스토리 번호 : !
  • 이 명령의 명령 번호 : #
  • 유효 uid가 0이면 #, 그렇지 않으면 $ : $
  • ASCII 코드가 8 진수 값 nnn 인 문자 : nnn
  • 백 슬래시 : \
  • 비 인쇄 문자 순서를 시작하십시오. 이것은 터미널 제어 시퀀스를 프롬프트에 포함시키는 데 사용될 수 있습니다. (
  • 비 인쇄 문자 시퀀스를 종료하십시오. )

따라서 Bash 프롬프트에 날짜와 시간을 추가하고 작업 디렉토리를 두 ​​번째 줄에 명령하려면 다음 구성을 사용할 수 있습니다.

PS1="(d t) u@hnw$ "

여기서 대괄호는 전혀 필요하지 않지만 시각적으로 구분하여 줄을 쉽게 읽을 수 있도록 도와줍니다. 앞서 살펴본 것처럼 원하는 변수에 텍스트 또는 일반 문자를 추가 할 수 있으므로 원하는대로 사용하십시오.

알아야 할 또 하나의 강력한 트릭이 있습니다. 프롬프트에 명령의 출력을 추가 할 수 있습니다. 프롬프트가 나타날 때마다 Bash는 명령을 실행하고 현재 정보를 채 웁니다. 이렇게하려면 두 명령 사이에 실행할 명령을 포함 시키십시오. ` 문자. 아포스트로피가 아닙니다. 즉, 키보드의 Tab 키 위에 나타나는 억양입니다.

예를 들어, 프롬프트에서 Linux 커널 버전을보고 싶다고 가정 해 봅시다. 다음과 같은 줄을 사용할 수 있습니다.

PS1="u@h on `uname -s -r` w$ "

또 다른 예로, 시스템의 가동 시간 및로드 평균을보고 싶다고 가정 해 보겠습니다. uptime 명령. 다음 구성을 사용하면 나머지 프롬프트가 시작되기 전에 가동 시간을 자체 라인에 배치 할 수 있습니다.

PS1="(`uptime`)nu@h:w$ "

이상적인 명령 프롬프트를 구성하기 위해 다른 특수 문자와 명령을 자유롭게 실험하십시오.

배쉬 프롬프트에 색상을 추가하는 방법

원하는 메시지를 찾았 으면 색상을 추가 할 수 있습니다. 실제로는 매우 간단하지만보고있는 내용을 이해하지 못하면 변수가 엉망이고 복잡해 보입니다.

예를 들어, 이전의 기본 색상 프롬프트 변수는 다음과 같습니다.

${debian_chroot:+($debian_chroot)}(33(01;32m)u@h(33(00m):(33(01;34m)w(33(00m)$

또는 debian_chroot 비트를 다시 한 번 제거하십시오.

(33(01;32m)u@h(33(00m):(33(01;34m)w(33(00m)$

이것은 실제로 단지 u@h:w$ 색상 정보가 포함 된 이전의 변수입니다. 실제로 몇 개의 섹션으로 나눌 수 있습니다.

(33(01;32m)u@h

(33(00m):

(33(01;34m)w

(33(00m)$

첫 번째 섹션은 u@h 녹색으로 바뀌는 색상 정보가 앞에옵니다. 두 번째는 : 색상 정보를 앞에 붙여서 색상을 제거합니다. 세 번째는 w 비트는 파란색으로 바뀌는 색상 정보가 앞에옵니다. 네 번째는 $ 비트는 색을 제거하는 색상 정보가 앞에옵니다.

자신 만의 색상 태그를 구성하는 방법을 이해하면 원하는 색상을 Bash 프롬프트의 원하는 섹션에 추가 할 수 있습니다.

알아야 할 사항은 다음과 같습니다. ( ) character에스. 태그 안에서는 다음 중 하나로 시작해야합니다 33( 또는 e( 이 정보가 Bash임을 Bash에 표시합니다. 양자 모두 33(e( 같은 일을하십시오. e( 짧아서 사용하기가 더 편리하지만 33( 기본적으로 사용되는 것과 일치합니다. 태그의 끝에서 m 컬러 태그의 끝을 나타냅니다.

이를 분류하면 다음과 같이 모든 색상 태그가 표시됩니다. 유일한 차이점은 실제 색상을 정의하기 위해 COLOR 대신 추가하는 정보입니다.

(33(COLORm)

Bash를 사용하면 전경 텍스트의 색상을 변경하고“bold”또는“underline”과 같은 속성을 텍스트에 추가하고 배경색을 설정할 수 있습니다.

전경 텍스트의 값은 다음과 같습니다.

  • 블랙 : 30
  • 블루 : 34
  • 청록색 : 36
  • 녹색 : 32
  • 퍼플 : 35
  • 레드 : 31
  • 화이트 : 37
  • 노랑 : 33

예를 들어 자주색 텍스트는 색상 코드 32이므로 (33(32m) 보라색 텍스트

텍스트의 속성을 지정할 수도 있습니다. 이 속성은 색상 번호 앞에 세미콜론 (;)으로 구분하여 추가해야합니다. 이러한 속성을 가진 텍스트는 터미널 에뮬레이터마다 다르게 보입니다.

텍스트 속성의 값은 다음과 같습니다.

  • 일반 텍스트 : 0
  • 굵게 또는 밝은 텍스트 : 1 (터미널 에뮬레이터에 따라 다름)
  • 희미한 텍스트 : 2
  • 밑줄 친 텍스트 : 4
  • 깜박임 텍스트 : 5 (대부분의 터미널 에뮬레이터에서는 작동하지 않습니다.)
  • 반전 된 텍스트 : 7 (이렇게하면 전경색과 배경색이 반전되므로 현재 텍스트가 검정색 배경에 흰색 텍스트 인 경우 흰색 배경에 검은 색 텍스트가 표시됩니다.)
  • 숨겨진 텍스트 : 8

실제로 일반 텍스트 속성을 포함 할 필요는 없습니다. 어쨌든 이것이 기본값입니다.

예를 들어 빨간색 텍스트는 코드 31이고 굵은 텍스트는 코드 1이므로 (33(1;31m) 굵은 빨간색 텍스트.

배경색을 지정할 수도 있지만 배경색에 속성을 추가 할 수는 없습니다.

배경색의 값은 다음과 같습니다.

  • 검정색 배경 : 40
  • 파란색 배경 : 44
  • 시안 색 배경 : 46
  • 녹색 배경 : 42
  • 보라색 배경 : 45
  • 빨간색 배경 : 41
  • 흰색 배경 : 47
  • 노란색 배경 : 43

예를 들어 파란색 배경이 코드 44이므로 (33(44m) 파란색 배경을 지정합니다.

전경색과 배경색 태그를 모두 지정할 수 있습니다. 예를 들어 42는 녹색 배경을 나타내고 31은 빨간색 텍스트를 나타냅니다. 따라서 기본 프롬프트가 녹색 배경에서 빨간색 텍스트가되도록하려면 다음을 사용하십시오.

PS1="(33(42m)(33(31m)u@h:w$ "

여기서는 단일 배경색을 지정한 다음 여기에 단일 전경색을 지정합니다. 여기서는 프롬프트 시작시 시작하여 프롬프트의 모든 텍스트에 적용됩니다. 그러나 변수의 원하는 수만큼 색상 태그를 지정하여 원하는대로 프롬프트의 다른 섹션에 색상을 지정할 수 있습니다.

색상 정보 00을 지정하지 않으면 배경 및 전경 텍스트 색상이 계속해서 프롬프트를 통과합니다. 변수 내에서이 태그를 사용하여 프롬프트에서 어딘가에 서식을 기본값으로 다시 설정할 수도 있습니다. 예를 들어 다음 줄은 $ 캐릭터.

PS1="(33(42m)(33(31m)u@h:w\(33(00m)$ "

New 새 기본 프롬프트를 설정하는 방법

색상 실험을 마치면 현재 세션에서 Bash 프롬프트가 표시되어야합니다. 그러나 새 프롬프트를 영구적으로 설정하여 모든 Bash 세션에서 자동으로 사용되도록 할 수 있습니다.

이를 위해 앞서 살펴본 .bashrc 파일에서 PS1 변수의 내용을 변경하면됩니다.

원하는 텍스트 편집기에서 다음과 같이 .bashrc 파일을여십시오.

nano ~/.bashrc

아래로 스크롤하여 PS1 = 섹션을 찾으십시오. 기본 변수를 사용자 정의 변수로 바꾸십시오. 아마도 떠나고 싶을 것입니다. ${debian_chroot:+($debian_chroot)} 그러나 비트만으로도 어쨌든 chroot 환경에 있지 않으면 나타나지 않습니다.

아래에 컬러 PS1 변수를 입력하십시오 if ( "$color_prompt" = yes ); then 선. 아래에 색상없이 변수를 입력하십시오 else 선.

파일을 저장하고 텍스트 편집기를 닫으십시오. 예를 들어, 파일을 nano로 저장하려면 Ctrl + O를 누르고 Enter를 누른 다음 Ctrl + X를 눌러 종료하십시오.

다음에 터미널에서 로그인하거나 새 터미널 창을 여는 등의 새로운 Bash 셸을 시작하면 사용자 지정 프롬프트가 표시됩니다.