2009-10-26 15 views
15

Soy nuevo en Unix y estoy usando sun solaris (creo que v10). Tengo mi shell configurado como KornShell (ksh).Hacer que las teclas de flecha y eliminar funcionen en la línea de comandos de KornShell

Me pregunto cómo hacer que las teclas de flecha y eliminar la clave de trabajo en la línea de comandos. He hecho set -o emacs y el backspace funciona, pero no las teclas de flecha y las teclas de borrar.

¿También es posible configurar las teclas de flecha hacia arriba y hacia abajo para recorrer el historial de línea de comando?

Respuesta

28

Para las teclas de flecha, se puede poner esto en su archivo de .kshrc en su directorio personal:

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 de la igualdad, el objetivo es obtener el carácter de control adecuado asignado al alias. La forma en que este script hace eso, es mediante la ejecución del comando (a través de back-tics)

echo "\020" 

para obtener el carácter de control-n asignado a __B.

+1

Sería más útil si puede decir lo que hacen las líneas anteriores? – nikhil

+0

Además, si no tiene un archivo .kshrc, cree uno y agregue el contenido anterior. Configure el ENV con el siguiente comando "ENV = $ HOME/.kshrc; export ENV" vuelve a asegurar emitiendo el comando "printenv" –

+0

Tenga en cuenta que pdksh y mksh usan el archivo '.mkshrc' – thecarpy

8

No lo luche. Simplemente haga que su administrador cambie su shell predeterminado a bash. bash se incluye con Solaris 10, es altamente compatible con ksh y admite las asignaciones de teclas que desee. Puede iniciar fiesta con tan sólo escribir:

$ bash 

Usted podría Exec fiesta de su .profile si el administrador no es útil. Aquí es lo que su administrador podría hacer para cambiar usuario1 para golpear (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 
+0

No hay 'chsh' en Solaris 10? –

+0

No, Solaris no es compatible con el comando chsh. :( –

0

El ksh predeterminado puede ser ksh88, que no admite las macros de alias __ keyboard. Ksh93 lo hace. Básicamente, si no funciona, probablemente estés usando ksh88.

9

utilicé siguiente y está trabajando muy bien:

set -o emacs 

Nota: estos son los caracteres de control reales. En vi, tipo i Ctrl-V luego Ctrl-P (si quieres un ctrl-p)

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

y añadir a continuación las líneas demasiado:

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