ほとんどのLinuxシェルでは、このキーを押すとUp-arrowコマンドライン履歴に以前のコマンドラインが表示されます。
私の質問はksh
シェルの場合
以前のコマンドラインを表示するように他のキーをどのように設定しますか?
私がどうする障害を負うUp-arrow前のコマンドラインが表示されないようにキーを使用しますか?
答え1
見つけることができるほとんどのチュートリアルはbashに関するものです。 Kshはスクリプトには適していますが、インタラクティブな使用には適していません。可能であれば、コマンドラインにzsh(最高)またはbash(2番目の最高)を使用してください。
現在、kshには、実際のKornシェルksh93とレプリカmksh(長い間メンテナンスされていないpdkshから派生した)の2つの主な実装があります。彼らは異なるキーバインディング機能を持っています。
ksh93では、デフォルトではコマンドライン履歴からキーは移動されませんUp。Down主キーはCtrl+PとCtrl+ですN。トラップでキーバインディングを変更できますKEYBD
。キーを別のキーにのみ変換でき、すべてのバインディングを同じ場所で定義する必要があるため、多少扱いにくいです。履歴Upを作成して移動する方法は次のとおりですDown(このコードはに入ります~/.kshrc
)。
set -o emacs
function KEYBD_trap {
case ${.sh.edchar} in
$'\e'[[O]A) .sh.edchar=$'\e>';;
$'\e'[[O]B) .sh.edchar=$'\e<';;
esac
}
trap KEYBD_trap KEYBD
\e[A
と\eOA
は次のことを\e
示します。ASCIIエスケープ文字は、ユーザーがキーを押したときに端末が送信できる2つのエスケープシーケンスですUp(ターミナルと現在のモードによって異なります)。同様に、\e[B
と\eOB
はですDown。$'\e
文字をエスケープするためにkshで使用できる表記法です。パターンは[[O]
a[
またはaと一致しますO
。
mkshでは、組み込みを介してキーバインディングを定義できますbind
。UpそしてDown基本的なナビゲーション履歴(kbd>Ctrl+PとCtrl+を除くN)。次のコード(に配置されている~/.mkshrc
)は矢印キーを無効にします。
bind '^[OA'=
bind '^[[A'=
bind '^[OB'=
bind '^[[B'=
^[
mskh キーバインディングで文字をエスケープするために使用できる表記法です。
これらの情報はすべてシェルのマニュアルページにあり、Unixシェルにまだ慣れていない場合は理解できる形式である必要はありません。