命令在 80 个字符后环绕同一行

命令在 80 个字符后环绕同一行

我在将 minicom 连接到 Yocto Linux 机器的串行控制台时遇到了一个恼人的问题。

我输入的命令在同一行的第 80 个字符后回绕。这使得工作变得非常不方便。我在行开头输入的所有内容都会被该行的最后一个字符覆盖。

与同一台机器的 SSH 连接工作得很好。第 80 个字符后 ssh 转到下一行。

这是 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

minicom 的 -w 选项无效。还是同样的行为

minicom -w

resize命令在该机器上不可用。它属于哪个包?也许我可以安装它。

我该如何纠正这种行为?

答案1

这对我有用。目标 shell 需要设置为检查窗口大小并设置为控制台 GUI 的正确大小。通过串口与 putty 或 minicom 连接后:

shopt -s checkwinsize
resize

答案2

当您通过串行线连接时,系统无法与终端协商窗口大小(NAWS -协商窗口尺寸RFC 1073)。在这种情况下,您可以获得系统默认的大小,甚至只是零。两者都会使 shell 的行编辑器感到困惑,因为它需要知道终端的实际宽度才能使用其环绕功能。

bash 感到困惑,认为由于终端的自动换行功能而已换行,并作为行编辑/显示的一部分移动到当前(错误)行的开头。

作为解决方法,大多数终端(包括 minicom —查看来源),您将与串行接口一起使用,可以响应由使用的光标位置报告转义序列resize找到窗口大小 - 并作为副作用设置系统对终端窗口有多大的想法。

相关内容