GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwalten Sie Ihren Linux-Befehlsverlauf

Sie wissen wahrscheinlich, wie Sie mit den Aufwärts- und Abwärtspfeiltasten durch Ihren Bash-Verlauf blättern können, aber wussten Sie, dass der Bash-Verlauf viel mehr umfasst als nur das Wiederholen von Befehlen? Die Geschichte hat noch viel mehr zu bieten. Oder sollte es viel mehr um die Geschichte gehen ? In beiden Fällen ist der Verlaufsbefehl einer dieser obskuren Befehle, der leistungsfähig und praktisch ist, zumindest auf einer grundlegenden Ebene zu kennen. Dieser Artikel wird das Mysterium aus der Geschichte von Bash lüften, um es zu einem freundlicheren Sysadmin-Tool zu machen.

Der Hintergrund

In Bash wird Ihr Befehlsverlauf in einer Datei gespeichert (.bash_history ) in Ihrem Home-Verzeichnis. Der führende (.) macht die Datei aus der normalen Ansicht ausgeblendet. Um es zu sehen, geben Sie ls -a ein Befehl.

$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc

Sie können mit der .bash_history-Datei wie mit jeder anderen reinen ASCII-Textdatei arbeiten.

Die drei verwandten Umgebungsvariablen, die Sie beachten müssen, sind HISTFILE, HISTFILESIZE und HISTSIZE.

  • HISTFILE – /home//.bash_history
  • HISTFILESIZE – 1000
  • HISTGRÖSSE – 1000

Die Variable HISTFILE enthält den Namen und den Speicherort Ihrer Bash-Verlaufsdatei. HISTFILESIZE gibt an, wie viele Befehle in .bash_history gespeichert werden können Datei. HISTSIZE ist die Anzahl der zwischengespeicherten Befehle. Sobald Sie 1000 Befehle erreicht haben, werden die ältesten Befehle verworfen, während neue gespeichert werden.

$ echo $HISTSIZE
1000
$ echo $HISTFILESIZE
1000
$ echo $HISTFILE
/home/khess/.bash_history

Jedem Nutzer, einschließlich Root, sind diese Variablen und Größen standardmäßig zugewiesen. Wenn Sie diese Variablen ändern möchten, bearbeiten Sie die .bashrc-Datei in Ihrem Home-Verzeichnis. Wenn Sie beispielsweise die Größenvariablen auf 500 Befehle ändern möchten, bearbeiten Sie die Datei .bashrc Datei und verwenden Sie die folgenden Einträge:

export HISTSIZE=500
export HISTFILESIZE=500

Um die neuen Werte zu verwenden, ohne sich ab- und wieder anzumelden, können Sie die .bashrc ausführen Datei.

$ . ~/.bashrc

Ihre Werte sind jetzt für Ihre aktuelle Shell und alle Subshells aktiv.

$ echo $HISTSIZE
500
$ echo $HISTFILESIZE
500

Wenn Sie nicht möchten, dass Ihr Verlauf doppelte Befehle enthält, können Sie Ihren Verlauf anweisen, doppelte Einträge zu ignorieren, indem Sie Folgendes zu Ihrer .bashrc-Datei hinzufügen:

export HISTCONTROL=ignoredups

Das Problem

Das Problem mit dem Bash-Verlauf ist, dass er nicht in .bash_history geschrieben wird Datei, bis Sie sich abmelden. Dies macht es unmöglich, den Verlaufsbefehl für das Skripting zu verwenden. Angenommen, Sie unterrichten einen Linux-Kurs und möchten überprüfen, ob die Schüler einen bestimmten Befehl ausgeführt haben, um ihre Dateien auf ein bereitgestelltes externes Laufwerk zu kopieren. Wenn der Schüler im System angemeldet bleibt, können Sie nicht feststellen, ob die Kopie durchgeführt wurde, da Ihr Skript seine Verlaufsdatei (/home/student/.bash_history) verwendet, um zu prüfen, ob der Befehl ausgeführt wurde.

