Como e por que echo $ '\ ec' funciona? O que está fazendo para limpar o terminal?

1

No prompt do terminal para o OS X, eu posso digitar echo $'\ec' e ti irá limpar o console. Eu não tenho ideia do porque isso funciona, no entanto. O que está fazendo?

Eu estou supondo que isso funcionaria em outras versões do Linux também. Alguém pode lançar alguma luz?

    
por cwd 20.06.2011 / 05:55

3 respostas

0

\e é o caractere ESC (0x1B). Isso é conhecido como uma "seqüência de escape".

Existe toda uma lista deles na Internet para o terminal VT100 ou ANSI , que você pode olhar para entender como eles funcionam.

FYI, você pode fazer a mesma coisa com printf "\x1bc\n" ou limpar a tela completamente omitindo o final \ n.

    
por 20.06.2011 / 06:10
1

Um terminal geralmente não tem uma API per se, então o driver de terminal ouve sequências específicas de caracteres sendo enviados para o terminal e executa ações com base nas seqüências recebidas. A sequência ^[c faz com que o terminal seja limpo e é apenas uma de muitas dessas sequências.

    
por 20.06.2011 / 06:02
0

A sequência específica é enviada como

ESC c

(o caractere de escape seguido por c ). Essa é a função de redefinição de hardware para um VT100. Em um terminal real, isso quebraria sua conexão. Os emuladores de terminal (que você provavelmente está usando) simplesmente reconfigurarão o terminal para seu estado padrão, acidentalmente limpando a tela. Como eles geralmente estão emulando (imitando) o VT100, o local adequado para começar a ler é a documentação do VT100s:

Com relação ao link "vtansi", isso foi observado em uma FAQ por vários anos: Como obtenho cores com o VT100?

    
por 28.09.2015 / 11:24