Bash

尋找命令行包以顯示帶有箭頭鍵的內聯基於文本的菜單選擇器

  • January 27, 2020

我正在尋找一種用於在外殼中顯示內聯菜單的工具,可以使用箭頭鍵導航並輸入。“內聯”是指菜單顯示在標準輸出文本的正常流中,而不是顯示在所有內容之上的彈出對話框中。

我只發現該文章試圖解決這個問題,但它只提到自定義腳本或非內聯/彈出解決方案(如dialogzenity)。

我正在尋找的是一個健壯的包,我可以簡單地使用apt-getor安裝在 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 中的結構讓子字元串以粗體模式顯示不可選擇的行(因為可選擇的行總是以粗體顯示) 。

引用自:https://unix.stackexchange.com/questions/539202