前のコマンドラインを表示するkshのキーを変更します。

前のコマンドラインを表示するkshのキーを変更します。

ほとんどのLinuxシェルでは、このキーを押すとUp-arrowコマンドライン履歴に以前のコマンドラインが表示されます。

私の質問はkshシェルの場合

  1. 以前のコマンドラインを表示するように他のキーをどのように設定しますか?

  2. 私がどうする障害を負うUp-arrow前のコマンドラインが表示されないようにキーを使用しますか?

答え1

見つけることができるほとんどのチュートリアルはbashに関するものです。 Kshはスクリプトには適していますが、インタラクティブな使用には適していません。可能であれば、コマンドラインにzsh(最高)またはbash(2番目の最高)を使用してください。

現在、kshには、実際のKornシェルksh93とレプリカmksh(長い間メンテナンスされていないpdkshから派生した)の2つの主な実装があります。彼らは異なるキーバインディング機能を持っています。

ksh93では、デフォルトではコマンドライン履歴からキーは移動されませんUpDown主キーはCtrl+PCtrl+です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では、組み込みを介してキーバインディングを定義できますbindUpそしてDown基本的なナビゲーション履歴(kbd>Ctrl+PCtrl+を除くN)。次のコード(に配置されている~/.mkshrc)は矢印キーを無効にします。

bind '^[OA'=
bind '^[[A'=
bind '^[OB'=
bind '^[[B'=

^[mskh キーバインディングで文字をエスケープするために使用できる表記法です。

これらの情報はすべてシェルのマニュアルページにあり、Unixシェルにまだ慣れていない場合は理解できる形式である必要はありません。

関連情報