Linux 发送信号, 修改键映射

遇到一个问题, 用SSH 工具登陆远程Linux 系统后, 使用 sqlplus 会出现问题, 比如输入 eixt, 发现输入错误, 然后Backspace 想删除这些字符, 发现没有删除字符, 却出现了 ^H 符号.
这个原因是我的计算机上发送的信号是 ^H, 但是在远程 Linux 上erase 信号映射到 ^? 信号.
可以用 stty -a 来查看 远程 Linux 上的键映射:

[oracle@erik-lnx admin_scripts_home]$ stty -a
speed 38400 baud; rows 39; columns 173; 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 -cdtrdsr
-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

然后 Ctrl+V, 按 Backspace 看看发送的字符是什么: ^H
然后重新设定键映射: stty erase ^H
这样我发送的 ^H 就会被映射为 erase 信号, 删除字符就正常工作了;

造成这个问题的原因其实是我使用的终端模拟器和远程Linux 使用的终端其实不一致.
查看远程 Linux 的终端类型: echo $TERM = xterm
我现在使用的SSH 工具是 Xshell, 在设定里面可以选择终端模拟器,
这里写图片描述
要么修改远程Linux 上的键映射, 要么修改SSH 工具的发送信号.

总结一下:
1. echo $TERM 查看终端类型
2. 设定 SSH 工具的终端类型, 保持一致
3. stty -a 查看键映射
4. Ctrl+V 按键, 查看SSH 工具发送的字符
5. stty 信号 字符, 修改键映射, 或者修改SSH 工具按键发送的字符

Xshell Backspace 按键 -> 发送 ^H 字符 -> Linux 接收 ^H 字符 -> ^H 映射到 erase 信号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值