STDOUT 및 STDERR 색상을 회색으로 영구적으로 변경하는 방법은 무엇입니까?

STDOUT 및 STDERR 색상을 회색으로 영구적으로 변경하는 방법은 무엇입니까?

이 질문은 다음과 유사합니다. STDERR 및 STDOUT을 다른 색상으로 인쇄하도록 셸을 구성할 수 있나요?

하지만 저는 다음을 수행할 수 있는 솔루션을 찾고 있습니다.STDOUT 및 STDERR을 하나의 색상으로 변경. STDOUT 및 STDERR에 대해 서로 다른 색상을 설정하고 싶지 않습니다. 이는 문제가 있고 위에 링크된 답변에서 언급한 것처럼 문제를 일으킬 수 있습니다.

죄송합니다. 저는 Unix와 Linux에 대해 잘 모릅니다. 내 .bashrc또는 .bash_profile및 에 몇 줄을 추가할 수 있는 솔루션을 찾고 있습니다 .영구적인STDOUT 및 STDERR의 색상을 변경합니다.

답변1

STDOUT 및 STDERR에는 색상이 없습니다. 색칠된 부분은 터미널(에뮬레이터)입니다.하나전경색(및 배경색)을 한 번에 하나씩 설정합니다.

또한 STDOUT과 STDERR은 단일이 아니라는 점에 유의해야 합니다.프로세스당출력 스트림. 모든 프로그램에 적용되는 전역 STDOUT은 없습니다. 이러한 스트림은 터미널로 라우팅되지만 프로세스마다 다릅니다.

터미널 에뮬레이터에는 일반적으로 메뉴를 통해 팔레트를 설정하는 방법이 있으므로기본 전경(다음을 통해 수신된 데이터에 적용됩니다.둘 다STDOUT 및 STDERR 스트림)은 무엇이든 될 수 있습니다. 당신도 신청할 수 있습니다프롬프트의 ANSI 색상 코드그리고색상을 재설정하지 않으면\[\033[0m\]결국 에는 계속 적용됩니다. 일부 응용 프로그램에서는 이를 사용하고 재설정하므로 재설정하면 터미널의 기본 설정으로 돌아가므로 이는 이상적인 접근 방식이 아닙니다.

터미널 Outlook 설정이 원하는 것이 아닌 경우 프로세스별로 STDOUT/STDERR을 필터링할 수 있습니다.여기에 조언.

답변2

zsh16개 이상의 색상을 지원하는 단말기 의 경우 xterm:

preexec() printf '\e[90m' # set foreground color to grey before running
                          # the command

precmd() printf '\e[m' # reset the foreground color before issuing the
                       # next prompt.

명령 자체가 터미널의 전경색을 변경할 수 있다는 점에 유의하십시오.

답변3

이건 문제가 있는 것 같아XY 문제- 원하는 솔루션을 얻기 위해 올바른 것을 요구하지 않습니다.

출력은 컬러이고 화면의 빈 부분은 다른 색상이거나 문자로 채워져 있다고 가정합니다.

출력에서 이러한 사례를 어떻게 찾을 것으로 예상하는지 고려하십시오.

하나비어 있는철사? 공백 문자로만 채워진 행? ~와 일치하다우주역할만? 라벨을 사용하시겠습니까? 공백과 탭? 탭과 공백? 그래 그들은모든 게 달라 보여!

아니면 당신이 원해요빈 줄은 다음과 같습니다.-그냥 빈 줄?
이 경우 출력 스트림에 색상을 지정하고 싶지 않을 것입니다.이 답변이 적용됩니다.


@StéphaneChazelas의 솔루션과 유사하지만 "반대"를 제공하겠습니다.

할 수 있는, 기술적으로 말하면 STDOUT 및 STDERR 색상은한 줄씩, 올바른 색상 이스케이프 코드를 추가하세요.줄의 시작과 끝두 스트림 모두에서.

당신은해야합니다색상 재설정에 주의하세요적어도 모든 줄은 그렇지 않으면 예를 들어 색상을 사용하는 모든 프로그램 ls터미널을 엉망으로 만들다.
당신이 가지고 있는 한통제가 별로 안됨출력 색상을 초과하므로 최선을 다하기가 어렵습니다.

하지만 당신은 통제할 수 있습니다그 외 모든 것들사용된 색상이죠?
당신은요하나만 필요해이 경우 색상은? 엄청난!

터미널 기본 색상 설정STDOUT/STDERR 색상으로 변경한 다음 나머지는 원하는 대로 색상을 지정합니다.

당신은 당신의 색깔을 칠할 수 있습니다쉘 프롬프트- 힌트 코드를 사용하여 다른 부분에도 색상을 지정할 수 있습니다.
솔직히 이건 좀명령줄에 색상을 지정하는 것은 까다롭습니다., 여기서 명령을 편집할 수 있지만 확실히 가능합니다. 하지만 bash사용할 수 있다면 시도하지 마세요zsh, 처럼프롬프트 처리 코드많이더 유연하다거기 - 그게 당신이 필요로하는 것입니다.

이제 터미널 기본 전경색을 회색으로 설정하고 배경색도 가능하게 설정하세요. 하지만 투명/정의되지 않은 상태로 남겨두세요.

명령줄의 배경색을 설정하려면 다음 예를 확인하세요. 프롬프트 테마를 변경할 때 zsh에서 명령줄의 배경색을 변경합니다.:

PROMPT="%{$bg[cyan]%}%{$fg[red]%}%n%{$reset_color%}%{$bg[cyan]%}@%{$fg[red]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%{$bg[cyan]%}%% "

쉘 프롬프트 예

(어려운 부분은 각 경우에 사용되지 않는 린의 끝 부분을 올바르게 처리하는 것입니다.)

관련 정보