Die Lösung

Um diese Funktion zu umgehen, verwenden Sie write Option für den history Befehl. Als Teil der Unterrichtsanweisung würden Sie die Schüler diesen Befehl ausführen lassen, um ihren Verlauf zu speichern, selbst wenn sie sich nicht abmelden.

$ history -w

Dies schreibt den gesamten Befehlsverlauf der aktuellen Sitzung in die HISTFILE. Und jetzt kann Ihr Prüfskript leicht feststellen, ob der Befehl ausgeführt wurde. Sie müssen auch darauf vertrauen, dass der Schüler den Verlaufsbefehl ausführt.

[Sehen Sie sich die Geschichtslektion von Seth Kenlon an: Machen Sie die Bash-Geschichte mit diesen Tipps nützlicher]

Ein weiteres Problem

Da HISTSIZE und HISTFILESIZE relativ groß sind (1000 Befehle), ist es möglich, dass der Schüler den Befehl zuvor ausgeführt hat. Sie können den Eintrag export HISTCONTROL=ignoredups in ihre .bashrc-Datei einfügen, aber das hilft nicht, wenn der Schüler vor zwei Tagen einen ähnlichen Befehl ausgeführt hat, weil die Datei nur einen einzigen Befehl anzeigt.

Die Lösung für dieses Problem

Um dieses Problem zu umgehen, sollten Sie den Verlauf des Schülers beim Anmelden löschen. Bearbeiten Sie die .bashrc-Datei erneut und fügen Sie den folgenden Befehl hinzu.

history -c

Dieser Befehl löscht ihren Verlauf bei jeder Anmeldung und beseitigt das Problem, einen zuvor ausgeführten Befehl abzurufen. Sie müssen sich keine Gedanken darüber machen, einen Befehl aus früheren Sitzungen zu übernehmen, da das System inaktive Benutzer nach einer bestimmten Zeit abmeldet, wenn Sie die Leerlaufzeitbegrenzung in /etc/profile festlegen . Bearbeiten Sie /etc/profile Datei und fügen Sie den folgenden Eintrag hinzu.

TMOUT=300

Die TMOUT-Variable verwendet eine Anzahl von Sekunden Leerlaufzeit. In diesem Fall sind 300 Sekunden fünf Minuten. Sie können diesen Wert auf eine beliebige Anzahl von Sekunden festlegen. Dieser Wert wird bei der nächsten Anmeldung für alle wirksam Benutzer. Um individuelle Timeout-Werte festzulegen, verwenden Sie .bashrc Beachten Sie jedoch, dass Benutzer diese Datei nach Belieben ändern können.

[ Jetzt herunterladen:Eine Anleitung für Systemadministratoren zum Bash-Skripting. ] 

Abschluss

Der Bash-Verlauf ist ein praktisches Werkzeug, aber es kann frustrierend sein, wenn Sie mit seinen Optionen und Macken nicht vertraut sind. Es gibt viele weitere Optionen im Verlauf. Weitere Informationen finden Sie in den Manpages. Und denken Sie daran, dass jeder eingegebene Befehl Geschichte ist.


Linux
  1. So verwenden Sie den Verlaufsbefehl unter Linux

  2. So löschen Sie den BASH-Befehlszeilenverlauf in Linux

  3. Wie überwacht man seinen Linux-Server?

  4. So löschen Sie den Bash-Verlauf unter Linux

  5. So löschen Sie einen bestimmten Befehl aus dem Bash-Verlauf in Linux

So aktivieren Sie den Zeitstempel im Bash-Verlauf unter Linux

So entfernen Sie einen Befehl aus dem Verlauf in Linux

So überprüfen Sie den Verlauf der Linux-Befehle nach Datum

3 nützliche Tipps zur Verwendung des Verlaufsbefehls unter Linux

So verwenden Sie den Bildschirmbefehl unter Linux, um Terminals zu verwalten

So überprüfen Sie die Betriebszeit Ihres Linux-Servers