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.

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.