簡體   English   中英

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

[英]How do I accept left/right/up/down arrow inputs in a Linux shell?

我編寫了一個Java應用程序,它有一個while(input.readLine()),它繼續讀取輸入,直到用戶鍵入quit命令。 我有一個.bat腳本在Windows中啟動它,一個.sh在Linux中啟動它。 該應用程序在兩者中都運行正常

在Windows中,如果您鍵入“check email”之類的命令並按Enter鍵,它將執行該命令。 然后,在下一個提示符(即:下次Java應用程序讀取輸入行)時,您可以點擊向上箭頭,它會調用您的“檢查電子郵件”命令。 您可以按左箭頭鍵向左移動光標等。這正是我想要的。

但是,在Linux上,按向上鍵會導致^ [[D出現。 左右箭頭鍵產生類似的ASCII輸出,如^ [[C.

我聽說過stty並查看了man頁面,但是無法通過啟動我的Java應用程序來弄清楚我需要在.sh腳本中進行更改。 誰能幫我?

最簡單的解決方案是使用外部包裝器讀取具有版本功能的行,然后將其發送到您的程序。 一個好的包裝是rlwrap

使用單獨的工具符合unix的理念,即將單獨的工具用於不同的目的(行版本和程序所做的任何事情)。 它也很簡單:只需讓你的shell包裝器運行rlwrap myprogram而不是myprogram

底層的readline庫 (與Java中的任何readLine方法無關;你需要一個Java包裝器,如Java-Readline )是更多的工作來集成,並將你的程序限制為GPL。 只有當你想要的東西超過包裝器所能提供的東西時才能實現這一目標 - 主要是特定於應用程序的完成。

readline函數用於Unices上的這些東西,但它是一個C函數。

在這里你可以找到它的Java包裝器。 (我從來沒用過它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM