Wenn Sie ein Linux-Befehlszeilenbenutzer sind, möchten Sie möglicherweise manchmal nicht, dass bestimmte Befehle in Ihrem Befehlszeilenverlauf aufgezeichnet werden. Die Gründe dafür können vielfältig sein. Beispielsweise haben Sie eine bestimmte Position in einem Unternehmen inne und verfügen über bestimmte Privilegien, die Sie nicht missbrauchen möchten. Oder es gibt einige besonders wichtige Befehle, die Sie beim Durchsuchen der Verlaufsliste nicht versehentlich ausführen möchten.
Gibt es jedoch eine Möglichkeit zu steuern, welche Befehle in die Verlaufsliste aufgenommen werden und welche nicht? Oder mit anderen Worten: Können wir den Inkognito-Modus wie einen Browser in einem Linux-Terminal aktivieren? Die Antwort lautet „Ja“, und abhängig von den konkreten Zielen, die Sie sich wünschen, gibt es viele Möglichkeiten, diese zu erreichen. In diesem Artikel besprechen wir einige bewährte Methoden.
Hinweis: Alle in diesem Artikel vorkommenden Befehle wurden unter Ubuntu getestet.
Die ersten beiden Methoden wurden in einem früheren Artikel beschrieben. Wenn Sie das bereits wissen, können Sie diesen Teil überspringen. Wenn Sie es jedoch nicht verstehen, wird empfohlen, es sorgfältig zu lesen.
Ja, das hast du richtig gelesen. Durch Einfügen eines Leerzeichens vor dem Befehl wird der Befehl von der Shell ignoriert, was bedeutet, dass er nicht im Verlauf erscheint. Diese Methode hat jedoch eine Voraussetzung. Sie funktioniert nur, wenn Ihre Umgebungsvariable HISTCONTROL auf „ignorespace“ oder „ignoreboth“ gesetzt ist. In den meisten Fällen ist dies der Standardwert.
Also, wie der folgende Befehl (hier bedeutet [Leerzeichen] die Eingabe eines Leerzeichens):
[space]echo "this is a top secret"
Wenn Sie zuvor den folgenden Befehl zum Festlegen von Umgebungsvariablen ausgeführt haben, wird der obige Befehl nicht im Verlauf angezeigt.
export HISTCONTROL = ignorespace
Der Screenshot unten ist ein Beispiel für diesen Ansatz.
Der vierte „Echo“-Befehl wird nicht im Verlauf aufgezeichnet, da davor ein Leerzeichen steht.
Wenn Sie den gesamten Verlauf für eine Sitzung deaktivieren möchten, können Sie einfach den Wert der Umgebungsvariablen HISTSIZE löschen, bevor Sie mit der Befehlszeilenarbeit beginnen. Führen Sie den folgenden Befehl aus, um den Wert zu löschen:
export HISTSIZE=0
HISTSIZE gibt die Anzahl der Befehle (Anzahl der Zeilen) an, die in der Verlaufsliste einer Bash-Sitzung gespeichert werden können. Standardmäßig ist er auf einen Wert ungleich Null eingestellt, auf meinem Computer ist er beispielsweise 1000.
Der oben genannte Befehl setzt seinen Wert also auf 0, mit dem Ergebnis, dass nichts im Verlauf gespeichert wird, bis Sie das Terminal schließen. Denken Sie daran, dass Sie zuvor ausgeführte Befehle auch nicht sehen können, wenn Sie die Aufwärtspfeiltaste drücken oder den Befehl „history“ ausführen.
Dies kann als eine weitere Implementierung der im vorherigen Teil vorgeschlagenen Lösung angesehen werden. Der einzige Unterschied besteht darin, dass Sie diesen Befehl ausführen, nachdem Sie Ihre gesamte Arbeit abgeschlossen haben. Das Folgende ist der gerade erwähnte Befehl:
history -cw
Wie gerade erwähnt, hat dies den gleichen Effekt wie die HISTSIZE-Methode.
Während die zuvor beschriebenen Methoden (2 und 3) ihren Zweck erfüllen, können sie den gesamten Verlauf löschen, und in vielen Fällen entsprechen einige möglicherweise nicht unseren Erwartungen. Manchmal möchten Sie möglicherweise den Verlauf speichern, bis Sie mit der Arbeit an der Befehlszeile begonnen haben. Für solche Anforderungen beginnen Sie mit der Ausführung der folgenden Befehle, bevor Sie mit der Arbeit beginnen:
[space]set +o history
Hinweis: [Leerzeichen] bedeutet Leerzeichen. Und aufgrund der Leerzeichen wird auch der Befehl selbst nicht protokolliert.
Der obige Befehl deaktiviert vorübergehend die Verlaufsfunktion, was bedeutet, dass alle Vorgänge, die Sie nach diesem Befehl ausführen, nicht im Verlauf aufgezeichnet werden, aber alles vor diesem Befehl wird unverändert in der Verlaufsliste aufgezeichnet.
Um die Verlaufsfunktion wieder zu aktivieren, führen Sie den folgenden Befehl aus:
[Space]set -o history
Die Umgebung wird in ihren ursprünglichen Zustand zurückversetzt, d. h. Sie haben Ihre Arbeit abgeschlossen und die Befehle nach der Ausführung des obigen Befehls werden im Verlauf angezeigt.
现在假设历史记录中已经包含了一些你不希望记录的命令。这种情况下我们怎么办?很简单。直接动手删除它们。通过下面的命令来删除:
history | grep "part of command you want to remove"
上面的命令会输出历史记录中匹配的命令,每一条前面会有个数字。
一旦你找到你想删除的命令,执行下面的命令,从历史记录中删除那个指定的项:
history -d [num]
下面是这个例子的截图。
第二个 ‘echo’命令被成功的删除了。
(如果你不希望上述命令本身也被记录进历史中,你可以在上述命令前加个空格)
同样的,你可以使用向上的箭头一直往回翻看历史记录。当你发现你感兴趣的命令出现在终端上时,按下 “Ctrl + U”清除整行,也会从历史记录中删除它。
有多种不同的方法可以操作 Linux 命令行历史来满足你的需求。然而请记住,从历史中隐藏或者删除命令通常不是一个好习惯,尽管本质上这并没有错。但是你必须知道你在做什么,以及可能产生的后果。
Das obige ist der detaillierte Inhalt vonSo verbergen Sie Ihren Linux-Befehlszeilenverlauf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!