ssh 终端中显示损坏的行

ssh 终端中显示损坏的行

我的控制台绘制线条时出现问题。问题是当我通过 ssh 连接到服务器时,一切都绘制正常。但当我使用向上箭头键显示上次使用的命令时,它通常会在$符号后留下几个字符,例如(粗体是提示后留下的内容):

用户@主机:/var/www_vhosts/instalator-paczek$cp -r 安装纳米/etc/问题

更令人恼火的是,当我输入的字符多于控制台宽度时,会发生这种情况。光标不知何故回到行首并覆盖提示:

/d/asd/as/d/asd/asd/as/d/asd/asdww_vhosts/安装器-paczek$ ls -la asdkasdasdasd/asdasdasd/asdasdasdasdas/dasdsdaas/d/asd/as/d/asd/as

我不能使用任何长命令,因为它会覆盖开头,而且我看不到我是否输入了正确的所有内容。即使显示损坏,粘贴在控制台内的长命令也能正常工作。这就像只有显示损坏,但命令本身没问题。

我有 ubuntu 12.10 并用作Konsole终端应用程序。服务器上有Debian GNU Linux 6.0

这种情况只发生在这台服务器上,我连接的其他服务器都运行良好Konsole。我的同事曾经putty连接过同一台服务器,他们也遇到了同样的问题。所以问题似乎出在服务器上,而不是终端程序上。

服务器上没有xterm软件包,所以我坚持认为应该安装它来解决问题。但即使安装了这个包,同样的问题仍然存在。安装后我应该重启服务器吗xterm?我不想这样做,因为我不是服务器管理员。

我需要补充一点,似乎调整控制台窗口的大小也会stty在服务器上发生变化:

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

我已经尝试过包括使用resizereset命令在内的解决方案,但它们没有帮助。

如何解决这个问题?

我问过同样的问题Unix 和 Linux但没有找到解决方案,所以我在这里写下。

答案1

好的,我终于找到了解决方案。问题是$PS1没有用和括起来的颜色序列\[\]更正之前$PS1是:

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

修复后:

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

我在这里找到了解决方案:https://stackoverflow.com/questions/2024884/commandline-overwrites-itself-when-the-commands-get-to-long

答案2

这里有几个问题。上下箭头的问题通常是由于术语类型不匹配造成的。

我遇到了换行错误,通常是因为你改变了屏幕尺寸。从“80x24”到“151x57”。有时取消设置 LINES 和 ROWS 可以解决问题,使用

unset LINES
unset ROWS

然后看看问题是否消失。有一个命令(我认为 stty 也可以做到这一点),它会在你调整终端大小后重置它,这样 bash 就不会崩溃,但我必须去查找一下。

相关内容