명령 끝에서 bash 쉘 PS1 색상을 중지하려면 어떻게합니까?


12

실제 쉘 명령이 다른 색상으로 표시되는 사용자 정의 PS1 색상이 있으므로 입력 한 명령을 신속하게보고 명령 출력 자체와 분리 할 수 ​​있습니다.

PS1의 색상이 명령 프롬프트에 대해 '파란색'으로 설정되어 있고 쉘의 기본 색상이 흰색이라고 가정합니다.

  • ls와 같은 명령을 입력합니다 (ls -l은 파란색으로 표시됨)
  • 생성되는 출력, 첫 줄은 여전히 ​​파란색입니다.
  • 나머지 줄은 모두 흰색으로 나타납니다

내가 원하는 것은 명령 후의 모든 출력이 '흰색'입니다.

다른 예시:

  • 'cat'명령을 입력하면 색상이 파란색입니다.
  • 출력이 오면 전체 출력이 파란색입니다.

'blue'를 입력 한 명령 프롬프트를 유지하면서 출력을 'white'로 설정하고 싶습니다.

일부 명령의 경우 다른 명령은 괜찮습니다. 동일한 색상이 출력의 첫 번째 줄에 넘친 다음 기본 색상이 시작되고 일부 다른 명령의 경우 전체 출력 (예 : 고양이)의 색상이 동일합니다.

입력 한 명령을 한 가지 색상으로 유지하고 나머지는 기본값으로 유지하는 방법이 있습니까?

저는 OSX에 있습니다.

편집 # 1

여기에 내가 찾고있는 것을 보여주는 주석에서 @derobert가 연결된 스크린 샷이 있습니다.

                 ss # 1


2
오류를 정확하게 파악할 수 있도록 프롬프트를 표시해야합니다.
glenn jackman

답변:


14

기본적으로 bash가 명령을 실행하기 직전에 터미널 색상을 재설정하려고합니다. 이것은로 수행 할 수 있습니다 trap.

예를 들면 다음과 같습니다.

trap '[[ -t 1 ]] && tput sgr0' DEBUG

Bash DEBUG는 명령 직전 에 트랩을 실행 하므로 tput sgr0각 명령 전에 (서식 속성을 재설정) 실행됩니다.

[[ -t 1 ]]반드시 STDOUT 실제로 터미널입니다 있는지 확인하기 위해 안전 점검이다. bash의 STDOUT이 터미널 (파이핑, 원격 ssh 등)에 연결되지 않아 tput터미널 이스케이프 코드를 보내지 않는 경우가있을 수 있습니다 .


이것을 어디에 두나요? PS1이 색상을 다시 설정하지 않는다고 가정 해 봅시다. 이제이 줄을 추가하여 사용자가 명령을 입력하고 Enter 키를 누른 직후 에이 명령을 실행하려면 어떻게해야합니까?
polym

1
귀하의 .bashrc(또는 $PS1설정 된 곳 ) 에서 @ polym . $PS1정의 바로 옆에 놓아서 관련이 있음을 알 수 있습니다.
Patrick

알았어. 이것이 잘못 될 가능성이 있습니까?
polym

@ polym 더 이상
Patrick

훌륭합니다. 터미널 색상을 재설정하는 데 필요한 것입니다.
iQ.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.