Wie mache ich den Bash-Verlauf präfixsensitiv?

8

Wie kann ich beim Drücken von Bash auf / ab den letzten Befehl aufrufen, der mit dem bereits eingegebenen Präfix gestartet wurde?

Z.B

$ ls foo
$ echo hello
$ ls <UP_ARROW>

Wenn Sie nach der Eingabe von ls auf UP klicken, wird "ls foo" und nicht "echo hello" angezeigt.

ripper234
quelle

Antworten:

11

Einige Möglichkeiten:

  1. Binden Sie die history-search-backward/forwardBefehle. Ich glaube, das kommt dem, was Sie wollen, am nächsten:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
    
  2. Verwenden Sie die Verlaufs-i-Suche. Dies ist wahrscheinlich gebunden ^R. Auf einer leeren Zeile, ^Rls<space>werden Sie zurück erhalten ls foodann, ^Rwieder werden Sie zum letzten nehmen lsBefehl (oder einem anderen Befehl mit lsirgendwo in der Linie) vor ls foo, etc ...

  3. Binden Sie den magic-spaceBefehl : bind SPACE:magic-space. Geben Sie dann (in eine leere Zeile) ein !ls<space>, und readline führt die Verlaufsersetzung automatisch durch, sodass Sie mit ls foo.

Andy
quelle
1
Vielen Dank. Ich nahm Option 1 und erkannte mit Hilfe dieser alten Antwort, dass \ e [B den Abwärtspfeil binden wird.
Ripper234
Ich habe Ihre Frage so bearbeitet, dass sie die Verlaufssuche weiterleitet (nun, ich habe eine Bearbeitung an die Bearbeitungswarteschlange
gesendet