How do I read any one key in Bash?

Viewed 18132

I can get read -n 1 KEY to get most keys, except for keys which are represented by multiple characters. For example, if I press the up arrow key:

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

As you can see, read only takes the Esc and the [A is left over.

What I want to be able to do in a script is:

  1. Go through a list with the arrow keys and press Enter to do something with it
  2. For other actions, press different keys.
2 Answers
Related