2009-10-26 6 views
15

Ich bin neu in Unix und verwende Sun Solaris (v10 denke ich). Ich habe meine Shell als KornShell (ksh) eingestellt.Make Arrow und löschen Schlüssel arbeiten in KornShell Kommandozeile

Ich frage mich, wie man die Pfeiltasten und löschen Schlüssel in der Befehlszeile arbeiten. Ich habe -o Emacs eingestellt und die Rücktaste funktioniert, aber nicht die Pfeiltasten und die Löschtasten.

Ist es auch möglich, die Pfeil-nach-oben- und Pfeil-nach-unten-Taste zu drücken, um durch die Kommandozeilenhistorie zu blättern?

Antwort

28

Für die Pfeiltasten können Sie diese setzen in Ihr die .kshrc Datei in Ihrem Home-Verzeichnis:

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 

Beachten Sie, dass vor den Buchstaben auf der linken Seite des Gleichheitszeichens zwei Unterstriche stehen. Auf der rechten Seite des Gleichen ist es das Ziel, dem Alias ​​das richtige Steuerzeichen zuzuordnen. Die Art und Weise dieses Skript tut, ist mit dem Befehl ausgeführt wird (über Back-Tics)

echo "\020" 

die Steuer-n Zeichen __B zugewiesen zu bekommen.

+1

Es wäre hilfreicher, wenn Sie wissen, was die obigen Zeilen tun? – nikhil

+0

Wenn Sie keine .kshrc-Datei haben, erstellen Sie eine und fügen Sie den obigen Inhalt hinzu. Legen Sie die ENV mit dem folgenden Befehl fest "ENV = $ HOME/.kshrc; export ENV" Stellen Sie erneut sicher, indem Sie den Befehl "printenv" ausgeben –

+0

Beachten Sie, dass pdksh und mksh beide die Datei '.mkshrc' verwenden – thecarpy

8

Bekämpfen Sie es nicht. Lassen Sie einfach Ihre Standard-Shell in Bash versetzen. Bash ist in Solaris 10 enthalten, ist in hohem Maße ksh-kompatibel und unterstützt die von Ihnen gewünschten Tastenzuordnungen. Sie können bash starten Sie einfach durch Eingabe:

$ bash 

Sie bash aus Ihrem .profile exec könnte, wenn der Administrator nicht hilfreich ist. Hier ist das, was Ihr Administrator user1 ändern tun würde bash (als 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

Es gibt keine 'chsh' in Solaris 10? –

+0

Nein, Solaris unterstützt den Befehl chsh nicht. :( –

0

Der Standard-ksh könnte ksh88 sein - der die Alias-Tastaturmakros nicht unterstützt. Ksh93 tut es. Wenn es nicht funktioniert, verwenden Sie wahrscheinlich ksh88. Ich

9

verwendet folgende und funktioniert gut:

set -o emacs 

Hinweis: Das sind die tatsächlichen Steuerzeichen sind. In vi, i-Typ Ctrl-V dann ctrl-P (wenn u eine ctrl-p wollen)

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

und fügen Sie auch unter Linien:

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