FreeBSD csh style history automatische Vervollständigung in bash

1143
Derek

Ich bin auf der Suche nach einer Möglichkeit, es so zu gestalten, dass meine Ubuntu-Bash-Shell die gleiche Art von Verlaufsabschluss hat wie Sie mit csh in FreeBSD.

Das Verhalten ist so, dass in der Befehlszeile, wenn ich etwas schreibe und den Aufwärts- / Abwärtspfeil drückt, die Historie nach Befehlen durchsucht wird, die mit dem begonnen haben, was ich angefangen habe

Zum Beispiel, wenn die Geschichte enthalten ist

 1 ls -al 2 yes 3 ls -altr 4 ls 5 history 

und ich tippe lsund drücke den Aufwärts- / Abwärtspfeil, es würde durch ls ls -alund durchlaufenls -altr

Wie kann ich dasselbe Verhalten in Ubuntu Bash implementieren?

1
Sie könnten csh auf Ubuntu verwenden :) rici vor 10 Jahren 0

1 Antwort auf die Frage

4
rici

Sie sollten dazu in der Lage sein, die Pfeiltasten in Ihrem Bash-Profil erneut zu binden. Die Aufwärts- und Abwärtspfeile sind standardmäßig an previous-historyund gebunden next-history. Ich glaube, das Verhalten, das Sie suchen, ist history-search-backwardund history-search-forwardist an keinen Schlüssel gebunden.

Die folgenden Befehle erledigen die Neubindung:

bind '"\e[A": history-search-backward' bind '"\e[B": history-search-forward' 

(vorausgesetzt, Ihr Terminalemulator führt eine der Standardzuordnungen der Pfeiltasten aus.)

previous-historyund next-historysind standardmäßig auch an gebunden ctrl+Pund ctrl+Nin meinem schnellen Experiment schien es jedoch ein leichtes Interoperabilitätsproblem zu geben zwischen next-historyund history-search-backwardEs könnte nur ein Problem mit der readlineinstallierten Version von mir sein.

bash bietet auch inkrementelle Historiensuche rückwärts ( ctrl+R; ctrl+Svorwärts inkrementelle Suche), die etwas gleichwertig ist, aber nicht verankern nicht die Geschichte Suche am Anfang der Zeile. (Außerdem müssen Sie daran denken, es zuerst einzugeben.)