操作HBase Shell时退格键不好用?也许你应该看看这篇文章!


hbase shell作为HBase的主要命令行工具,在平常的开发中是非常常用的。但是有些时候,我们不小心输入错误命令,想进行删除时,却发现没有办法像平常一样顺畅的删除字符。


常见的问题情况有如下两种:
①按backspace键,并没有预期中的进行删除和光标的移动。此时只能按下←或者→方向键移动光标,然后再按下backspace键进行删除。
②按backspace键,并没有预期中的进行删除和光标的移动。此时按下方向键也没有任何效果,光标就永远停留在最后,仿佛卡住了一样。


网上有许多五花八门的解决方法,包括让你用Del键来删除的、用Ctrl+H键来删除的、调整终端仿真类型的,各种说法都有。但很多时候试了发现没有起到效果,有些时候却又能够解决问题,有些时候在公司电脑没问题,回家了在自己电脑上玩却又出现了问题。这到底是怎么回事呢?


问题原因

这实际上和我们使用的终端SSH工具有关。目前开发者经常会使用到高级的终端SSH工具,主流的几个选择有SecureCRT、XShell以及MobaXterm,它们均拥有强大的终端仿真功能,提供了各种丰富的设置。

不同工具在终端仿真的默认设置上存在一定的差异。当然大部分情况下,并不需要关心这些差异。通常情况下我们都在bash下输入和执行命令,无论你设置的仿真终端类型是什么,它们都能良好的将键盘上按下backspace的结果适配为主机shell的“erase”,系统将用退格、删除和退格序列来进行响应。这个时候使用退格键删除字符,非常顺滑,没有任何问题。

而hbase shell程序,它的工作模式与bash并不相同,它的按键解释器并不依靠系统的控制序列响应,而是靠直接读取发送的字符序列,来进行解析和下一步的操作。

在hbase shell中,如果想要和平常编辑文档一样,按下backspace会删除字符并且自动移动光标,那么发送过去的字符序列必须是^?

如果发送过去的字符序列是^H或者ESC[3~,那么就会出现前面 中所说的问题:字符是成功删除了,但是光标没有移动,每一次都得自行移动一下,非常麻烦。


解决方法

下面分别给出MobaXterm、XShell和SecureCRT的操作步骤,说明一下如何调整到正确的设置:


MobaXterm

1、在Session中,找到要编辑的会话,点击“Edit Session”:
在这里插入图片描述

2、点击“SSH”- “Terminal settings”,取消“Backspace sends ^H”的复选框。

选项含义:

  • 勾选Backspace sends ^H:按下Backspace时发送字符序列^H
  • 不勾选Backspace sends^H:按下Backspace时发送字符序列^?
    在这里插入图片描述

3、点击OK 即可。现在就能在hbase shell中正常的使用backspace键了。


XShell

1、首先对会话的“属性”进行设置:
在这里插入图片描述

2、在“终端” - “键盘”选项下,将“BACKSPACE键序列”,修改为“ASCII 127”。

三个选项的含义:

  • VT220 Del:字符序列ESC[3~
  • ASCII 127:字符序列^?
  • Backspace:字符序列^H

在这里插入图片描述
3、点击确定即可。现在就能在hbase shell中正常的使用backspace键了。


SecureCRT

1、首先对会话的“属性”进行设置:
在这里插入图片描述
2、找到“终端”- “仿真”- “映射键”,在“其它映射”中,勾选“Backspace 发送delete”
在这里插入图片描述
3、接下来需要注意,SecureCRT中,还需要检查一下终端仿真类型的设置。默认情况下SecureCRT是会将仿真类型设置为VT100的,但在SecureCRT的VT100仿真下,hbase shell会出现无法进行方向键移动光标的情况(也就前面的所说的情况)。

建议将仿真终端类型修改为Xterm:
在这里插入图片描述
4、点击确定即可。现在就能在hbase shell中正常的使用backspace键了。


总结

其实不管使用哪一种终端SSH工具,关键就在于要把Backspace键发送的字符序列调整正确。如果还出现有光标不能移动的情况,则需要尝试修改仿真终端类型,建议设置为主流的Xterm。所以就算你现在使用的并非本文中提及的终端工具,那么也应当能摸索出应该如何进行软件设置的修改了。

最后,附一张三个终端SSH工具,在各种设置情况下,backspace键能否正常工作的情况表,供读者快速参考:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值