Changez la key qui affiche les lignes de command précédentes dans ksh

Dans la plupart des shells sous Linux, lorsque vous appuyez sur la touche fléchée vers le haut , les lignes de command précédentes apparaissent dans l'historique de la command line.

Ma question est, pour le shell ksh ,

  1. Comment puis-je configurer une autre key pour qu'elle affiche la command line précédente?

  2. Comment désactiver la touche fléchée vers le haut pour ne pas afficher la command line précédente?

La plupart des tutoriels que vous pouvez find concernent bash. Ksh est très bon pour les scripts, mais est mauvais à l'utilisation interactive. Utilisez zsh (meilleur) ou bash (deuxième meilleur) comme command line si vous le pouvez.

Il y a deux implémentations principales de ksh aujourd'hui: le shell Korn réel ksh93, et le clone mksh (dérivé du pdksh long-non maintenu). Ils ont différentes installations de binding keys.

En ksh93, les touches Haut et Bas ne se déplacent pas dans l'historique des lignes de command par défaut. Les touches par défaut sont Ctrl + P et Ctrl + N. Vous pouvez modifier les raccourcis keyboard via le piège KEYBD ; c'est plutôt maladroit car vous ne pouvez traduire que des keys à d'autres keys et toutes les bindings doivent être définies au même endroit. Voici comment faire monter et descendre l'historique (ce code va dans ~/.kshrc ):

 set -o emacs function KEYBD_trap { case ${.sh.edchar} in $'\e'[[O]A) .sh.edchar=$'\e>';; $'\e'[[O]B) .sh.edchar=$'\e<';; esac } trap KEYBD_trap KEYBD 

\e[A et \eOA , où \e représente le caractère d'échappement ASCII , sont les deux séquences d'échappement que le terminal peut envoyer lorsque l'user appuie sur la touche Haut (cela dépend du terminal et de son mode actuel). De même, \e[A et \eOA est pour Down . $'\e est une notation que vous pouvez utiliser dans ksh pour le caractère d'échappement; le motif [[O] correspond à un [ ou un O

Dans mksh, vous définissez les raccourcis keyboard via la bind embeddede. Haut et Bas naviguent dans l'historique par défaut (en plus de kbd> Ctrl + P et Ctrl + N ). Le code suivant (à mettre dans ~/.mkshrc ) désactive les touches fléchées:

 bind '^[OA'= bind '^[[A'= bind '^[OB'= bind '^[[B'= 

^[ est une notation que vous pouvez utiliser dans les raccourcis keyboard mskh pour le caractère d'échappement.

Toutes ces informations sont dans la page de manuel du shell, pas nécessairement sous une forme compréhensible si vous ne connaissez pas déjà les shell Unix.