bash履歴をプレフィックス依存にする方法は?


8

bashを上下に押すと、すでに入力したプレフィックスで始まる最後のコマンドが表示されるようにするにはどうすればよいですか?

例えば

$ ls foo
$ echo hello
$ ls <UP_ARROW>

lsを入力した後でUPをクリックすると、「echo hello」ではなく「ls foo」が表示されます。

回答:


11

いくつかの可能性:

  1. history-search-backward/forwardコマンドをバインドします。私はこれがあなたが望むものに最も近いと信じています:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
  2. 履歴i-searchを使用します。これはおそらくバインドされてい^Rます。空の行で^Rls<space>は、に戻りls foo、次に^Rの前の最後のlsコマンド(lsまたは行のどこかにある他のコマンド)に再び移動しますls foo...

  3. magic-spaceコマンドをバインドしますbind SPACE:magic-space。次に(空の行に)!ls<space>と入力すると、readlineは自動的に履歴の置換を実行し、そのままにしますls foo


1
ありがとう。私はオプション1を採用し、この古い答えの助けを借りて、\ e [Bが下矢印をバインドすることに気づきました。
ripper234

質問を編集してhistory-search-forwardを含めました(編集を編集キューに送信しました)
ripper234 '27
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.