it-swarm.com.de

Terminal "Inkognito-Modus"?

Ich benutze Terminal häufig, und manchmal führe ich Befehle aus, die nicht von anderen angezeigt werden sollen, aber mehr Befehle, die versehentlich ausgeführt und ausgeführt werden, verursachen große Probleme.

Ich frage mich also, ob es einen „Inkognito-Modus“ für das Terminal gibt oder geben kann, der es mir ermöglicht, nach Ausführung eines bestimmten Befehls die Aufzeichnung meines Verlaufs zu beenden und erst dann mit der Aufzeichnung zu beginnen, nachdem ich entweder a ausgeführt habe Starten Sie die Aufzeichnung des Verlaufs erneut Befehl und beenden Sie den Inkognito-Modus, oder starte ich das Terminal einfach neu?

Weil ich mich später wieder dabei befinde, Dinge aus meinem .bash_history zu entfernen, wenn es viel einfacher wäre, wenn ich die Aufnahme dort überhaupt hätte stoppen oder zumindest versuchen können, sie irgendwo dort aufzunehmen, wo sie ist würde es einfach nicht dürfen und würde es am Ende einfach nicht aufnehmen.

230
user364819

Führen Sie einen Befehl aus, ohne ihn in den Verlauf zu schreiben:

Setzen Sie einfach ein Leerzeichen vor den Befehl. Bash ignoriert Befehle mit vorangestelltem Leerzeichen:

Beispiel: Spaceecho "Some secret text"

Hinweis: Dies funktioniert nur, wenn die Variable HISTCONTROL auf ignorespace oder ignoreboth gesetzt ist.


Verlauf vorübergehend deaktivieren:

  • Lauf Spaceset +o history oder Spaceshopt -uo history, um den Verlauf zu deaktivieren.
  • Führen Sie set -o history oder shopt -so history aus, um es erneut zu aktivieren.

Verlauf für die aktuelle Sitzung deaktivieren (speichert keine Befehle aus der Sitzung):

unset HISTFILE

Hinweis: Sie können sehen, wie die Befehle gedrückt werden Up bis Sie das Terminal schließen.


Entfernen Sie einen Befehl aus dem Verlauf:

Lauf Spacehistory | grep "part of your secret command"

Es wird eine Liste der zuvor ausgeführten Befehle in diesem Format angezeigt:

[email protected]átil:~$  history | grep pkill
  302  pkill $$
  467  pkill gone-cal
  468  pkill actionaz
  500  pkill chrome
  550  pkill super

Wählen Sie die Eintragsnummer links vom Befehl aus. Sie können es mit kopieren Ctrl+Shift+C

Lauf Spacehistory -d <number> wobei <number> die Eintragsnummer ist, um den Eintrag zu entfernen.
Diese Nummer können Sie mit einfügen Ctrl+Shift+V


Andere interessante Antworten:

264
Helio

Sie können den Verlauf einer bestimmten Terminalsitzung einfach löschen, indem Sie nach der Arbeit den Befehl history -cw hinzufügen. Schließen Sie das Terminal nicht, bevor Sie den Befehl erteilt haben.

40
Moithil Biswas

shopt -uo history sollte es am besten tun.

Das Nuking der Variablen HISTFILE (et al) wird Sie nicht aufhalten Up Wenn der Verlauf protokolliert wird, wird er einfach nicht auf die Festplatte verschoben. Dies mag für Sie positiv sein oder auch nicht, aber wenn Sie es erwähnen, möchten Sie wahrscheinlich etwas Besseres. Das Ändern der Verlaufseinstellung shopt verhindert, dass der gesamte Verlaufsmechanismus ausgelöst wird.

Sie können die Anmeldung mit _shopt -so history_ wieder einschalten (_-s_ und _-u_ sind gesetzt bzw. nicht gesetzt).

Beachten Sie, dass der Befehl wahrscheinlich selbst protokolliert wird. Stellen Sie ihm also ein Leerzeichen voran, um zu verhindern, dass er dem Verlauf hinzugefügt wird, bevor Sie die Variable löschen.

28
Oli

Eine andere Möglichkeit, die aktuelle Shell ohne Protokollierung in der Verlaufsdatei zu beenden, ist:

kill -9 $$

Dies veranlasst bash (und wahrscheinlich auch andere Shells), das SIGKILL-Signal an sich selbst zu senden, es an Ort und Stelle zu töten und zu verhindern, dass etwas auf die Festplatte geschrieben wird.

17
dolt

Um den Befehlsverlauf für die aktuelle Sitzung vorübergehend zu deaktivieren, können Sie die Umgebungsvariable HISTFILE vorübergehend deaktivieren.

unset HISTFILE

während die Sitzung aktiv ist, können Sie wie gewohnt auf den Verlauf zugreifen, dieser wird jedoch nicht auf der Festplatte gespeichert.

In derselben Sitzung rückgängig machen (alle Änderungen werden aufgezeichnet)

HISTFILE=$HOME/.bash_history
13
Bruni

Sie können Verlaufszeilen in der aktuellen Shell-Sitzung ändern. Wenn Sie durch die Geschichte zurückgehen (z. B. mit Up oder Ctrl+P) und ändern Sie eine Zeile , ohne sie auszuführen , nur die geänderte Version der Zeile wird gespeichert. Sie können es beliebig ändern. Eine gute Wahl wäre die Verwendung von Ctrl+U um die Zeile vollständig auszublenden oder zu verwenden Esc# um ein # Kommentarzeichen an den Anfang zu setzen.

Um eine Zeile zu verlassen, ohne sie auszuführen, denken Sie daran, nicht zu schlagen Return (Enter). Ich kehre über zur neuesten Zeile in der Geschichte zurück Esc>.

(Anstatt von Esc gefolgt von >In den meisten Terminals können Sie halten Alt und drücke >; das gleiche gilt für die Esc# vorschlag oben.)

Hinweis: Auf diese Weise können Sie Einträge aus früheren Sitzungen nicht dauerhaft ändern. Diese Änderungen werden am Ende der Sitzung nicht auf HISTFILE angewendet.

10
echristopherson

Sie können .bash_history auch schreibgeschützt machen. Ich würde die Datei zuerst leeren und dann tun:

 chattr +i .bash_history
6
Webtm

Sie können die vertraulichen Befehle in einer Bildschirmsitzung ausführen und die Sitzung anschließend zerstören.

Alternativ können Sie diese Bildschirmsitzung lebendig, aber getrennt halten und nur dann darauf zugreifen, wenn Sie tatsächlich in der Lage sein möchten, den Pfeil nach oben zu den ansonsten gefährlichen Befehlen zu bewegen.

5
keag

Sie können auch Terminal-Multiplexer wie tmux, screen verwenden. Daher wird unter tmux oder screen die Historie nicht gespeichert.

1
vusan

Persönlich verwende ich mksh, und diese Shell hat standardmäßig keine Verlaufsdatei. Das bedeutet, dass Sie eine alternative Shell wie mksh oder dash starten können (was übrigens standardmäßig der Fall ist), um den Befehl auszuführen, den Benutzer nicht sehen sollen, und das Programm dann zu beenden. bash Der Verlauf zeichnet nur auf, dass Sie die alternative Shell gestartet haben, und das war's.

1