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 von meinem zu entfernen .bash_history
, wenn es viel einfacher wäre, wenn ich die Aufnahme dort überhaupt hätte stoppen oder zumindest versuchen können, sie irgendwo aufzunehmen, wo es einfach nicht wäre erlaubt, und würde am Ende nur nicht aufnehmen.
.bash_history
. (Ubuntu 15.04 ruiniert Terminal, zum Glück ist dies ein Live-USB.)Antworten:
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: Space
echo "Some secret text"
Hinweis: Dies funktioniert nur, wenn die
HISTCONTROL
Variable aufignorespace
oder gesetzt istignoreboth
.Verlauf vorübergehend deaktivieren:
set +o history
oder aus Spaceshopt -uo history
, um den Verlauf zu deaktivieren.set -o history
oder ausshopt -so history
, um es erneut zu aktivieren.Verlauf für die aktuelle Sitzung deaktivieren (speichert keine Befehle aus der Sitzung):
Hinweis: Sie können sehen, wie die Befehle gedrückt werden, Upbis Sie das Terminal schließen.
Entfernen Sie einen Befehl aus dem Verlauf:
Lauf Space
history | grep "part of your secret command"
Es wird eine Liste der zuvor ausgeführten Befehle in folgendem Format angezeigt:
Wählen Sie die Eintragsnummer links vom Befehl aus. Sie können es mit Ctrl+ Shift+ kopierenC
Führen Sie aus, Space
history -d <number>
wo<number>
sich die Eintragsnummer befindet, um den Eintrag zu entfernen.Sie können diese Nummer mit Ctrl+ Shift+ einfügenV
Andere interessante Antworten:
quelle
history -d
zum Entfernen einer Zeile verwenden, wird der Inhalt der Zeile entfernt, Sie können jedoch niemals die Tatsache entfernen, dass Sie ausgeführt wurdenhistory -d
(es sei denn, Sie verwenden sie zum ersten Malset +o history
vor dem Ausführenhistory -d
)unset HISTFILE
Ansatz funktioniert auch rückwirkend für alle Befehle, die noch nicht geschrieben wurden.bash_history
.Sie können den Verlauf einer bestimmten Terminalsitzung einfach löschen, indem Sie
history -cw
nach der Arbeit einen Befehl hinzufügen .Schließen Sie das Terminal nicht, bevor Sie diesen Befehl erteilt haben.
quelle
shopt -uo history
sollte es am besten tun.Wenn Sie die
HISTFILE
(et al) -Variablen deaktivieren, wird die Protokollierung Ihres UpVerlaufs nicht gestoppt , sondern nur 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 dershopt
Verlaufseinstellung verhindert, dass der gesamte Verlaufsmechanismus ausgelöst wird.Sie können die Anmeldung mit wieder einschalten
shopt -so history
(-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.
quelle
Eine andere Möglichkeit, die aktuelle Shell ohne Protokollierung in der Verlaufsdatei zu beenden, ist:
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.
quelle
Um den Befehlsverlauf für die aktuelle Sitzung vorübergehend zu deaktivieren, können Sie die Umgebungsvariable HISTFILE vorübergehend deaktivieren.
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)
quelle
HISTFILE
in der aktuellen Sitzung erneut festzulegen ? Wenn Sie die Änderung rückgängig machen (auch nachdem Sie die geheimen Befehle ausgeführt haben), werden diese beim Beenden im Verlauf gespeichert.Sie können Verlaufszeilen in der aktuellen Shell-Sitzung ändern. Wenn Sie durch den Verlauf zurückgehen (z. B. mit Upoder Ctrl+ P) und eine Zeile ändern, ohne sie auszuführen , wird nur die geänderte Version der Zeile gespeichert. Sie können es beliebig ändern. Eine gute Wahl wäre die Verwendung von Ctrl+, Uum die Zeile vollständig auszublenden, oder die Verwendung von Esc#, um ein
#
Kommentarzeichen am Anfang einzufügen.Denken Sie daran, nicht auf Return( Enter) zu drücken, um eine Zeile zu verlassen, ohne sie auszuführen . Ich kehre über zur neuesten Zeile in der Geschichte zurück Esc>.
(Anstatt Escgefolgt von >, können Sie in den meisten Terminals gedrückt halten Altund drücken >. Dasselbe gilt für den Esc#obigen Vorschlag.)
Hinweis: Einträge aus früheren Sitzungen können auf diese Weise nicht dauerhaft geändert werden. Diese Änderungen werden
HISTFILE
am Ende der Sitzung nicht übernommen.quelle
Sie können .bash_history auch schreibgeschützt machen. Ich würde die Datei zuerst leeren und dann tun:
quelle
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.
quelle
Ich persönlich verwende
mksh
und diese Shell hat standardmäßig keine Verlaufsdatei. Das bedeutet, dass Sie eine alternative Shell wiemksh
oderdash
(die übrigens standardmäßig verwendet wird) starten können, um den Befehl auszuführen, den Benutzer nicht sehen sollen, und das Programm dann zu beenden.bash
Der Verlauf zeichnet nur auf, dass Sie eine alternative Shell gestartet haben, und das wars.quelle
Sie können auch Terminal - Multiplexer wie verwenden
tmux
,screen
. Also untertmux
oderscreen
Geschichte würde nicht gespeichert werden.quelle