Por que esses caracteres são gravados no terminal durante a limpeza?

1

Eu recentemente fiz um clear no meu terminal e descobri que os seguintes caracteres foram impressos na linha acima:

[unknown character]3;J

Eu fiz um clear | hexdump para investigar isso e descobri que os seguintes caracteres foram impressos:

ESC [ 3 ; J ESC [ H ESC [ 2 J

Eu tentei digitar essas chaves no meu terminal, e notei que enquanto a tela não estava limpa, apenas o primeiro J apareceu. Isso é um bug no terminal?

    
por James Ko 20.06.2015 / 23:39

1 resposta

1

Eles são conhecidos como "seqüência ESCape" e são a sequência de caracteres usada para informar ao keypunch de vidro que a sua sessão de terminal está emulando (de acordo com a variável de ambiente $TERM ) para "limpar a tela".

ESC [ 3 ; J ESC [ H ESC [ 2 J é selecionado, dependendo do valor da variável de ambiente TERM . (%código%). Se echo $TERM não corresponder ao tipo de terminal que você está usando, $TERM escolherá a string errada.

Qual é o seu clear ? Que tipo de terminal?

Por exemplo, estou digitando em um terminal Gnome ( Ctrl Alt T no meu login de gráficos do Ubuntu 14.04) e

$ echo $TERM
xterm-color
$ clear | od -bc
0000000 033 133 110 033 133 062 112
        033   [   H 033   [   2   J
0000007
$ clear

limpa minha tela silenciosamente.

Quando estou conectado a uma sessão Ctrl Alt F1 , meu $TERM inicia como $TERM e está definido como "linux" pelo meu xterm-color

Comece lendo ~/.bashrc e leia as man tput;man terminfo páginas mencionadas nas seções man .

    
por waltinator 01.07.2015 / 09:40