履歴拡張を実行するときに、コマンド内の複数の単語/トークンの履歴項目を一致させる方法はありますか?

履歴拡張を実行するときに、コマンド内の複数の単語/トークンの履歴項目を一致させる方法はありますか?

tool foo私はすべて同じバイナリ(たとえば、など)を使用する複数のサブコマンドを提供するコマンドラインツールを使用していますtool bar

 7322  [2021-04-16 15:37:45 +0000] tool foo .
 7323  [2021-04-16 15:37:47 +0000] tool bar
 7324  [2021-04-16 15:37:50 +0000] tool baz
 7325  [2021-04-16 15:38:01 +0000] tool qux -a -b asdf -c=100 /var/lib/foo/...
 7326  [2021-04-16 15:38:15 +0000] htop
 7327  [2021-04-16 15:38:21 +0000] tool foo . -x

正確なツールは排他的であり(正確な機能は関係ありません)、独自のコマンドを追跡して呼び出すのに役立つ特定の機能はありません。

たとえば、コマンド7325を覚えておきたいtool qux -a -b asdf -c=100 /var/lib/foo/...(上矢印を数回押すほど新しいコマンドではないと仮定)。コマンドと引数が頻繁に変更され、Bashエイリアス設定が非現実的または不快に見えます(.bashrcを編集またはシェルを閉じるとエイリアスが失われます)。私はとても自信があります。最後これを実行すると、tool qux使用したい正しいパラメータがあるか、とにかく編集する必要があるかなり安全なパラメータセットがあります。

history | grep quxfind History indexを実行してから実行できることを知っています !7325。私ができる方法はありませんか?まっすぐBashプロンプトで一連のキーストロークを入力して覚えていますか?!tool quxこの場合は実行されるため動作しませんtool foo . -x qux。引用してみましたが、拡張がより早く起こっているようです。

答え1

Ctrl通常、+を使用してアクセスするbashの「リバースインタラクティブ検索」を使用できますR。このキーの組み合わせを押すと、次のプロンプトが表示されます。

 (reverse-i-search)`': 

ここからコマンドの作成を開始することができ、履歴から最新の項目から自動的に完了します。ただし、入力した文字列全体と一致するため、tool qすぐに再インポートされますtool qux -a -b asdf -c=100 /var/lib/foo/...。すると、好きなようになります。

からman bash

       reverse-search-history (C-r)
              Search backward starting at the current line  and  moving  `up'
              through  the  history  as  necessary.   This  is an incremental
              search.

関連情報