尋找命令行包以顯示帶有箭頭鍵的內聯基於文本的菜單選擇器
我正在尋找一種用於在外殼中顯示內聯菜單的工具,可以使用箭頭鍵導航並輸入。“內聯”是指菜單顯示在標準輸出文本的正常流中,而不是顯示在所有內容之上的彈出對話框中。
我只發現該文章試圖解決這個問題,但它只提到自定義腳本或非內聯/彈出解決方案(如
dialog
或zenity
)。我正在尋找的是一個健壯的包,我可以簡單地使用
apt-get
or安裝在 Docker 映像中,npm install -g
並從我的腳本中呼叫一個選項列表並取回使用者選擇的項目。在 nodeJS 中,我使用的是Inquirer,它不僅提供那種菜單,還提供各種輸入。
這是此類內聯菜單的範例螢幕截圖。
該工具不必用 shell 腳本編寫。它可以是用任何語言編寫的二進制/腳本,只要使用
apt-get
/安裝起來相當容易curl
。即使是 nodeJS 工具也可以,只要它可以從 shell 腳本中呼叫以將選擇傳遞給它。
許多年前,我曾經為此使用iselect 。
一個非常基本的例子:
$ sel="$(iselect -a 'foo' 'bar')" $ echo $sel foo
來自
man iselect
:iSelect 是用於 ASCII 文件的互動式行選擇工具,通過基於 Curses 的全屏終端會話進行操作。它既可以用作由 Bourne-Shell、Perl 或其他類型的腳本後端控制的使用者界面前端,也可以用作管道過濾器(通常在 grep 和最終執行命令之間)。換句話說:iSelect 旨在用於任何類型的基於互動行的選擇。
輸入數據
輸入從命令行(line1 line2 …)讀取,其中每個參數對應一個緩衝區行,或者從 stdin(當沒有給出參數時)讀取,其中緩衝區行是根據換行符確定的。
"<b>"..."</b>"
您還可以通過使用HTML 中的結構讓子字元串以粗體模式顯示不可選擇的行(因為可選擇的行總是以粗體顯示) 。