Faça seta e as teclas de exclusão trabalho na linha de comando KornShell
Pergunta
Eu sou novo para Unix e estou usando Solaris sol (v10 eu acho). Eu tenho meu set shell como KornShell (ksh).
Eu estou querendo saber como fazer as teclas de seta e excluir obra-chave na linha de comando. Eu tenho conjunto feito -o emacs e as obras backspace, mas não as setas e as teclas de exclusão.
Também é possível definir a cima e para baixo chave de seta para percorrer o histórico da linha de comando?
Solução
Para as teclas de seta, você pode colocar isso em seu arquivo .kshrc no seu diretório home:
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
Note que existem dois caracteres de sublinhado antes das letras no lado esquerdo do sinal de igual. No lado direito da igualdade, o objetivo é fazer com que o personagem controle adequado atribuído ao alias. A forma como este script faz isso, é executando o comando (através de back-tiques)
echo "\020"
para obter o controle-n caráter atribuído a __B.
Outras dicas
Eu usei seguinte e está funcionando bem:
set -o emacs
Nota: estes são os caracteres de controle reais. Em vi, digite i Ctrl-V, em seguida, ctrl-P (se vc quiser um ctrl-p)
alias _A=^P
alias _B=^N
alias _D=^B
alias _C=^F
e adicione a seguir as linhas demasiado:
alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F
Não combatê-la. Basta ter o administrador alterar seu shell padrão para bash. festa está incluído no Solaris 10, é altamente ksh compatível, e suporta os mapeamentos de teclas que você gosta. Você pode iniciar o bash apenas digitando:
$ bash
Você poderia exec festa fora de seu .profile se o administrador não é útil. Aqui está o que o administrador iria fazer para mudar user1 para 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
O ksh padrão pode ser ksh88 - que não suporta as de alias __ macros de teclado. Ksh93 faz. Basicamente, se ele não funcionar -. Você provavelmente está usando ksh88