usd toberas moneda examples unix shell ksh

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