Ich schaffe es irgendwie, den ursprünglichen Befehl zu beeinflussen, dh meine Bearbeitung ersetzt den ursprünglichen Befehl in der Geschichte.
Recht. Wenn Sie in Ihrem Verlauf zurückgehen und die Zeile ohne bearbeiten Drücken Sie die Eingabetaste, um den Befehl auszuführen, aber wechseln Sie stattdessen zu einem anderen Verlaufseintrag, den Sie gerade bearbeitet haben der Geschichtseintrag. Wenn Sie dann Ihren Verlauf auflisten, sehen Sie einen *
in der Zeile, die anzeigt, dass Sie es bearbeitet haben. Ich finde dieses "Feature" immens frustrierend. Andere haben gute Beispiele dafür geliefert, wie man das reproduzieren kann.
Mein Ziel ist es, dies zu vermeiden, sodass jede Bearbeitung eines vorherigen Befehls immer an den Verlauf angehängt wird und niemals das Original ersetzt.
Ich wollte es auch deaktivieren. Ich habe die Lösung über diese Antwort auf unix.stackexchange gefunden.
Zusammenfassend müssen Sie die revert-all-at-newline
aktivieren readline-Einstellung, die standardmäßig deaktiviert ist. Wenn die Einstellung aktiviert ist, wird Bash alle Änderungen, die Sie an Ihrem Verlauf vorgenommen haben, rückgängig machen, wenn Sie den nächsten Befehl ausführen.
Um diese Einstellung in Ihrer Shell zu aktivieren, sollten Sie Folgendes zu Ihrem ~/.inputrc
hinzufügen Datei und starten Sie dann Ihre Shell neu:
$include /etc/inputrc
set revert-all-at-newline on
Die erste Zeile wird benötigt, weil ich denke, dass, wenn Sie Ihren eigenen .inputrc
angeben Datei den Standardwert /etc/inputrc
Datei ist nicht enthalten, was wahrscheinlich nicht das ist, was Sie wollen.
Wenn Sie zu einem vorherigen Befehl zurückkehren und ihn bearbeiten, ihn dann aber NICHT ausführen (stattdessen Verlaufsbefehle verwenden, um zu einem anderen Befehl zu gehen und ihn auszuführen), bleiben die Änderungen dort in Ihrer Verlaufsliste.
Drücken Sie Strg + C , nach der Bearbeitung, wirkt diesem Verhalten entgegen. Es lässt den ursprünglichen Befehl intakt, d. h. es bricht das Erinnern an Änderungen am Original ab.
Hier ist meine eigene Antwort, bitte korrigieren oder weitere Details angeben, wenn Sie können.
Wenn die „vi“-Option in Bash gesetzt ist („set -o vi“ – „Eine Befehlszeilen-Bearbeitungsschnittstelle im vi-Stil verwenden“), gibt es zwei Modi zum Bearbeiten eines Befehls aus der Historie.
Der erste Modus (nennen wir ihn "einfach") ist, wenn Sie sofort mit der Bearbeitung beginnen, indem Sie die Rücktaste, die Entf-Taste und die Zeichentasten verwenden.
Der andere Modus ist der "vi-Modus", der aufgerufen wird, wenn Sie Esc drücken.
Wenn Sie Ihren Verlauf intakt halten möchten, verwenden Sie NICHT beide Modi in derselben Bearbeitung. Ich weiß nicht, wie Bash genau funktioniert, aber Sie können es sich so vorstellen:
- Das Aufrufen des "vi-Modus" wendet alle im "Basismodus" vorgenommenen Änderungen auf den ursprünglichen Befehl an und erstellt eine Kopie des Befehls, die Sie mit Befehlen im vi-Stil weiter bearbeiten können.
- Die Änderungen werden angewendet, wenn Sie Enter (Ausführen), Up, Down oder j,k (zu einem anderen Befehl im Verlauf wechseln) drücken.
- Die Änderungen werden nicht angewendet, wenn Sie Strg-C drücken.
- Die alleinige Verwendung entweder der einfachen oder der Bearbeitung im vi-Stil wirkt sich nicht auf den ursprünglichen Befehl im Verlauf aus.