Faire en sorte que les touches Arrow et delete fonctionnent dans la ligne de commande KornShell

StackOverflow https://stackoverflow.com/questions/1623256

  •  06-07-2019
  •  | 
  •  

Question

Je suis nouveau sur Unix et j'utilise sun solaris (v10 je pense). J'ai ma coquille définie comme KornShell (ksh).

Je me demande comment utiliser les touches fléchées et supprimer des touches dans la ligne de commande. J'ai fait set -o emacs et le retour arrière fonctionne, mais pas les touches fléchées et les touches supprimer.

Est-il également possible de définir les flèches haut et bas pour parcourir l'historique de la ligne de commande?

Était-ce utile?

La solution

Pour les touches de direction, vous pouvez l'insérer dans le fichier .kshrc de votre répertoire personnel:

set -o emacs
alias __A=`echo "\020"`     # up arrow = ^p = back a command
alias __B=`echo "\016"`     # down arrow = ^n = down a command
alias __C=`echo "\006"`     # right arrow = ^f = forward a character
alias __D=`echo "\002"`     # left arrow = ^b = back a character
alias __H=`echo "\001"`     # home = ^a = start of line
alias __Y=`echo "\005"`     # end = ^e = end of line

Notez qu'il y a deux caractères de soulignement avant les lettres à gauche du signe égal. Sur le côté droit de l’égal, l’objectif est d’obtenir le bon caractère de contrôle attribué à l’alias. La façon dont ce script fait cela est en exécutant la commande (via les back-tics)

echo "\020"

pour obtenir le caractère de contrôle n assigné à __B.

Autres conseils

J'ai utilisé la suite et fonctionne bien:

set -o emacs

Remarque: ce sont les caractères de contrôle réels. Dans vi, tapez i ctrl-v puis ctrl-P (si vous voulez un ctrl-p)

alias _A=^P
alias _B=^N
alias _D=^B
alias _C=^F

et ajoutez également les lignes ci-dessous:

alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F

Ne vous battez pas. Demandez à votre administrateur de modifier votre shell par défaut en bash. bash est inclus dans Solaris 10, est hautement compatible ksh et prend en charge les mappages de touches que vous aimez. Vous pouvez lancer bash simplement en tapant:

$ bash

Vous pouvez exécuter en bas de votre fichier .profile si votre administrateur n’est pas utile. Voici ce que votre administrateur ferait pour remplacer user1 par bash (en tant que root):

# passwd -e user1
Old shell: /bin/ksh
New shell: /usr/bin/bash        <- You type this, use whence bash to look up the path
passwd: password information changed for user1

Le ksh par défaut peut être ksh88 - qui ne prend pas en charge les macros de clavier alias __. Ksh93 fait. Fondamentalement, si cela ne fonctionne pas, vous utilisez probablement ksh88.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top