2009-10-26 9 views
15

Sono nuovo di Unix e sto usando sun solaris (credo v10). Ho il mio set di shell come KornShell (ksh).Make Arrow e cancella i tasti funzionano nella riga di comando di KornShell

Mi chiedo come far funzionare i tasti freccia e il tasto cancella nella riga di comando. Ho fatto set -o emacs e il backspace funziona, ma non i tasti freccia e i tasti cancella.

Inoltre, è possibile impostare i tasti freccia su e giù per scorrere la cronologia della riga di comando?

risposta

28

Per i tasti freccia, si può mettere questo nella vostra file .kshrc nella vostra directory 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 

Si noti che ci sono due caratteri di sottolineatura prima delle lettere sul lato sinistro del segno di uguale. Sul lato destro dell'uguale, l'obiettivo è ottenere il carattere di controllo corretto assegnato all'alias. Il modo in cui questo script fa questo, è eseguendo il comando (tramite back-tic)

echo "\020" 

per ottenere il carattere di controllo-n assegnato a __B.

+1

Sarebbe più utile se si può dire quali sono le linee precedenti? – nikhil

+0

Inoltre, se non si dispone di un file .kshrc, crearne uno e aggiungere il contenuto sopra ad esso. Impostare l'ENV con il seguente comando "ENV = $ HOME/.kshrc; export ENV" assicurati di nuovo inviando il comando "printenv" –

+0

Nota che pdksh e mksh usano entrambi il file '.mkshrc' – thecarpy

8

Non combatterlo. Basta che l'amministratore abbia modificato la shell predefinita in bash. bash è incluso in Solaris 10, è altamente compatibile con ksh e supporta i mapping dei tasti che ti piacciono. È possibile avviare bash semplicemente digitando:

$ bash 

Potreste Exec bash dal vostro .profile se l'amministratore non è utile. Ecco cosa l'amministratore avrebbe fatto cambiare user1 a bash (come 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

Non c'è 'chsh' di Solaris 10? –

+0

No, Solaris non supporta il comando chsh. :( –

0

Il ksh predefinito potrebbe essere ksh88, che non supporta l'alias __ dei tasti della tastiera. Ksh93 lo fa. Fondamentalmente, se non funziona, probabilmente stai usando ksh88.

9

Ho usato seguendo e sta lavorando bene:

set -o emacs 

Nota: questi sono i caratteri di controllo effettivi. Nel VI, di tipo I Ctrl-V poi Ctrl-P (se volete un CTRL-P)

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

e aggiungi qui sotto le linee troppo:

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