Java的Scanner类:在Bash中使用左右按钮

我对Linux / Bash不太熟悉,因此我找不到真正要搜索的术语.

摘录:

public class Main {
    public static void main(String[] args) {
        java.util.Scanner keyboard = new java.util.Scanner(system.in);
        while(true) {
            System.out.print("$");
            String in = keyboard.nextLine();
            if(in.equals("q")) break;
            System.out.println("    "+in);
        }
    }
}

如果我使用Bash在Linux机器上运行它,则不能使用任何箭头按钮(我只对左右按钮感兴趣,btw).例如,如果我键入“ test”,然后尝试通过按向左按钮返回,则^ [[D出现,而不是我的光标返回一个位置:

$test^[[D  

我也尝试过较新的Console类,但最终结果是相同的.在Windows的cmd.exe shell上,我没有这个问题.

因此,问题是:有没有一种方法可以更改Java代码,以便我可以使用箭头键而无需Bash以类似^ [[D的顺序转换它们,但实际上是移动光标?

我希望我可以在“编程级别”上解决此问题.如果这不可能,那么我想我最好在Superuser上试试运气,看看是否需要在Bash控制台上进行更改.

提前致谢.

解决方法:

Bash是外壳,而不是终端;从您的程序正在与终端通信.为了提供该功能,bash和许多其他程序都使用readline-它似乎有一个Java wrapper,但我从未使用过.我敢肯定,会有其他人给出更明确的答案.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...