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.