bash - 为半可移植 shell 脚本制作弹出菜单的最佳(?)方法?

标签 bash scripting shell menu interactive

基本上我想说:

  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/

相关文章:

powershell - 随着 Powershell 的迅速普及,是否还有理由学习 VBScript?

shell - fish shell : append argument to an existing function

linux - Cron 作业调度在 ubuntu 中不起作用

linux - 解析shell脚本中的参数

regex - "11th to 16th letter"的正则表达式

java - 使用空格对 JAVA_OPTIONS 进行 JVM 调优?

linux - 是否可以创建一个始终以 root 身份启动程序的 shell 脚本?不管是谁在运行它

regex - 在 Ubuntu 中使用重命名递归更改文件前缀,(正则表达式不起作用)

javascript - 如何直接在url中调用onclick javascript函数?

python - Maya Python 3x - 基于法线角度选择边