it-swarm.com.de

Wie lösche ich bash_history nur für den aktuellen Tag?

Ich arbeite an einem Client-Projekt, das auf Digital Ocean auf einem Ubuntu-Server gehostet wird. Ich arbeite mit ein paar anderen Entwicklern daran. Ich habe ein paar neue Befehle erstellt und es ist wirklich chaotisch. Wie kann ich den Befehlsverlauf bis zu einem bestimmten Punkt entfernen?

Zum Beispiel möchte ich alle Befehle, die ich heute eingegeben habe, entfernen und alle vorherigen Befehle davor belassen. Ist dies möglich?

Es ist für andere Entwickler einfacher, frühere Befehle zu finden, ohne alle meine Befehle durchzugehen. Ist es möglich, bash_history bis zu einem bestimmten Punkt zu löschen, zum Beispiel nur die heutige Geschichte? Wenn das so ist, wie?

Bitte beraten!

Vielen Dank!

1
Anthony Pinto

Zeilen im Bash-Verlauf werden als einfache Textzeilen ohne Metainformationen wie einen Aufrufzeitstempel gespeichert. Es ist daher nicht möglich, den gesamten Befehlsverlauf von einem Tag an automatisch zu löschen, da Sie einfach nicht mehr feststellen können, welcher Befehl wann ausgeführt wurde.


Wenn Sie einfach den gesamten Befehlsverlauf Ihrer aktuellen Bash-Sitzung entfernen möchten (dh alles, was sich noch im Speicher befindet und noch nicht auf die Festplatte geschrieben wurde), können Sie entweder den im Speicher befindlichen Verlaufspuffer löschen oder ihn durch den alten Verlauf ersetzen Dateiinhalt von der Festplatte.

  • Das Löschen des Verlaufspuffers führt zu einem leeren Verlauf im Speicher für Ihre aktuelle Sitzung, dh, wenn Sie drücken, werden keine Befehle angezeigt usw. Sobald Sie Ihre Bash-Sitzung verlassen, werden alle neuen Befehle, die nach dem Löschen eingegeben wurden, an die Verlaufsdatei angehängt. In Ihrer nächsten Sitzung wird der vollständige Verlauf wieder angezeigt, nur der Bereich zwischen dem Start Ihrer letzten Sitzung und der Befehl zum Löschen fehlt.

    history -c
    
  • Das Ersetzen des aktuellen speicherinternen Verlaufspuffers durch den Inhalt der Verlaufsdatei von der Festplatte hat dasselbe Endergebnis wie das Löschen des Verlaufspuffers, außer dass Sie in Ihrer aktuellen Sitzung Zugriff auf den alten Befehlsverlauf anstelle einer leeren Liste haben.

    history -r
    

Wenn dies für Sie nicht hilfreich ist, weil Sie Einträge aus früheren Sitzungen oder nur aus einer Teilsitzung aufräumen möchten, ist die chirurgische Methode genau das, was Sie benötigen:

Synchronisieren Sie Ihren aktuellen speicherinternen Verlaufspuffer mit der Verlaufsdatei auf der Festplatte, öffnen Sie diese Datei in einem Texteditor und entfernen Sie alle fehlerhaften Einträge manuell.

Führen Sie Folgendes aus, um den Verlauf Ihrer aktuellen Sitzung manuell an die Verlaufsdatei anzuhängen (da dies nur automatisch geschieht, wenn Sie Ihre Sitzung beenden):

history -a

Öffnen Sie anschließend die Bash-Verlaufsdatei ~/.bash_history in Ihrem bevorzugten Texteditor (da Sie sich auf einem Server befinden, würde ich beispielsweise nano vorschlagen) und bearbeiten Sie die Befehlsliste nach Ihren Wünschen. Die Datei listet alle aufgezeichneten Befehle in chronologischer Reihenfolge auf, die neuesten Befehle zuletzt. Entfernen Sie einfach die störenden Linien und speichern Sie Ihre Arbeit.

Anschließend sollten Sie den geänderten Verlauf mit dem folgenden Befehl erneut in den speicherinternen Verlaufspuffer laden, um zu verhindern, dass alte Einträge aus dem Speicher an die aufgeräumte Verlaufsdatei angehängt werden, wenn Sie Ihre Sitzung beenden:

history -r
2
Byte Commander

Mit können Sie Zeilen aus dem Verlauf entfernen

 history -d NNN

dabei ist nnn die dreistellige Zeilennummer. Schauen Sie sich auch man history an. Sie können den Verlauf der aktuellen Shell-Sitzung löschen mit:

 history -c 
0
0x0C4