KornShellコマンドラインでArrowとDeleteキーが機能するようにする
質問
私はUnixが初めてで、sun solaris(v10と思います)を使用しています。シェルをKornShell(ksh)として設定しています。
コマンドラインで矢印キーと削除キーを機能させる方法を知りたいのですが。 set -o emacsを実行しましたが、バックスペースは機能しますが、矢印キーと削除キーは機能しません。
また、上下の矢印キーを設定してコマンドライン履歴を循環させることは可能ですか?
解決
矢印キーの場合、これをホームディレクトリの.kshrcファイルに入れることができます。
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
等号の左側の文字の前に2つの下線文字があることに注意してください。イコールの右側の目標は、エイリアスに割り当てられた適切な制御文字を取得することです。このスクリプトの実行方法は、コマンドを実行することです(バックティック経由)
echo "\020"
__ Bに割り当てられたcontrol-n文字を取得します。
他のヒント
以下を使用し、正常に動作しています:
set -o emacs
注:これらは実際の制御文字です。 viで、i ctrl-vと入力してからctrl-Pと入力します(ctrl-pが必要な場合)
alias _A=^P
alias _B=^N
alias _D=^B
alias _C=^F
以下の行も追加:
alias __A=^P
alias __B=^N
alias __D=^B
alias __C=^F
戦わないでください。 管理者にデフォルトのシェルをbashに変更してもらってください。 bashはSolaris 10に含まれており、高度なksh互換性があり、好みのキーマッピングをサポートします。 次のように入力するだけでbashを起動できます。
$ bash
管理者が役に立たない場合は、.profileからbashを実行できます。 以下は、管理者がuser1を(rootとして)bashに変更するために行うことです。
# 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
デフォルトのkshはksh88である可能性があります-これはエイリアス__キーボードマクロをサポートしていません。 Ksh93はそうです。基本的に、それが機能しない場合-おそらくksh88を使用しています。