Java Scanner类:使用左键和右键与Bash

时间:2010-03-26 20:12:10

标签: java bash command-line

我对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机器上运行它,我就不能使用任何箭头按钮(我只对left - 和right按钮,btw感兴趣。例如,如果我输入“test”然后按左按钮尝试返回,则显示^[[D而不是我的光标返回一个位置:

$ test^[[D  

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

所以,问题是:有没有办法改变我的Java代码,以便我可以使用箭头键而不用Bash转换它们像^[[D这样的序列,但实际上移动光标呢?

我希望我能在“编程水平”上解决这个问题。如果这是不可能的,那么我想我最好在Superuser上试试运气,看看我的Bash控制台上是否需要更改。

提前致谢。

2 个答案:

答案 0 :(得分:3)

Bash是shell,而不是终端;从您的程序中,您正在与终端通话。为了提供该功能,bash和许多其他程序使用readline - 它似乎有Java wrapper但我从未使用过它。我相信其他人会得到一个更确定的答案。

答案 1 :(得分:2)

另一种选择是Java curses library