2011-01-07 12 views
6

私はwhile(input.readLine())を持つJavaアプリケーションを作成しました。このアプリケーションは、ユーザーがquitコマンドを入力するまで入力の読み取りを続けます。私はWindowsでそれを起動する.batスクリプトと、Linuxでそれを起動する.shを持っています。アプリケーションは両方で正常に動作します。Linuxシェルで左/右/上/下矢印入力を受け入れるにはどうすればよいですか?

Windowsでは、「check email」のようなコマンドを入力してEnterキーを押すと、コマンドが実行されます。次に、次のプロンプト(Javaアプリケーションが入力行を次に読み取るとき)で上矢印を押すと、「email check」コマンドが呼び出されます。左矢印キーを押すとカーソルが左に移動します。これはまさに私が望むものです。

ただし、Linuxでは、上向きキーを押すと^ [[Dが表示されます。左矢印キーと右矢印キーは、^ [[C。

私はsttyについて聞いたことがあり、マニュアルページを見ましたが、Javaアプリケーションを起動して.shスクリプトで何を変更する必要があるのか​​分かりません。誰でも助けてくれますか?

答えて

1

readline機能は、Unitsではこの機能に使用されていますが、Cの機能です。

Here Javaラッパーがあります。 (私はそれを一度も使用しませんでした)

4

最も簡単な解決策は、編集機能を備えた行を読み込んでプログラムに送信する外部ラッパーを使用することです。良いラッパーはrlwrapです。

別々のツールを使用することは、別々のツールを別々の目的(ライン版とプログラムの機能)で使用するというユニックスの考え方に従います。それはまた簡単です:ちょうどmyprogramの代わりにシェルラッパーをrlwrap myprogramにしてください。

基礎となるreadline libraryは(Javaで任意のreadLine方法に関係なく、あなたがそのようなJava-ReadlineなどのJavaラッパーをお勧めします)を統合するためのより多くの仕事であり、GPLなるためにあなたのプログラムを制約します。ラッパーが提供できるものよりも、主にアプリケーション固有の補完が必要な場合にのみ、それを実行してください。

関連する問題