web-dev-qa-db-ja.com

KornShellコマンドラインでArrowキーとDeleteキーを機能させる

私はUnixを初めて使用し、Sun Solaris(v10だと思います)を使用しています。シェルをKornShell(ksh)に設定しています。

コマンドラインで矢印キーとDeleteキーを機能させる方法を知りたいです。 set -o emacsを実行し、バックスペースは機能しますが、矢印キーと削除キーは機能しません。

また、コマンドライン履歴を循環するように上下の矢印キーを設定することは可能ですか?

18
user66854

矢印キーの場合、これをホームディレクトリの.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文字を取得します。

32
Tim

私は以下を使用し、正常に動作しています:

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
9
Vishal

それと戦わないでください。管理者にデフォルトのシェルをbashに変更してもらうだけです。 bashはSolaris10に含まれており、kshとの互換性が高く、必要なキーマッピングをサポートします。次のように入力するだけでbashを起動できます。

$ bash

管理者が役に立たない場合は、.profileからbashを実行できます。管理者がuser1をbash(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
7
Bob Stark

デフォルトのkshはksh88である可能性があります。これは、エイリアス__キーボードマクロをサポートしていません。 Ksh93はそうします。基本的に、それが機能しない場合は、おそらくksh88を使用しています。

0
Smh