Die Bourne Again Shell, besser bekannt als bash, ist die Standardeinstellung für die meisten Linux-Distributionen. Es ist extrem mächtig, was Kommando-Shells betrifft, und hält alle Arten von raffinierten Tricks für Lernwillige bereit. Eine der besten Eigenschaften ist meiner Meinung nach das System der Befehlshistorie.

Es gibt viele Optionen, die mit der Bash-History verwendet werden können. Einige davon verwende ich fast jedes Mal, wenn ich eine Befehlsshell öffne. Heute werde ich einige der nützlichsten Aspekte der Geschichte behandeln, aber ich werde sicherlich nicht in der Lage sein, sie alle zu behandeln.

Auf- / Ab-Pfeile

Viele von euch kennen das wahrscheinlich, aber für alle, die es nicht tun, wird es Ihnen das Leben viel leichter machen. Wenn Sie sich in der Befehlsshell befinden, verwenden Sie einfach die Auf- und Abwärtspfeile auf Ihrer Tastatur, um sich durch die Liste der zuvor eingegebenen Befehle zu bewegen. Wenn Sie das nächste Mal einen langen Befehl eingeben, der einen Tippfehler enthält, müssen Sie das Ganze nicht erneut eingeben, sondern nur den Pfeil nach oben drücken und die erforderlichen Änderungen vornehmen.

!!

Ein ähnliches Merkmal wie oben aufgeführt ist der Double Bang (!!). Die in die Shell eingegebenen Zeichen stellen den zuletzt eingegebenen Befehl dar. Nehmen wir an, Sie versuchen, einen Befehl auszuführen, nur um herauszufinden, dass Sie dazu root-Rechte benötigen. Anstatt den gesamten Befehl erneut einzugeben, können Sie einfach eingeben

 Sudo !! 

Bash wird das ersetzen !! für den vorherigen Befehl, wie im folgenden Beispiel.

Das funktioniert auch weiter rückwärts, man kann sowas machen

 ! -5 

um den Befehl 5 Einträge zurück in der Geschichte zu erinnern.

!(Wort)

Vielleicht hast du vor ein paar Tagen einen langen, komplexen Befehl in deine Shell eingegeben, zum Beispiel eine Reihe von Optionen für "wterm". Sie können den Befehl über die integrierte Suchfunktion suchen und erneut eingeben. Sie fügen einfach die ersten Buchstaben des Befehls nach dem! und Bash wird es finden.

Sei vorsichtig mit diesem. Sie können am Ende etwas anderes als das, was Sie erwartet haben, laufen. Verwenden Sie dies nicht für potentiell gefährliche Befehle wie "rm" oder "fdisk".

!?(Wort)

Dies ist ähnlich wie bei der letzten Funktion, da es die Historie nach dem eingegebenen Wort durchsucht, aber im Gegensatz zu! (Wort) findet es das Wort irgendwo im Befehl, nicht nur am Anfang.

Sei vorsichtig mit diesem. Sie können am Ende etwas anderes als das, was Sie erwartet haben, laufen. Verwenden Sie dies nicht für potentiell gefährliche Befehle wie "rm" oder "fdisk".

Strg-R

Dieser kann mein persönliches Lieblingsgeschichtswerkzeug sein. Es ist ein bisschen wie das ! Element oben, aber interaktiv. Drücken Sie in Ihrer Befehlsshell Strg-R und es wird eine Suche gestartet. Während der Eingabe durchsucht bash den Verlauf und zeigt Ihnen die Ergebnisse während der Eingabe an. Wenn es den gewünschten Befehl anzeigt, drücken Sie einfach die Eingabetaste und der Befehl wird ausgeführt. Das kann sicherer sein als Dinge wie !? weil Sie sehen können, was der Befehl sein wird, bevor Sie ihn ausführen, so müssen Sie nicht raten oder sich auf Speicher verlassen.

Manuelle Suche

Vielleicht gefällt Ihnen die Funktionsweise von Ctrl-R nicht oder Sie möchten ALLE Befehle sehen, die Sie eingegeben haben, oder nur diejenigen, die ein bestimmtes Wort enthalten. Der Befehl history zeigt Ihnen den vollständigen Befehlshistorie zusammen mit der Verlaufsnummer jedes Befehls (halten Sie diesen Gedanken, wir werden diese Zahlen in einem Moment abdecken).

Sie können auch die Anzahl der Elemente angeben, die der Protokollbefehl anzeigen soll. Um die letzten 10 Einträge im Verlauf zu sehen, könnten Sie tippen

 Geschichte 10 

Um alle Verlaufseinträge anzuzeigen, die ein bestimmtes Wort enthalten, können Sie die Ergebnisse mit grep wie folgt filtern.

!(Nummer)

Wenn Sie mit dem Befehl " history" die Befehlsverlaufsliste anzeigen, werden Sie feststellen, dass für jedes Element in der Liste eine Nummer zugeordnet ist. Sie können das verwenden, um diesen bestimmten Befehl aufzurufen. Zum Beispiel könnte Punkt 87 durch Eingabe erneut ausgeführt werden

 ! 87 

in deine Schale.

Wortaustausch

Das ist ziemlich gut. Wie oft hast du schon einen großen langen Befehl geschrieben, nur um zu erkennen, dass du, sagen wir, hdd, wenn du hdc willst ? Nun Bash hat dich bedeckt. Sie können ein Wort im vorherigen Befehl durch ein anderes ersetzen, indem Sie "^" wie im folgenden Beispiel verwenden

Verwalten Sie Ihre Geschichte

Standardmäßig wird der Verlauf in ~ / .bash_history gespeichert. Sie können mit dieser Datei umgehen, wie Sie es für richtig halten, aber es gibt einige nützliche Dinge, die Sie versuchen könnten, sie automatisch zu verwalten. Nämlich Einstellung der Umgebungsvariablen HISTSIZE und HISTFILESIZE . Um die Anzahl der Einträge, die in der History-Datei gespeichert werden können, auf 1000 festzulegen, geben Sie ein

 Exportieren Sie HISTFILESIZE = 1000 

in deine Schale. Dies beschränkt die Datei auf 1000 Einträge. Wenn Sie diese Änderung dauerhaft machen möchten, fügen Sie diesen Exportbefehl in Ihre Datei .bashrc oder .bash_profile ein.