Comando envolve a mesma linha após 80 caracteres

8

Eu tenho um problema irritante com o minicom conectado a um console serial em uma máquina Yocto Linux.

O comando que eu digito segue a mesma linha após o 80º caractere. Isso se torna muito inconveniente de se trabalhar. Tudo o que eu inseri no início da linha é substituído pelos últimos caracteres dessa linha.

Uma conexão SSH com a mesma máquina funciona muito bem. Depois dos caracteres 80, o ssh passa para a próxima linha.

Esta é a configuração stty:

stty -a
speed 115200 baud; rows 24; columns 80; 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

A opção -w do minicom não tem efeito. Ainda o mesmo comportamento

minicom -w

O resizecomando não está disponível nessa máquina. A que pacote pertence? Talvez eu possa instalá-lo.

Como posso corrigir esse comportamento?

Oliver G.
fonte
Qual é a TERMvariável de ambiente quando conectado via minicom?
thrig
echo $ TERM xterm
Oliver G.
mostre a saída do stty -aexecutado dentrominicom
Arkadiusz Drabczyk 19/10
Correr minicomcom -wajuda?
Arkadiusz Drabczyk 19/10
Se eu usar em puttyvez de minicomcomo programa de terminal serial e ativar a configuração do terminal "LF implícito em todo CR", o comportamento se foi.
Oliver G.

Respostas:

4

Quando você está conectado através de uma linha serial, o sistema não pode negociar o tamanho da janela com o terminal (NAWS - Negociar sobre o tamanho da janela é RFC 1073 ). Nesse caso, você pode obter um padrão do sistema para o tamanho ou até apenas zeros. Isso pode confundir o editor de linha do shell, que precisa saber a largura real do terminal para trabalhar com seu recurso envolvente.

O bash fica confuso, pensando que foi encerrado devido ao recurso de quebra automática do terminal e se move para o início da linha atual (incorreta) como parte da edição / exibição da linha.

Como solução alternativa, a maioria dos terminais (incluindo minicom - consulte fonte ) que você usaria com uma interface serial pode responder à sequência de escape do relatório de posição do cursor usada resizepara encontrar o tamanho da janela - e, como efeito colateral, defina a ideia do sistema de quão grande é sua janela de terminal.

Thomas Dickey
fonte
1
Eu ainda ficaria curioso para saber por que ele segue na mesma linha, em vez de na próxima linha.
dirkt 20/10/16
3

Isso funcionou para mim. O shell de destino precisa ser configurado para verificar o tamanho da janela e o tamanho correto da interface do usuário do console. Após conectar via serial com putty ou minicom:

shopt -s checkwinsize
resize
Mark Inderhees
fonte
Isso parece ter funcionado para mim, mas não estou claro como isso foi feito ou como aplicá-lo como regra geral.
TheMeaningfulEngineer
Adicione isso ao seu .bashrc no destino: "shopt -s checkwinsize" e "eval` resize`"
Mark Inderhees 20/02/19