如何读取Bash中的任何一个键?

时间:2012-07-21 21:42:17

标签: bash keyboard

我可以获得read -n 1 KEY来获取大多数密钥,除了由多个字符表示的密钥。例如,如果我按向上箭头键:

$ read -n 1; echo
^[[A
$ [A

如您所见,read只接受 Esc ,而[A仍然存在。

我希望在脚本中能够做到的是:

  1. 使用箭头键浏览列表,然后按 Enter 对其执行某些操作
  2. 对于其他操作,请按不同的键。

2 个答案:

答案 0 :(得分:8)

你最好不要像jm666那样使用对话框,但还有其他方法可以让那只猫皮肤。

read -n 1 x; while read -n 1 -t .1 y; do x="$x$y"; done

基本上等到你读完一个角色然后旋转消耗输入,直到.1秒没有输入。

警告,快速打字员可能会生气。您可能需要调整该超时。

答案 1 :(得分:3)

不是你问题的直接答案 - 而是解决方法:

您可能应该检查“对话框”实用程序,以便从shell创建“ncurses”(面向屏幕)对话框。见:http://hightek.org/dialog/

Google构建了一些示例,或查看:http://unstableme.blogspot.sk/2009/12/linux-dialog-utility-short-tutorial.html