私は 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 つのアンダースコア文字があることに注意してください。等号の右側では、エイリアスに割り当てられた適切な制御文字を取得することが目標です。このスクリプトがそれを行う方法は、コマンドを実行することです (back-tics を介して)
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 を使用しています。