2016-08-15 6 views
2

Ich wechselte vor kurzem von Tcsh zu Bash, und eine Sache, die mich immer wieder stolpern ist, wie Bash Geschichte behandelt. Ich führe regelmäßig einen vorherigen Verlaufsbefehl auf und beginne, ihn zu bearbeiten, aber merke, dass ich zuerst einen anderen Befehl ausführen muss. In bash wird der ursprüngliche Befehl bearbeitet und ich kann nicht sehen, was ich ursprünglich eingegeben habe. In tcsh befindet sich der bearbeitete Befehl am unteren Ende des Stapels, wenn ich die Auf- und Abwärtspfeile verwende. Er ist bereit, weiter zu bearbeiten oder zu starten, wenn ich dazu bereit bin.Verhindern versehentliche Verlaufsbearbeitung in Bash

Ich fand this question, die mehrere Antworten hilfreich haben zu verstehen, wie Bash in Bezug auf die Wiederholung und Bearbeitung von Geschichte funktioniert, aber ich weiß immer noch nicht eine Möglichkeit, dieses Verhalten zu ändern (wenn so etwas existiert). Ist es möglich zu verhindern, dass bash die bereits ausgeführten Befehle bearbeitet?

Zum Beispiel, wenn ich

abcd 
    efgh 
    ijkl 

laufen und dann mit Pfeil nach oben und Backspace efgh efg, traf dann nach unten und einen anderen Befehl „mnop“ geben, möchte ich meine Geschichte wie folgt aussehen:

abcd 
    efgh 
    ijkl 
    mnop 

Derzeit sieht es so aus:

abcd 
* efg 
    ijkl 
    mnop 

Das ist wie eine triviale Frage erscheinen, aber wenn Runnin g lange Befehle mit mehreren Rohren, die Versuch und Irrtum erfordern, ist es ein erheblicher Verlust an Arbeit.

+2

Drücken Sie nicht nach unten, drücken Sie Strg + c. – Cyrus

+0

Danke - das ist gut zu wissen. Manchmal vergesse ich das, aber zwischen dieser und der Antwort von Chepner sollte ich besser in Form sein. – cookem

Antwort

1

Jede Zeile enthält eine eigene Rückgängig-Liste, auf die Sie mit C-x C-u oder C-_ zugreifen können, um die letzte Änderung rückgängig zu machen, oder M-r, um alle Änderungen seit der letzten Speicherung rückgängig zu machen.

+0

Das ist perfekt. Danke für das Teilen. Wie würde ich mehr Abkürzungen finden? Nichts davon kam auf, als ich nach "bash history edit" oder "bash history" suchte, und es scheint, dass ein Rückgängigmachen des Verlaufs ohne diese Tastaturkürzel unmöglich ist. – cookem

+0

Lesen Sie über den integrierten Befehl 'bind' und lesen Sie den Abschnitt 'Readline' der Manpage. Viele Funktionen haben Standardbindungen, aber Sie können 'bind' verwenden, um sie zu ändern oder Bindungen für Befehle hinzuzufügen, die nicht standardmäßig gebunden sind. – chepner

+0

@cookem: Bitte werfen Sie einen Blick auf: [Was soll ich tun, wenn jemand meine Frage beantwortet?] (Http://stackoverflow.com/help/someone-answers) – Cyrus

Verwandte Themen