Die Bash (Bourne Again Shell) ist eine beliebte Shell, die auf den meisten UNIX-ähnlichen Systemen verwendet wird. Bash wird von Brian Fox als GNU-Projekt geschrieben. Es enthält Funktionen der Bourne-Shell, der C-Shell und der Korn-Shell. Benutzer, die ihre Zeit auf der Befehlszeile mit der Bash-Shell verbringen, möchten häufig die Befehle wiederholen, die in der Vergangenheit ausgeführt wurden. Die Bash-Shell-Verlaufsfunktion hilft dabei, sich an die letzten Befehle zu erinnern und sie später wiederzuverwenden; wodurch Zeit zum erneuten Eintippen gespart wird. Lass uns anfangen!
Auflistungsverlauf
Wenn Geschichte Wenn der Befehl ohne übergebene Argumente verwendet wird, werden die zuletzt verwendeten Befehle mit den entsprechenden Zeilennummern angezeigt.
$ history
Die Ausgabe sieht ungefähr so aus:
Auflistung der letzten „n“ ausgeführten Befehle
Durch die Verwendung von „history
$ history 7
Führen Sie einen bestimmten Befehl aus dem Verlauf aus
Es ist möglich, einen bestimmten Befehl aus der Historie auszuführen. Die Verwendung der Ausrufezeichen, gefolgt von der Nummer des Befehls, wie im Verlauf aufgeführt, wird die Magie bewirken. Führen Sie zum Beispiel mit dem folgenden Befehl den Befehl mit der Nummer 7 (du –sh) wie folgt erneut aus:
$ !7
Vorherigen Befehl erneut ausführen
In vielen Situationen müssen wir einen Befehl immer wieder ausführen. Die folgenden Befehle erledigen diese Aufgabe, indem sie den zuvor verwendeten Befehl ausführen.
$ !! Or $ !-1
Durchsuchen der Befehle
Die von der Historie generierte Ausgabe kann auf verschiedene Weise verwendet werden. Beispielsweise kann die Verlaufsausgabe an – more, tail, grep übergeben werden, um die gewünschte Ausgabe abzurufen.
Durchsuchen Sie den Befehlsverlauf nach „kostenlos“:$ history | grep free Um nur die letzten 4 Befehle anzuzeigen:
$ history | tail -4
Der Befehl more ermöglicht die seitenweise Anzeige der Ausgabe im Terminal:
$ history | more
Führen Sie einen vorherigen Befehl aus, der mit einem bestimmten Wort beginnt
Die Verwendung von Ausrufezeichen, gefolgt von dem spezifischen Wort des Befehls, wird die Magie bewirken!. Angenommen, der Benutzer hat – „free –h“ ausgeführt. Wenn Sie „!free“ eingeben, wird der Befehl „free –h“ erneut ausgeführt.
Verlauf löschen
Es ist möglich, den Verlauf mit dem folgenden Befehl zu löschen: $ history -c Dies löscht alle Befehle im Speicher der Bash-Shell für die aktuelle Benutzersitzung.
Nützliche Aliase
Ein Alias ist ein kurzer Name für einen langen und komplexen Befehl. Einfacher Einzelzeichen-Alias für den Verlaufsbefehl.
$ alias 'h=history'
Der folgende Alias „ht“ zeigt die zehn letzten Befehle an –
$ alias 'ht=history | tail'
Der folgende Alias „hg“ ermöglicht die Anzeige aller Befehle, die mit der angegebenen Zeichenfolge übereinstimmen –
$ alias 'hg=history | grep'
Fügen Sie diese Aliase in der Datei „~/.bashrc“ hinzu, damit sie bei jedem Systemstart persistent sind.
Verlaufskonfigurationseinstellungen
Bash-Shell-Variable | Beschreibung |
HISTATEI | Speicherort der physischen Datei, in der der Verlauf die Befehle speichert. Die Bash-Shell ist standardmäßig „~/.bash_history“. Das Setzen von „/dev/null“ deaktiviert die Verlaufsaufzeichnung. |
HISTFILESIZE | Bezieht sich auf eine Reihe von Befehlen, die in der Verlaufsdatei gespeichert werden sollen. |
HISTGRÖSSE | Bezieht sich auf eine Reihe von Befehlen, die im Speicher in einer Verlaufsliste gespeichert sind. Wenn Sie einen Wert von 0 (Null) festlegen, wird die Verlaufsaufzeichnung deaktiviert. |
HISTIGNORE | Manchmal ist es erforderlich, bestimmte Befehle nicht zu speichern. Diese Variable nimmt eine Liste von durch Doppelpunkte getrennten Mustern an. Beispielsweise zeichnet die folgende Konfiguration die Verlaufsfunktion auf, um die Befehle nicht aufzuzeichnen:ls, top und clear. HISTIGNORE=”ls*:top:clear” |
HISTTIMEFORMAT | Diese HISTTIMEFORMAT-Variable ermöglicht die Anzeige des Verlaufs mit Zeitstempel. Wenn HISTTIMEFORMAT auf „%F %T “ gesetzt ist, erhalten Sie die folgenden Ergebnisse. Dies ist ein sehr nützlicher Befehl für Systemadministratoren. |
HISTCONTROL | HISTCONTROL hilft beim Ignorieren von Duplikaten. HISTCONTROL kann mit folgenden Werten festgelegt werden: erasedups,ignorespace,ignoredups oderignorierboth. (durch Doppelpunkt getrennt) Im Folgenden einige Beispiele: HISTCONTROL=ignoredups:erasedups HISTCONTROL=ignorebothAngenommen, die Verlaufseinträge enthalten Duplikate wie folgt („top“ und „ls –latr“ werden nacheinander wiederholt) Wenn HISTCONTROL auf „ignoredups “, dann wäre der Verlauf wie folgt angezeigt worden: |
Erweiterte Konfigurationseinstellungen
Bash verwaltet die Liste der Befehle intern im Speicher und sie werden beim Beenden in die konfigurierte Datei (standardmäßig .bash_history) geschrieben. Wenn der Benutzer die Shell verlässt, werden die letzten $HISTSIZE-Zeilen aus der Verlaufsliste in die auf $HISTFILE gesetzte Datei kopiert. Wenn ein Benutzer mit vielen Bash-Sitzungen angemeldet ist, wird nur der Verlauf der zuletzt beendeten Bash-Sitzung gespeichert. Falls die Befehlshistorie sofort geschrieben werden soll, wenn ein Befehl in einer Benutzersitzung ausgeführt wird, kann folgende Konfiguration in der „.bashrc“-Datei eingestellt werden.
$ shopt -s histappend $ PROMPT_COMMAND ="Verlauf -a; Geschichte -c; history -r“ „shopt –s histappend“ aktiviert das Anhängen, anstatt den Verlauf zu überschreiben.
„history -a“ wird verwendet, um die Verlaufsbefehle im Speicher an ~/.bash_history anzuhängen
„history -c“ wird verwendet, um die Verlaufsbefehle im Speicher zu löschen
„history -r“ wird verwendet, um Verlaufsbefehle aus ~/.bash_history in den Speicher zu lesen
Eine typische „~/.bashrc“-Datei mit verlaufsbezogenen Konfigurationseinstellungen wird wie folgt aussehen:# Steuere die Größe der im Speicher aufzuzeichnenden Befehle
HISTSIZE=2000# Steuere die Größe der in der Datei zu speichernden Befehle
HISTFILESIZE=10000
# Speicherort der physischen Datei, in der Befehle geschrieben werden
HISTFILE=/var/users/rjujare/.bash_history
#Format für Aufzeichnungs- und Anzeigezweck:Einbeziehung des Zeitstempels
HISTTIMEFORMAT=’%F %T ‘
# allgemeine Befehle wie ls
HISTIGNORE=”ls:id:uname:clear:top”
# doppelte Befehle und Befehle, die mit Leerzeichen beginnen, ignorieren
HISTCONTROL=ignoreboth
# anhängen, Verlauf nicht überschreiben
shopt -s histappend
PROMPT_COMMAND=”history -a; Geschichte -c; Geschichte -r“
Wie speichere ich die Konfiguration?
Öffnen Sie die Datei ~/.bashrc mit Ihrem bevorzugten Editor, um die Einstellungen zu ändern. Wenn die Änderungen abgeschlossen sind, speichern Sie die Datei und beenden Sie sie. Um den Änderungseffekt zu erhalten, geben Sie die Datei mit dem Befehl „source“ wie folgt aus:
$ source ~/.bashrc
Schlussfolgerung
Die Bash-Shell kommt mit vielen nützlichen Funktionen und eine davon ist Geschichte. Diese Funktionen verbessern auch die Produktivität von Administratoren und normalen Benutzern erheblich. Vergessen Sie nicht, Ihre eigenen Erfahrungen mit der Geschichte zu teilen!