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



답변

PS1 뒤에 색상을 남기고 ( >예제에서 시작한 후 ) bash DEBUG트랩을 사용 하여 명령을 실행하기 전에 색상을 지우십시오 (그러나 쉘에서 enter 키를 누른 후) :

shopt -s extdebug
trap "tput sgr0" DEBUG


답변

완성도를 높이기 위해 bash에서 프롬프트 색상과 명령 줄 입력 색상을 설정하는 방법이 있습니다. 이 줄을에 넣으십시오 .bashrc.

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

Chris Down 에서 제안한 DEBUG 트랩 은 텍스트 속성을 재설정하는 데 사용됩니다. 디버깅 용이지만 user에 의해 입력 된 명령을 실행하기 전에 코드를 실행하는 것도 유용합니다 .

프롬프트 설정에서 :

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

답변

나는 단지 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

조심해,

족제비


답변