Bash 쉘에서 명령을 실행한 후 출력 색상 재설정

Bash 쉘에서 명령을 실행한 후 출력 색상 재설정

다른 색상을 사용하여 내 명령을 쉘의 나머지 출력과 쉽게 구별하고 싶습니다. 하지만 저는 커스텀 bash 쉘에 대한 경험이 많지 않아서 입력 후 색상을 재설정하는 방법을 모릅니다.

현재 PS1 변수는 다음과 같습니다.

export PS1="$red\u$green\$(__git_ps1) $turk\w
$white$ "

# '\$(__git_ps1)' git status prompt (generates a space before it even if empty)

그래서 내 입력은 흰색입니다. 그러나 명령의 출력조차도 재설정되지 않았기 때문에 흰색입니다. 또한 명령 자체가 출력을 색상으로 구분하는 경우 색상 자체가 재설정되어 흰색과 회색이 보기 흉하게 혼합됩니다.

그렇다면 명령을 입력한 후 색상을 어떻게 재설정합니까?

답변1

DEBUG트랩은 모든 명령 전에 실행되므로 명령줄 입력에 색상이 있는 경우 이를 남용하여 색상을 재설정할 수 있습니다. (디버깅이 아니기 때문에 "남용"입니다.)

이것으로:

$ promptcol="$(tput sgr0)$(tput setaf 3)"
$ cmdcol="$(tput sgr0)$(tput bold)"
$ normalcol="$(tput sgr0)"
$ trap 'echo -n "$normalcol"' DEBUG
$ PS1="\[$promptcol\]\w\$ \[$cmdcol\]"

알겠어요:

색상 팁

\[...\]쉘이 프롬프트의 너비를 올바르게 계산하는 방법을 알 수 있도록 주변 색상 코드가 필요하다는 점에 유의하십시오 . 반품,\[...\]변수를 넣을 수 없습니다., 쉘은 먼저 프롬프트 이스케이프를 처리한 다음 변수 확장을 처리합니다.

답변2

~/.bash_logout다음을 삽입하세요 .

echo -e "\033[0m"
/usr/bin/clear

관련 정보