Answers:
我以前见过这样的问题。
以退格为例,远程主机希望将某些字符用作“擦除/退格”,而在终端中按Backspace时,如果远程主机希望与diff进行比较,则终端程序将向远程主机发送一些字符。终端程序发送的字符,您将遇到此问题。因此,快速修复方法如下:
#stty -a
在远程主机上运行命令,然后在输出中找到期望的擦除代码。说erase=^?
。^H
。#stty erase ^H
。您可以使用与上述相同的方法来解决“制表符”问题。
stty -a
输出,但仍然无法正常工作
除了“ stty”解决方案之外,您还可以尝试“ TERM”解决方案。
您可以通过TERM环境变量从某个终端(putty,solaris dterm,debain xterm,you-name-it)SSH到Debian,此终端通知功能(包括Backspace和Tab这样的键)。
因此,在将ssh转换为unix主机(不依赖于debian或其他主机)之后,请根据您的终端设置TERM变量。考虑您使用bash作为外壳,使用vt100作为终端:
export TERM=vt100
ps:TERM应该通过ssh自动声明,但是在某些情况下,这种魔术失败了。
这是因为您sh
要使用的默认外壳程序是bash
,只需bash
从您的外壳程序运行即可。
bash
设置bash
为默认外壳:
chsh -s /bin/bash
要么
sudo chsh -s /bin/bash yourusername
我通常用它来修复终端中任何时髦的字符输出。它将所有特殊字符重置为其默认值。
stty sane
从stty手册页:
与Cread -ignbrk brkint -inlcr -igncr icrnl -iutf8 -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echol -xcase -tostop -echoprt echoctl echoke,所有特殊字符为其默认值
在保罗的回答之上,如果您想保留彩色输出的功能,可以使用xterm-88color
echo 'export TERM=xterm-88color' >> ~/.bashrc
source ~/.bashrc
toe -a
显示了受支持的终端类型列表... xterm-88color
到目前为止不是唯一的选择,并且实际上可能在特定系统上不可用。