unix - moneda - ksh toberas
Hacer que las flechas y las teclas de eliminación funcionen en la línea de comandos de KornShell (4)
El ksh predeterminado podría ser ksh88, que no admite las macros de alias __ teclado. Ksh93 lo hace. Básicamente, si no funciona, probablemente esté utilizando ksh88.
Soy nuevo en Unix y estoy usando sun solaris (v10, creo). Tengo mi shell configurado como KornShell (ksh).
Me pregunto cómo hacer que las teclas de flecha y eliminar el trabajo clave en la línea de comandos. He hecho set -o emacs y el retroceso funciona, pero no las teclas de flecha y las teclas de eliminación.
¿También es posible configurar las teclas de flecha arriba y abajo para recorrer el historial de la línea de comandos?
No luches contra eso. Simplemente haga que su administrador cambie su shell predeterminado para bash. bash se incluye con Solaris 10, es altamente compatible con ksh y admite las asignaciones de teclas que desee. Puedes iniciar bash simplemente escribiendo:
$ bash
Si no es útil, su administrador no puede ayudarlo. Esto es lo que haría su administrador para cambiar user1 a bash (como 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
Para las teclas de flecha, puede poner esto en su archivo .kshrc en su directorio de inicio:
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
Tenga en cuenta que hay dos caracteres de subrayado antes de las letras en el lado izquierdo del signo igual. En el lado derecho del igual, el objetivo es obtener el carácter de control apropiado asignado al alias. La forma en que este script hace eso, es ejecutando el comando (a través de tics)
echo "/020"
para obtener el carácter de control-n asignado a __B.
Utilicé el siguiente y está funcionando bien:
set -o emacs
Nota: estos son los caracteres de control reales. En vi, escribe i ctrl-v y luego ctrl-P (si quieres un ctrl-p)
alias _A=^P
alias _B=^N
alias _D=^B
alias _C=^F
y añade las siguientes líneas también:
alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F