Ctrlbash の reverse-i-search 機能は便利ですが、キーバインディング ( + )にバインドされているように見えるという点で、他のほとんどの bash コマンドとは異なりますR。代わりにエイリアスまたは入力コマンドを使用して、ユーザーがこの機能をトリガーするにはどうすればよいですか?
2 に答える
reverse-i-search 関数は実際には readline 関数 (reverse-search-history) であり、bash 組み込み関数 (man builtin またはbash リファレンス マニュアルの組み込みコマンドを参照) ではありません。私の知る限り、キーにバインドする以外に readline 関数を呼び出す方法はありません。
これらの関数へのすべての readline キー バインドは、" bind -l -p
" を使用して確認できます。バインド可能な readline コマンドのリストは、リファレンス マニュアルにも記載されています。
コマンドをいつでも使用しhistory
て履歴のリストを取得し、grep
探しているものを見つけるために使用できます。私自身、これは便利だと思います:
alias hists="history | grep -v '^ *[0-9]* *hists' | grep $@"
実行するhists something
と、一致するすべてのコマンドのリストが表示されますsomething
。あとは !# を実行してコマンドを実行するだけです。例えば:
bash-3.2$ hists emacs
30 emacs
128 emacs
129 emacs
204 emacs
310 emacs .bash_history
324 emacs Documents/todo.txt
bash-3.2$ !324
それはまさにあなたが探しているものではありませんが、私ができる限り近いものです.
bash または history (3readline) の man ページの "History Expansion > Event Designators" の下を見ると、この種のことを行うためのコマンドが表示されます。
!?prof?
「prof」を含む最新のコマンドが表示され、すぐに実行されます。コマンドを実行せずに印刷したい場合は、「:p」を追加できます
!?prof?:p
コマンド ラインでコマンドを編集するには、上記の例を使用して、次のように入力します。
!?prof
(Enter を押さないでください) M-^ を押します
これらは bash の拡張機能を使用します。最新の一致のみを取得します。
スクリプトまたはエイリアスを作成する場合は、bash のマニュアル ページで組み込みコマンド「fc」および「history」(-p または -s) を参照してください。また、「shopt -s histreedit」。
エイリアスの例を次に示します。
alias dothis='`history -p "!?jpg?"`'
(これらは一重引用符のすぐ内側の逆引用符です)。
これらのコマンドのいくつかを使用して、クールな「s/old/new」やその他のことも実行できます。