Il comando avvolge la stessa riga dopo 80 caratteri


8

Ho un fastidioso problema con minicom collegato a una console seriale a una macchina Yocto Linux.

Il comando che inserisco si sposta sulla stessa riga dopo l'80 ° carattere. Questo diventa molto scomodo con cui lavorare. Tutto ciò che ho inserito all'inizio della riga viene sovrascritto dagli ultimi caratteri di quella riga.

Una connessione SSH alla stessa macchina funziona perfettamente. Dopo l'80 ° carattere ssh passa alla riga successiva.

Questa è l'impostazione 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

L'opzione -w di minicom non ha alcun effetto. Sempre lo stesso comportamento

minicom -w

Il resizecomando non è disponibile su quella macchina. A quale pacchetto appartiene? Forse posso installarlo.

Come posso risolvere quel comportamento?


Qual è la TERMvariabile d'ambiente quando collegata tramite minicom?
thrig

echo $ TERM xterm
Oliver G.

mostra l'output di stty -aeseguito all'internominicom
Arkadiusz Drabczyk,

Correre minicomcon -waiuto?
Arkadiusz Drabczyk,

Se uso puttyinvece di minicomun programma terminale seriale e abilito l'impostazione del terminale "LF implicito in ogni CR", il comportamento scompare.
Oliver G.

Risposte:


4

Quando si è connessi tramite una linea seriale, il sistema non è in grado di negoziare le dimensioni della finestra con il terminale (NAWS - Negoziare le dimensioni della finestra è RFC 1073 ). In tal caso è possibile ottenere un valore predefinito di sistema per la dimensione o anche solo zeri. Entrambi confonderebbero l'editor di linea della shell, che deve conoscere la larghezza effettiva del terminale per funzionare con la sua caratteristica avvolgente.

bash viene confuso, pensando che si sia interrotto a causa della funzione di scarto automatico del terminale e si sposta all'inizio della riga corrente (errata) come parte della modifica / visualizzazione della linea.

Come soluzione alternativa, la maggior parte dei terminali (incluso minicom - vedi sorgente ) che useresti con un'interfaccia seriale può rispondere alla sequenza di escape del rapporto posizione del cursore usata da resizeper trovare la dimensione della finestra - e come effetto collaterale impostare l'idea del sistema di quanto è grande la finestra del terminale.


1
Sarei ancora curioso di sapere perché si avvolge sulla stessa linea, anziché nella riga successiva.
Dirkt

3

Questo ha funzionato per me. La shell di destinazione deve essere impostata per controllare la dimensione della finestra e per essere impostata sulla dimensione corretta della tua console console. Dopo aver effettuato il collegamento via seriale con putty o minicom:

shopt -s checkwinsize
resize

Questo sembra aver funzionato per me, ma non sono chiaro come sia stato fatto o come applicarlo come regola generale.
TheMeaningfulEngineer,

Aggiungi questo al tuo .bashrc sul target: "shopt -s checkwinsize" e "eval` resize`"
Mark Inderhees,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.