我知道有些程序可以制作 TUI(例如dialog
, whiptail
),允许在 bash 中进行选择。然而,我想要一个简单、漂亮、完全的 CLI 菜单(尽管实现起来可能并不简单)。
笔记:
- 该计划应该不是清除终端(它应该保持当前终端内容完整)
- 程序应该更改菜单的内容,而不是每次按键输入都吐出行
答案应该是 bash/shell 脚本。
给定一个字符串数组(本例中为 4):
options=(opt1 "option 2" another "option here")
我想构建一个菜单,其中突出显示所选选项(如果按下,将选择选项enter
):
如果用户按向上/向下箭头,程序应选择上一个/下一个项目并“循环”选项(当在第一个选项上按向上箭头时,选择将变为最后一个)。此示例显示按下向下箭头后的菜单:
如果用户输入“opt”,菜单选择应仅显示以“opt”开头的选项,并将当前选择更改回第一项:
这可能吗?如果是,请告诉我怎么做。另外,如果需要,我愿意添加任何描述。
答案1
原来有这个工具叫福子,这是一个模糊查找器。脚本应该是:
options=(opt1 "option 2" another "option here")
echo "Please choose an option:"
printf "%s\n" "${options[@]}" | fzy
这似乎是我想要的。