Comment puis-je lire une seule clé en Bash?
Je peux obtenir read -n 1 KEY
pour obtenir la plupart des touches, sauf pour les touches qui sont représentés par plusieurs caractères. Par exemple, si j'appuie sur la touche flèche vers le haut:
$ read -n 1; echo
^[[A
$ [A
Comme vous pouvez le voir, read
ne prend l' Esc et le [A
est laissé.
Ce que je veux être capable de faire dans un script:
- De parcourir une liste avec les touches fléchées et appuyez sur Entrée pour faire quelque chose avec elle
- Pour d'autres actions, appuyez sur des touches différentes.
Ncurses est une bibliothèque pour faire de telles interfaces console: stackoverflow.com/questions/7876008/...
OriginalL'auteur biggles5107 | 2012-07-21
Vous devez vous connecter pour publier un commentaire.
Vous êtes mieux à l'aide de la boîte de dialogue de jm666 mentionné, mais il y a d'autres façons de la peau de chat.
Fondamentalement, attendez de lire un caractère, puis spin consommer de l'entrée jusqu'.1 secondes se sont écoulées w/o entrée.
Avertissement, les dactylographes pourrait se fâcher. Vous pourriez avoir besoin de tweak qui timeout.
Je suppose que 2400 bauds connexions d'accès à distance sont assez rares, ce qui devrait être en sécurité.
Toujours pas bon lorsque vous copiez et collez du texte. Alors pas de délai d'attente est assez rapide pour détecter la présence de ce. Nous devons utiliser la terminfo pour savoir si nous avons un multi-octets touche à portée de main.
Cela ne fonctionne pas pour moi (linux) lorsque le personnage est d'Entrer ou de l'Espace ou Tabulation. Il fonctionne pour revenir en arrière et même des Esc.
OriginalL'auteur Seth Robertson
Pas une réponse directe à votre question - mais le moyen de la solution:
Vous devriez probablement vérifier le "dialogue" de l'utilitaire pour la création de "ncurses" (écran orienté) les boîtes de dialogue à partir du shell. voir: http://hightek.org/dialog/
Formulaire de Google quelques exemples, ou vérifier: http://unstableme.blogspot.sk/2009/12/linux-dialog-utility-short-tutorial.html
OriginalL'auteur jm666