Esta parece ser uma questão com o problema XY - é não pedindo a coisa certa para obter a solução desejada:
Suponha que a saída é colorida e a parte vazia da tela é de cor diferente ou preenchida com um caractere.
Pense em como você espera que a saída procure esses casos:
Uma linha vazia ? Linhas preenchidas apenas com caracteres espaciais? Linhas com apenas um caractere espaço ? Com uma aba? Com um espaço e uma aba? Com uma aba e um espaço?
Sim, todos parecem diferentes !
Ou você quer que uma linha vazia pareça - apenas uma linha vazia ?
Se esse for o caso, você não deseja realmente colorir os fluxos de saída e essa resposta se aplica .
Eu vou dar uma abordagem semelhante para a solução de @ StéphaneChazelas, mas "inversa":
Você pode , tecnicamente, colorir STDOUT e STDERR, linha por linha , adicionando os códigos de escape de cor certos para início e fim de linha em ambos os fluxos.
Você precisaria ter cuidado para redefinir a cor pelo menos em cada linha, porque, do contrário, qualquer programa que usa cores, como ls
, atrapalharia seu terminal . < br>
Você só tem pouco controle sobre a cor de saída - por isso é difícil acertar na melhor das hipóteses.
Mas: Você tem controle sobre todas as outras cores usadas, certo?
E você precisa apenas de uma cor nesse caso? Ótimo!
Defina a cor padrão dos terminais para a cor STDOUT / STDERR e cor o resto como preferir.
Você pode colorir o prompt de shell - e usar o código de prompt para colorir outras partes também.
É certo que é um pouco difícil colorir a linha de comando, onde você edita seu comando, mas é certamente possível.
Mas não tente isso com bash
se você puder usar zsh
, como o código de tratamento de prompt muito mais flexível aqui - é disso que você precisará.
Agora, defina a cor de primeiro plano padrão dos seus terminais para cinza e possivelmente para plano de fundo, mas tente deixar isso como transparente / indefinido.
Para definir a cor de fundo da linha de comando, veja este exemplo
Altere o cor de fundo da linha de comando em zsh quando altero o tema do prompt :
PROMPT="%{$bg[cyan]%}%{$fg[red]%}%n%{$reset_color%}%{$bg[cyan]%}@%{$fg[red]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%{$bg[cyan]%}%% "
(A parte difícil é obter as seções finais não usadas de lins em várias situações certas.)