如何在Linux shell中接受左/右/上/下箭头输入?

Mic*_*ael 6 java linux shell dos batch-file

我编写了一个Java应用程序,它有一个while(input.readLine()),它继续读取输入,直到用户键入quit命令.我有一个.bat脚本在Windows中启动它,一个.sh在Linux中启动它.该应用程序在两者中都运行正常

在Windows中,如果您键入"check email"之类的命令并按Enter键,它将执行该命令.然后,在下一个提示符(即:下次Java应用程序读取输入行)时,您可以点击向上箭头,它会调用您的"检查电子邮件"命令.您可以按左箭头键向左移动光标等.这正是我想要的.

但是,在Linux上,按向上键会导致^ [[D出现.左右箭头键产生类似的ASCII输出,如^ [[C.

我听说过stty并查看了man页面,但是无法通过启动我的Java应用程序来弄清楚我需要在.sh脚本中进行更改.谁能帮我?

Gil*_*il' 5

最简单的解决方案是使用外部包装器读取具有编辑功能的行,然后将其发送到您的程序。rlwrap是一个好的包装器

\n\n

使用单独的工具符合将单独的工具用于单独目的(行版本以及程序执行的任何操作)的 unix 哲学。这也很简单:只需让你的 shell 包装器运行rlwrap myprogram而不是myprogram.

\n\n

底层readline 库(与 Java 中的任何方法无关readLine;您需要一个 Java 包装器,例如Java-Readline)需要进行更多的集成工作,并且将您的程序限制为 GPL。仅当您想要的不仅仅是包装器可以提供的 \xe2\x80\x94 主要是特定于应用程序的完成时才这样做。

\n


peo*_*oro 1

readline函数在 Unices 上用于此类操作,但它是一个 C 函数。

在这里您可以找到它的 Java 包装器。(我没用过)