Veja este link link . Como Anthon diz, 3
é o código octal do estilo C para um caractere de escape. O [999D
move o cursor de volta 999 colunas, presumivelmente uma forma de força bruta de chegar ao início da linha. [2K
apaga a linha atual. \r
é um retorno de carro que moverá o cursor de volta ao início da linha atual e será uma seqüência de escape no estilo C em vez de uma sequência de controle do terminal.
Atualizar
Como outras pessoas apontaram, essas sequências de controle não são nada a fazer bash
em si, mas sim o dispositivo terminal / emulador em que o texto aparece. Era uma vez comum que essas sequências fossem interpretadas por um hardware completamente diferente. Originalmente, cada um responderia a conjuntos de códigos completamente diferentes. Para lidar com isso, as bibliotecas termcap
e terminfo
foram usadas para escrever códigos compatíveis com vários terminais. O comando tput
é uma interface para a biblioteca terminfo
(o termcap
support também pode ser compilado) e é uma maneira mais robusta de criar sequências compatíveis.
Dito isto, há também o ANSI X3.64 ou o ECMA-48 padrão. Qualquer implementação de terminal moderna usará isso. terminfo
e termcap
ainda são relevantes, pois a implementação pode estar incompleta ou incluir extensões não padrão, no entanto, para a maioria das finalidades, é seguro assumir que sequências ANSI comuns funcionarão.
A xterm
FAQ fornece algumas informações interessantes sobre as diferenças entre os emuladores de terminal modernos (muitos tentam para emular xterm
em si) e como xterm
de sequências se relacionam com os terminais VT100 mencionados no link acima. Ele também fornece uma lista definitiva de xterm
seqüências de controle .
Também é comumente usado, é claro, o console Linux, uma lista definitiva de seqüências de controle para ele pode ser encontrada em man console_codes
, junto com uma comparação com xterm
.