Wenn Sie ein Linux-Befehlszeilenbenutzer sind, stimmen Sie zu, dass es manchmal Situationen gibt, in denen bestimmte Befehle, die Sie ausführen, nicht in der Befehlszeilenhistorie aufgezeichnet werden sollen. Es könnte viele Gründe dafür geben. Beispielsweise befinden Sie sich an einer bestimmten Position in Ihrem Unternehmen und Sie verfügen über einige Berechtigungen, die andere nicht missbrauchen sollen. Oder es gibt einige kritische Befehle, die Sie beim Durchsuchen der Verlaufsliste nicht versehentlich ausführen möchten.

Aber gibt es eine Möglichkeit zu kontrollieren, was in die Geschichtsliste eingeht und was nicht? Oder anders ausgedrückt, können wir einen webbrowserähnlichen Inkognito-Modus in der Linux-Befehlszeile einschalten? Die Antwort ist ja, und es gibt viele Möglichkeiten, dies zu erreichen, je nachdem, was genau Sie wollen. In diesem Artikel werden wir einige der beliebtesten verfügbaren Lösungen diskutieren.

Hinweis : Alle in diesem Artikel vorgestellten Befehle wurden auf Ubuntu getestet.

Verschiedene Möglichkeiten verfügbar

Die ersten zwei Möglichkeiten, die wir hier beschreiben werden, wurden bereits in einem unserer vorherigen Artikel behandelt. Wenn Sie sich dessen bereits bewusst sind, können Sie diese überspringen. Wenn Ihnen dies jedoch nicht bewusst ist, sollten Sie sie sorgfältig durchgehen.

1. Fügen Sie vor dem Befehl Leerzeichen ein

Ja, du hast es richtig gelesen. Fügen Sie am Anfang eines Befehls ein Leerzeichen ein, das von der Shell ignoriert wird. Dies bedeutet, dass der Befehl nicht im Verlauf aufgezeichnet wird. Es gibt jedoch eine Abhängigkeit - die genannte Lösung funktioniert nur, wenn die Umgebungsvariable HISTCONTROL auf "ignorespace" oder "ignoreboth" gesetzt ist, was in den meisten Fällen standardmäßig der Fall ist.

Also, ein Befehl wie der folgende:

 [space] echo "das ist ein streng geheim" 

Wird nicht im Verlauf angezeigt, wenn Sie diesen Befehl bereits ausgeführt haben:

 export HISTCONTROL = ignorespace 

Der folgende Screenshot ist ein Beispiel für dieses Verhalten.

Der vierte "echo" -Befehl wurde nicht in der Geschichte aufgezeichnet, da er am Anfang mit einem Leerzeichen ausgeführt wurde.

2. Deaktivieren Sie den gesamten Verlauf für die aktuelle Sitzung

Wenn Sie den gesamten Verlauf für eine Sitzung deaktivieren möchten, können Sie dies einfach tun, indem Sie die Umgebungsvariable HISTSIZE deaktivieren, bevor Sie mit der Befehlszeilenarbeit beginnen. Um die Variable zu deaktivieren, führen Sie den folgenden Befehl aus:

 exportiere HISTFILE = 0 

HISTFILE ist die Anzahl der Zeilen (oder Befehle), die in der Verlaufsliste für eine laufende Bash-Sitzung gespeichert werden können. Standardmäßig hat diese Variable einen festgelegten Wert - in meinem Fall beispielsweise 1000.

Der oben erwähnte Befehl setzt also den Wert der Umgebungsvariablen auf Null, und folglich wird nichts in der Verlaufsliste gespeichert, bis Sie das Terminal schließen. Beachten Sie, dass Sie die zuvor ausgeführten Befehle auch nicht anzeigen können, indem Sie die Nach-oben-Taste drücken oder den Befehl Verlauf ausführen.

3. Löschen Sie den gesamten Verlauf, nachdem Sie fertig sind

Dies kann als eine Alternative zu der im vorherigen Abschnitt erwähnten Lösung angesehen werden. Der einzige Unterschied ist, dass Sie in diesem Fall einen Befehl ausführen, nachdem Sie mit Ihrer Arbeit fertig sind. Das folgende ist der Befehl in Frage:

 Geschichte-cw 

Wie bereits erwähnt, wird dies die gleiche Wirkung wie die oben erwähnte HISTFILE-Lösung haben.

4. Deaktivieren Sie den Verlauf nur für Ihre Arbeit

Während die oben beschriebenen Lösungen (2 und 3) den Trick machen, löschen sie die gesamte Geschichte, was in vielen Situationen unerwünscht sein könnte. Es kann Fälle geben, in denen Sie die Verlaufsliste bis zu dem Punkt beibehalten möchten, an dem Sie mit der Befehlszeile begonnen haben. Für Situationen wie diese müssen Sie den folgenden Befehl ausführen, bevor Sie mit Ihrer Arbeit beginnen:

 [Leerzeichen] set + o Geschichte 

Hinweis : [Leerzeichen] steht für ein Leerzeichen.

Der obige Befehl deaktiviert den Verlauf vorübergehend, was bedeutet, dass alles, was Sie nach dem Ausführen dieses Befehls tun, nicht im Verlauf aufgezeichnet wird, obwohl alle Dinge, die vor dem obigen Befehl ausgeführt wurden, dort sind, wie sie in der Verlaufsliste sind.

Führen Sie den folgenden Befehl aus, um den Verlauf erneut zu aktivieren:

 [Space] legt -o Geschichte fest 

Dies bringt die Dinge wieder zum Normalzustand zurück, was bedeutet, dass jede Befehlszeilenarbeit, die nach dem obigen Befehl ausgeführt wird, in der Historie erscheint.

5. Löschen Sie bestimmte Befehle aus dem Verlauf

Angenommen, die Verlaufsliste enthält bereits einige Befehle, die nicht aufgezeichnet werden sollen. Was kann in diesem Fall getan werden? Es ist einfach. Sie können fortfahren und sie entfernen. Das Folgende ist, wie dies zu erreichen ist:

 [Raum] Geschichte | grep "Teil des Befehls, den du entfernen möchtest" 

Der obige Befehl gibt eine Liste übereinstimmender Befehle (die in der Verlaufsliste vorhanden sind) mit einer Nummer [num] aus, die jedem von ihnen vorangeht.

Sobald Sie den Befehl identifiziert haben, den Sie entfernen möchten, führen Sie einfach den folgenden Befehl aus, um diesen bestimmten Eintrag aus der Verlaufsliste zu entfernen:

 Geschichte -d [num] 

Der folgende Screenshot ist ein Beispiel dafür.

Der zweite Befehl 'echo' wurde erfolgreich entfernt.

Alternativ können Sie auch einfach die Pfeiltaste nach oben drücken, um durch die Verlaufsliste zu gehen. Sobald der gewünschte Befehl auf dem Terminal angezeigt wird, drücken Sie einfach "Strg + U", um die Zeile vollständig zu löschen Liste.

Fazit

Es gibt mehrere Möglichkeiten, wie Sie die Linux-Befehlszeilenhistorie an Ihre Anforderungen anpassen können. Beachten Sie jedoch, dass es in der Regel keine gute Übung ist, einen Befehl aus dem Verlauf zu verstecken oder zu entfernen, obwohl dies auch per se nicht falsch ist, aber Sie sollten sich dessen bewusst sein, was Sie tun und welche Auswirkungen es haben könnte.