Passen Sie die Auf- und Ab-Tasten an die cmd-Funktionalität (Point-in-Time) an

Passen Sie die Auf- und Ab-Tasten an die cmd-Funktionalität (Point-in-Time) an

Wie passe ich Bash so an, dass die Auf- und Ab-Tasten dieselben sind wie in cmd?

Z.B

$echo command1
$echo command2
$echo command3
$echo command4

Sowohl in Bash als auch in cmd wird durch Drücken von , , , ENTERausgeführt echo command2.

Wenn Sie jedoch anschließend in cmd die Abwärtstaste drücken, gelangen Sie direkt zum nachfolgenden Befehl, d. h echo command3. Das Drücken der Abwärtstaste in Bash bewirkt nichts. cmd speichert den Zeitpunktverlauf (ähnlich den Zurück- und Vorwärts-Schaltflächen in einem Webbrowser), Bash hingegen nicht.

Ähnlich verhält es sich mit cmd: Wenn Sie die Aufwärtstaste zweimal drücken, gelangen Sie zurück echo command1, während dies in Bash zurückgibt echo command3.

Es kommt oft vor, dass ich eine Befehlskette wiederholen möchte, die ich zuvor der Reihe nach eingegeben habe. Es ist wirklich praktisch, dass ich in cmd durch den Verlauf zum ersten der Sequenz zurückblättern und dann, , ENTER, , ENTER, , ENTER...

Ich kann jedoch keine ähnliche Möglichkeit finden, dies in Bash zu tun. Ist es möglich, ~/.inputrceine andere Datei zu ändern oder auf irgendeine Weise, um dies zu erreichen?

Antwort1

Obwohl ich persönlich es nicht tun möchte, da ich mich an den Bash-Verlauf gewöhnt habe, kann ich verstehen, warum manche das möchten. Ich habe das schon einmal für einen Kollegen bei der Arbeit untersucht, der neu bei *nix war und DOS-ähnliche Funktionen in einem xterm haben wollte, und damals wie heute scheint es keine Lösung zu geben.

Ich habe gerade noch einmal eine umfangreiche Suche durchgeführt und konnte nichts Offensichtliches finden, außer:

Seltsamerweise gibt es viele Möglichkeiten, cmd mehr Bash zu machen, wie zum Beispiel:Bash-Verlaufsähnliche Funktion für die Windows-Eingabeaufforderung, aber traurigerweisenicht umgekehrt.

Das Hauptproblem ist, um es (übertrieben) einfach auszudrücken, dass die Cursortastenfunktionalität (und ihre Interaktion mit dem Verlauf) in den Bash-Quellcode integriert ist und Skripte, Aliase und Shell-Funktionen diese Tatsache nicht außer Kraft setzen können 1 . Was Sie benötigen, ist einumgeschriebenbash, mit verschiedenen integrierten [umschaltbaren?] Cursortastenfunktionen, eine Art „DOSBash“, wenn Sie so wollen.

Vielleicht besteht die Möglichkeit, eine Nische zu bedienen, und irgendjemand wird diesen Bedarf irgendwann decken, aber ich würde da nicht allzu viel hoffen.


1 Wenn ich falsch liege und es möglich ist, die Cursortastenfunktionalität durch eine einfache Änderung der Ressourcendatei außer Kraft zu setzen, wäre ich erfreut, wenn mich jemand aufklären könnte.

Antwort2

Der Trick, den ich verwende, besteht darin, einfach dieselbe Anzahl von Folgendem zu wiederholen :

$ echo command1
$ echo command2
$ echo command3
$ echo command4

echo command 2Wenn ich die Sequenz von bis wiederholen möchte echo command4, drücke ich einfach dreimal, um zu zu gelangen echo command2, und dann noch einmal dreimal, um zu zu gelangen, echo command3und noch einmal dreimal für echo command4.

Wenn Sie also durch N-maliges Drücken von N Elementen in Ihrem Verlauf zurückgegangen sind , gelangen Sie durch erneutes N-maliges Drücken jedes Mal zum nächsten Befehl, da der neue, von Ihnen ausgeführte Befehl eingefügt wurde.

verwandte Informationen