linhas corrompidas são exibidas no terminal ssh

2

Eu tenho problema com minhas linhas de desenho do console. O problema é quando eu conecto através do ssh ao servidor tudo desenha ok. Mas quando eu uso a tecla de seta para mostrar os últimos comandos usados, muitas vezes deixa poucos caracteres após o sinal $ (em negrito é o que fica após o prompt):

user@host:/var/www_vhosts/instalator-paczek$ cp -r instnano /etc/issue

O que é ainda mais irritante é o que acontece quando digito mais caracteres do que a largura do console. Cursor de alguma forma volta para o início da linha e sobrescreve prompt:

/d/asd/as/d/asd/asd/as/d/asd/asdww_vhosts/instalator-paczek$ ls -la asdkasdasdasd/asdasdasd/asdasdasdasdasdas/dasdsdaas/d/asd/as/d/asd/as

Não consigo usar comandos longos porque substitui o início e não consigo ver se digitei tudo corretamente. Comando longo quando colado dentro do console funciona mesmo se o monitor estiver corrompido. É como se apenas a tela estivesse corrompida, mas o comando em si é ok.

Eu tenho o Ubuntu 12.10 e uso Konsole como aplicativo de terminal. No servidor há Debian GNU Linux 6.0

Acontece apenas com este servidor outros servidores que eu conectar, funciona bem com Konsole . Meus colegas de trabalho usam putty para se conectar ao mesmo servidor e eles também têm o mesmo problema. Então, parece que o problema é com o servidor não programa terminal.

No servidor não há xterm pacote, então eu lutei que ele deveria instalá-lo para corrigir o problema. Mas mesmo depois de instalar este pacote, o mesmo problema existe. Devo reiniciar o servidor depois de instalar o xterm ? Eu prefiro não porque não sou administrador do servidor.

Eu preciso adicionar que parece que redimensionar a janela do console também altera stty no servidor:

user@host:~$ stty -a
speed 38400 baud; rows 57; columns 151; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
user@host:~$ stty -a
speed 38400 baud; rows 57; columns 172; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

Já experimentei soluções, incluindo o uso dos comandos resize e reset , mas eles não ajudaram.

Como consertar isso?

Fiz a mesma pergunta em Unix & Linux mas nenhuma solução encontrada, então estou escrevendo aqui.

    
por piotrekkr 06.06.2013 / 23:26

2 respostas

2

OK, finalmente encontrei a solução. O problema era que $PS1 não tinha sequências de cores entre \[ e \] . Antes de corrigir $PS1 estava:

export PS1='\e[1;32m\u@\h:\w$ \e[m'

após correção:

export PS1='\[\e[1;32m\]\u@\h:\w$ \[\e[m\]'

Encontrei a solução aqui: link

    
por 09.06.2013 / 21:56
0

Existem alguns problemas aqui. O problema com as setas para cima e para baixo normalmente vem dos tipos de termos sendo incompatíveis.

O erro de wrap acontece comigo, geralmente é porque você alterou o tamanho da tela. De "80x24" a "151x57". Às vezes, não habilitar LINES e ROWS pode resolver o problema, use

unset LINES
unset ROWS

e, em seguida, veja se o problema desaparece. Existe um comando (acho que o stty também pode fazer isso), que irá resetar seu terminal depois de redimensioná-lo para que o bash não surte, mas eu teria que procurar por ele.

    
por 07.06.2013 / 01:51