No terminal virtual do linux ("console"):
Para definir o plano de fundo para a cor 1 (vermelho):
printf %b '\e[41m' '\e[8]' '\e[H\e[J'
O primeiro escape ( setab ) define o segundo plano para a cor 1, o segundo escape define o par atual de segundo plano como o padrão e o terceiro ( clear ) limpa a tela .
A partir de agora, "vermelho" será o segundo plano padrão:
printf %b 'World\e[42mWide\e[mWeb\n'
Observe como a configuração do plano de fundo para verde com setab 2 ( \e[42 ) e a limpeza subseqüente de atributos com sgr0 ( \e[m ) não apagam nossa configuração.
Alternativamente, você pode redefinir a cor 0 (o fundo padrão, preto), através do escape "set palette" (também conhecido por initc ="initialize_color"):
printf %b '\e[40m' '\e[8]' # set default background to color 0 (black)
printf %b '\e]P0ff0000' # redefine color 0 as 'red'
O último usa um argumento do formato nRRGGBB , em que n é o número da cor e RRGGBB é um trio hexadecimal que define a cor.
Este escape também é suportado por massa .
Para uma explicação sobre essas funções e mais, verifique as páginas de manual console_codes (4) e terminfo (5).
Eu não consegui:
a) mude a cor de fundo da tela sem limpar tudo dela com clear .
b) força-o a atualizar a margem sem caracteres da tela sem alternar entre terminais virtuais com Control-Alt-Fn.
Em emuladores de terminal do tipo xterm:
Isso define o plano de fundo para um verde claro sem ter que limpar a tela:
printf %b '\e]11;#ccffcc\a'
Também funciona bem em mlterm , rxvt , gnome-terminal , konsole etc.
A forma alternativa \e]11;rgb:cc/ff/cc\a (tirada de aqui ) não é suportada em konsole (testada com 12.16 .0 versão).
Isso não funcionará dentro de tmux ou screen .
Todas as fugas de xterm estão documentadas no arquivo ctlseqs.txt de sua origem código.
Nota:
Algumas das fugas (por exemplo, \e[8] ou \e]11;...\a ) não são incluídas no terminfo e não podem ser usadas com tput , enquanto outras (por exemplo, initc ) são muito difíceis de serem usadas em uma maneira limpa.
Uma versão greppable do banco de dados terminfo pode ser obtida por um comando como: find /usr/share/terminfo -type f -printf '%f\n' | xargs -n1 infocmp -0 -A /usr/share/terminfo