基本上我想说:
echo `grep ^foo /usr/share/dict/words | popup_menu`
...并有某种类型的键盘导航菜单弹出窗口或选择工具,与 vim 的“:Explore”机制的工作方式非常相似。
“使用标准工具简单且几乎无处不在”的额外奖励
“需要某种额外的配置文件或 5-10 行 shell 脚本”也是可以接受的
不太可接受的是“去下载这个 perl 库或 100 行 python 脚本,等等......”在这一点上,我宁愿只是尝试找到一些实际的程序/包来安装并将其列为硬依赖。但是,如果你能想出一个 2-5 行的 perl/python 脚本,它不需要跟踪可能也能工作的库。
我调查过:
Dialog - 似乎更适合“shell 应用程序”而不是临时脚本(不过看起来可能有办法让它做我想做的事),缺点是它会覆盖当前屏幕状态
Curses - 似乎它针对“C”或者需要用作 perl/python 库的一部分,必须使用它编写我自己的菜单程序
bash 内置“select”——通过数字选择工作,而不是键盘导航,使用起来有点笨拙,但相当接近
Vim - "grep ^foo/usr/share/dict/words | vim -"... 这让你出奇地接近,只是缺少 "bind the enter key to print current line to terminal and exit"
...那么,当我在命令行上懒惰时,我该如何制作或找到一个像样的、简单的、临时的菜单制作器以用于 bash 脚本?
... git checkout -b `git branch -a | menu`
... ssh `grep foo /etc/hosts | menu`
... rm `ls | menu` # ignore obvious quoting issues with this...
编辑:感谢到目前为止的回答,但我想再次强调我正在寻找 ASCII/文本菜单(不是 xwindows)。我正在本地尝试一些东西,但还没有达到最佳状态。
最佳答案
zenity 在脚本中使用起来非常简单,但它会创建 GUI 窗口。不确定它是否适用于您...
关于bash - 为半可移植 shell 脚本制作弹出菜单的最佳(?)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609230/