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