사용자 정의 bash 셸: 굵게/색상 명령

사용자 정의 bash 셸: 굵게/색상 명령

온라인에는 많은 튜토리얼/포스트가 있습니다(예:http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/) 설정을 통해 bash에서 프롬프트를 사용자 정의하는 방법에 대해 설명합니다 PS1. 입력하는 명령의 색상/굵게를 사용자 정의할 수 있는 방법이 있습니까?

즉, 예를 들어 녹색 프롬프트와 굵은 파란색 명령을 사용한 다음 기본 색상으로 출력하고 싶습니다. 아래 예에서는 joe>""를 설정하여 녹색, 파란색, 굵게 표시하는 방법을 이미 알고 있습니다 PS1. 그런데 git status디스플레이를 굵게 표시할 수 있는 방법이 있나요 ?

joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...

답변1

PS1 뒤에 색상 후행을 남겨두고( >예에서 시작하려면) DEBUG명령을 실행하기 전에 bash 트랩을 사용하여 색상을 지워야 합니다(그러나 셸에서 Enter를 누른 후). 다음과 같이 시도해 보세요.

shopt -s extdebug
trap "tput sgr0" DEBUG

답변2

완전성을 위해 bash에서 프롬프트 색상과 명령줄 입력 색상을 설정하는 방법은 다음과 같습니다. 이 줄을 .bashrc.

PS1='\[\e[1;34m\]\w\$ \[\e[0;32m\]'
trap 'printf \\e[0m' DEBUG

다음과 같은 DEBUG 트랩Chris Tang이 제안한, 텍스트 속성을 재설정하는 데 사용됩니다. 그 목적은 디버깅을 위한 것이지만,사용자가 입력한 명령을 실행하기 전에 코드를 실행하는 것도 유용합니다..

프롬프트 설정에서:

  • \[…\]이스케이프 시퀀스 주위에 사용되어 bash에게 화면 공간을 차지하지 않을 것임을 알립니다(이스케이프 시퀀스가 ​​없으면 bash가 프롬프트를 다시 그려야 할 때 화면이 깨질 수 있습니다).
  • \e[…m여기서 는 숫자 또는 보다 일반적으로 세미콜론으로 구분된 일련의 숫자입니다.이스케이프 시퀀스다음 텍스트의 색상 및 기타 속성에 영향을 주기 위해 터미널로 전송됩니다. 예를 들어 1;34굵은 파란색을 설정하고 0;32모든 속성을 재설정한 다음 색상을 녹색으로 전환합니다. 입맛에 맞게 조절하세요.
  • \w\$현재 디렉토리 및 $또는 을 인쇄합니다 #. 물론 이를 원하는 대로 변경할 수 있으며 필요에 따라 사이에 텍스트 속성 변경 사항을 삽입할 수 있습니다.
  • 마지막에는 텍스트 입력의 색상을 설정하는 마지막 속성 변경이 하나 있습니다.

답변3

저는 BASH 명령을 배우고 있고 여기 앉아서 제 버전의 색상 명령을 가지고 놀고 있습니다. 나는 이 해결책을 생각해 냈습니다.

다음 명령을 사용하십시오.

PS1='\[\e[0:36m\]\h>\[\e[0;31m\]'

분해: PS1=: PS1 명령 시작

' ': 명령을 작은따옴표로 묶습니다(따라서 BASH는 그것이 명령이라고 생각하지 않습니다).

\ : 각 개별 명령은 다음으로 시작됩니다.

[ ] : 각 명령이 포함되어 있습니다.

\e(\033 ASCII 이스케이프 문자일 수도 있음): 색상 명령을 시작합니다.

색상 명령은 해당 명령이 적용되는 개체 앞에 옵니다.

[\e[0;36m] : 청록색

\h : 호스트 이름

'>' : 호스트 이름 뒤에 인쇄

[\e[0;31m]: 빨간색

분명히 끝에 있는 빨간색 명령은 입력을 빨간색으로 만듭니다. 원하는대로 색상을 변경하면 됩니다.

또한 다음 사이트가 나에게 약간의 도움이 되었습니다.

https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/

내 버전: GNU bash, v.4.2.46

주의 깊은,

족제비

관련 정보