Por que meu prompt do bash se transformou em ininteligível depois que eu acidentalmente rodei 'cat' em um arquivo .coverage?

3

Acabei de instalar a cobertura e executá-la algumas vezes quando notei um arquivo .coverage pendurado na minha repo, que é - de acordo com o utilitário file - um arquivo 8086 relocatable (Microsoft) . E então eu fiz isso, porque eu não tinha ideia do que era e queria saber o que havia dentro dele ...

{yiqingsim.com}yiqing@ysim:~/repos/yiqingsim.com/yiqingsim(master 7↑)$ cat .coverage
...lots of output...
≤☃─☃┼±@≤⎽☃└:·/⎼e⎻⎺⎽/≤☃─☃┼±⎽☃└↓c⎺└/≤☃─☃┼±⎽☃└(└▒⎽├e⎼ 7↑)$ 

Mesmo quando pressionei Enter algumas vezes, permaneceu assim. Não só isso, quando eu digitei na linha de comando, os personagens que eu não esperava apareceram, por exemplo.

$ ↓┘ ┼⎺├ ⎺┼┌≤ ├▒▒├┬▒≤ ☃⎽ ├▒e⎼e ┼⎺├

A única solução foi fechar a janela (tmux). Eu só estou querendo saber (a) por que isso aconteceu, e (b) se há alguma maneira de consertar isso da próxima vez que eu fizer isso?

    
por 3cheesewheel 16.10.2013 / 23:01

2 respostas

3

Para a pergunta a): isso depende do tipo de terminal que você possui. Basta fazer um echo $TERM para ver qual tipo de terminal você possui. xterm deve estar bem. Eu tive esse problema muito ao conectar via console serial e o único tipo de terminal de trabalho era vt100 (um terminal antigo, mas muito compatível). Além disso, ao alterar $TERM para vt100 via SSH, tive o mesmo problema.

para a pergunta b): executar o comando reset deve fazer o truque. Talvez você veja o comando também em rabiscos, mas deve funcionar.

Apenas para esclarecimento: isso acontece toda vez que você tenta fazer cat em um arquivo codificado binário, não especialmente em .coverage files.

    
por 16.10.2013 / 23:04
1

O caractere literal ^N pode causar esse comportamento em determinados terminais quando impressos. cat imprimiu esse caractere ao tentar ler o arquivo codificado binário.

Para reproduzir esse comportamento, você pode gravar o caractere ^N em um arquivo usando a entrada de caractere literal em vi . Abra vi , digite Ctrl-v Ctrl-n no modo de inserção e salve o arquivo. Se você cat deste arquivo, a codificação do seu terminal será borked.

O caractere literal ^O inverte esse comportamento e pode ser escrito em vi , digitando Ctrl-v Ctrl-o .

    
por 18.10.2013 / 01:18

Tags