すべてのインタプリタでコマンド履歴を検索する

すべてのインタプリタでコマンド履歴を検索する

通訳者スロットを実行すると、rlwrap上下の矢印キーを押してコマンド履歴にアクセスできます。しかし、Bashのように(Ctrl-rを使用して)コマンド履歴を取得できたらと思います。rlwrapこの機能を備えた代替手段はありますか?ところで、私はrlwrap0.43バージョンを使用しています。

編集:この問題はGNU APLに関連しているようです。他のコマンドラインソルバーでは、Ctrl-rコマンドは期待どおりに機能します。

答え1

rlwrapマンページから:

-a, --always-readline [password_prompt]
          Always  remain in "readline mode", regardless of command's
          terminal settings.  Use this option if you want to use 
          rlwrap with commands that already do some line editing.

インタプリタ(または必要なコマンドrlwrap)にすでにコマンド書き込みメカニズムがある場合、これは明らかに次のコマンドの1つです。

rlwrapこの場合の使用方法は次のとおりです(GNU APLインタプリタをapl例として使用)。

$ rlwrap --always-readline apl

ただし、これは既存の項目を上書きすることに注意してくださいapl非常にAPLに特化した歴史と完成メカニズム)。これを回避する方法(スポイラー:できません!)は、実際には次のいずれかです。最も一般的なFAQ~についてrlwrap

省略すると、--always-readlinerlwrap透明」のままになります。つまり、すべてのキー押下を rlwrapped コマンドに渡し、何もしません。

答え2

Debianではすぐに使用できますCtrl-R

$ rlwrap --version
rlwrap 0.42
$ rlwrap cat > /dev/null 
foo
bar
(reverse-i-search)`f': foo

/etc/inputrcそして、~/.inputrcこれはReadlineを使用しても適用されるため、rlwrap利用可能なバインディングに影響を与える可能性があります。 (しかし、あなたはそれがBashで動作することを示唆していたので、それとは何の関係もないかもしれませんinputrc。)

関連情報