Der Befehl wird nach 80 Zeichen um dieselbe Zeile gewickelt

8

Ich habe ein nerviges Problem mit Minicom, das an eine serielle Konsole eines Yocto Linux-Computers angeschlossen ist.

Der Befehl, den ich eingebe, wird nach dem 80. Zeichen in derselben Zeile umbrochen. Es wird sehr unpraktisch, damit zu arbeiten. Alles, was ich am Anfang der Zeile eingegeben habe, wird durch die letzten Zeichen dieser Zeile überschrieben.

Eine SSH-Verbindung zu demselben Computer funktioniert einwandfrei. Nach den 80. Zeichen ssh gehe zur nächsten Zeile.

Dies ist die stty-Einstellung:

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

Die Option -w von minicom hat keine Auswirkung. Immer noch das gleiche Verhalten

minicom -w

Der resizeBefehl ist auf diesem Computer nicht verfügbar. Zu welchem ​​Paket gehört es? Vielleicht kann ich es installieren.

Wie kann ich dieses Verhalten beheben?

Oliver G.
quelle
Was ist die TERMUmgebungsvariable bei Verbindung über minicom?
Thrig
echo $ TERM xterm
Oliver G.
Show Ausgabe von stty -aausgeführt im Innerenminicom
Arkadiusz Drabczyk
Laufen minicommit -wHilfe?
Arkadiusz Drabczyk
Wenn ich puttyanstelle minicomals serielles Terminalprogramm die Terminaleinstellung "impliziter LF in jedem CR" aktiviere, ist das Verhalten weg.
Oliver G.

Antworten:

4

Wenn Sie über eine serielle Leitung verbunden sind, kann das System die Fenstergröße nicht mit dem Terminal aushandeln (NAWS - Negotiate About Window Size ist RFC 1073 ). In diesem Fall können Sie entweder einen Systemstandard für die Größe oder sogar nur Nullen erhalten. Beides würde den Zeileneditor der Shell verwirren, der die tatsächliche Breite des Terminals kennen muss, um mit seiner Umlauffunktion arbeiten zu können.

bash wird verwirrt und denkt, dass es aufgrund der Autowrap-Funktion des Terminals umbrochen wurde, und bewegt sich im Rahmen der Zeilenbearbeitung / -anzeige an den Anfang der aktuellen (falschen) Zeile.

Um dieses Problem zu umgehen, können die meisten Terminals (einschließlich Minicom - siehe Quelle ), die Sie mit einer seriellen Schnittstelle verwenden würden, auf die Escape-Sequenz für den Cursorpositionsbericht reagieren, die zum Ermitteln resizeder Fenstergröße verwendet wird - und als Nebeneffekt die Idee des Systems festlegen Wie groß ist Ihr Terminalfenster?

Thomas Dickey
quelle
1
Ich wäre immer noch neugierig, warum es sich in derselben Zeile und nicht in der nächsten Zeile befindet.
Dirkt
3

Das hat bei mir funktioniert. Die Ziel-Shell muss eingestellt werden, um die Fenstergröße zu überprüfen und auf die richtige Größe Ihrer Konsolen-GUI einzustellen. Nach der seriellen Verbindung mit Putty oder Minicom:

shopt -s checkwinsize
resize
Mark Inderhees
quelle
Dies scheint für mich funktioniert zu haben, ist mir aber nicht klar, wie dies getan wurde oder wie es in der Regel angewendet werden soll.
TheMeaningfulEngineer
Fügen Sie dies zu Ihrer .bashrc auf dem Ziel hinzu: "shopt -s checkwinsize" und "eval` resize`"
Mark Inderhees