Startseite » wie man » So verwenden Sie Ihr Bash-Protokoll im Linux- oder macOS-Terminal

    So verwenden Sie Ihr Bash-Protokoll im Linux- oder macOS-Terminal

    Die Bash-Shell ist die Standard-Terminal-Umgebung, die in den meisten Linux-Distributionen enthalten ist. Sie ist in macOS enthalten und kann unter Windows 10 installiert werden. Sie speichert die eingegebenen Befehle und speichert sie in einer Protokolldatei. Sie kennen wahrscheinlich ein paar Grundlagen der Bash-Geschichte, aber es ist viel mächtiger als Sie vielleicht denken.

    Tastatürkürzel

    Um durch die Bash-Historie zu blättern, können Sie einige nützliche Tastenkombinationen der Bash verwenden. Drücken Sie diese Tastenkombinationen und Befehle, die Sie zuvor verwendet haben, werden an der Eingabeaufforderung angezeigt.

    • Aufwärtspfeil oder Strg + P: Gehen Sie zum vorherigen Befehl in Ihrer Historie. Drücken Sie die Taste mehrmals, um die von Ihnen verwendeten Befehle rückwärts zu durchlaufen.
    • Pfeil nach unten oder Strg + N: Gehen Sie zum nächsten Befehl in Ihrer Historie. Drücken Sie die Taste mehrmals, um die von Ihnen verwendeten Befehle vorwärts zu durchlaufen.
    • Alt + R: Stellen Sie Änderungen an einem Befehl wieder her, den Sie aus Ihrem Verlauf gezogen haben, wenn Sie ihn in der aktuellen Zeile bearbeitet haben.

    Bash hat auch einen speziellen "Rückruf" -Modus, mit dem Sie nach Befehlen suchen können, die Sie zuvor ausgeführt haben, anstatt sie nacheinander durchzublättern.

    • Strg + R: Rufen Sie den letzten Befehl ab, der mit den von Ihnen angegebenen Zeichen übereinstimmt. Drücken Sie diese Verknüpfung und beginnen Sie mit der Eingabe, um den Bash-Verlauf nach einem Befehl zu durchsuchen.
    • Strg + O: Führen Sie den gefundenen Befehl mit Strg + R aus.
    • Strg + G: Verlassen Sie den Verlaufssuchmodus, ohne einen Befehl auszuführen.

    Zeigen Sie Ihren Bash-Verlauf an

    Sie können Ihren gesamten Bash-Verlauf auf dem Bildschirm ausdrucken, indem Sie einen einzigen Befehl ausführen:

    Geschichte

    Sie sehen eine Liste aller Befehle in Ihrem Bash-Verlauf sowie eine Nummer links von jedem Befehl. Der Befehl mit einer "1" daneben ist der älteste Befehl in der Bash-Historie, während der Befehl mit der höchsten Nummer der neueste ist.

    Sie können mit der Ausgabe alles tun, was Sie möchten. Zum Beispiel könnten Sie es an die grepBefehl zum Durchsuchen Ihres Befehlsverlaufs.

    Geschichte | grep your_search

    Sie könnten es auch an die Pipe leiten Schwanz Befehl, um nur eine kleine Anzahl der zuletzt ausgeführten Befehle anzuzeigen. Der folgende Befehl würde beispielsweise die letzten 5 Einträge in Ihrem Verlauf anzeigen.

    Geschichte | Schwanz -5

    Führen Sie Befehle aus Ihrem Verlauf aus

    Bash kann frühere Befehle schnell "erweitern" oder sie erweitern und ändern. Diese Funktion wird als "Verlaufserweiterung" bezeichnet und verwendet ein Ausrufezeichen ("Bang"). Geben Sie sie einfach an der Eingabeaufforderung ein und drücken Sie die Eingabetaste, um sie so auszuführen, als würden Sie einen anderen Befehl ausführen.

    Verwenden Sie den folgenden Befehl, um einen bestimmten Befehl aus der Historie anhand seiner Nummer auszuführen:

    !#

    Angenommen, Sie wollten den 12. Befehl aus dem Bash-Verlauf ausführen. Das ist der Befehl mit einer "12" links davon, wenn Sie das ausführen Geschichte Befehl. Sie geben den folgenden Befehl ein.

    !12

    Geben Sie Folgendes ein, um den zuletzt ausgeführten Befehl erneut auszuführen. Dies hat den gleichen Effekt, als wenn Sie den Aufwärtspfeil einmal drücken, um den vorherigen Befehl anzuzeigen, und dann die Eingabetaste drücken.

    !!

    Sie können auch eine bestimmte Anzahl von Zeilen zurück auf einen Befehl verweisen. Zum Beispiel, !-2 würde den vorletzten Befehl ausführen, den Sie ausgeführt haben. !! bedeutet das Gleiche wie !-1 .

    Diese Erweiterung funktioniert überall auf der Linie. Sie können alles hinzufügen, was Sie vor oder nachher mögen !! oder einen der anderen Ausdrücke in diesem Abschnitt. Sie können beispielsweise den folgenden Befehl eingeben, um den zuletzt durchgeführten Befehl erneut auszuführen Sudo, es gibt root Privilegien. Dies ist besonders nützlich, wenn Sie das Hinzufügen vergessen  Sudo bevor Sie einen Befehl ausführen.

    Sudo !!

    Oder Sie könnten beispielsweise den vorherigen Befehl erneut ausführen und seine Ausgabe an grep weiterleiten, um nach Text zu suchen.

    !! | grep text

    Geben Sie Folgendes ein, um nach einem Befehl in Ihrem Protokoll zu suchen und ihn auszuführen. Dadurch wird der letzte Befehl ausgeführt, der dem von Ihnen angegebenen Text entspricht:

    !Text

    Wenn Sie vor kurzem einen Befehl ausgeführt haben, der mit begann Klingeln, Sie können den folgenden Befehl ausführen, um danach zu suchen. Dadurch wird rückwärts durch Ihr Protokoll gesucht. Suchen Sie nach dem neuesten Befehl, der mit "Pi“Und sofort ausführen:

    !Pi

    Sie können ein : p Bei einer der obigen Erweiterungen und bei bash wird der Befehl an das Terminal ausgegeben, ohne dass er ausgeführt wird. Dies ist nützlich, wenn Sie vor dem Ausführen bestätigen möchten, dass Sie den richtigen Befehl auswählen.

    !12: p
    !!: p
    !Text: p

    Argumente aus Ihrer Geschichte wiederverwenden

    In Bash können Sie auch einen neuen Befehl ausführen, jedoch Argumente aus vorherigen Befehlen in Ihrem Protokoll verwenden. So können Sie lange oder komplizierte Argumente schnell wiederverwenden, ohne sie erneut eingeben zu müssen.

    Befehl! $

    Angenommen, Sie haben den Befehl ausgeführt Berühren Sie / home / chris / some_long_file_name_you_dont_want_to_type_again . Sie möchten jetzt den Befehl ausführen nano / home / chris / some_long_file_name_you_dont_want_to_type_again. Anstatt das Ganze von Grund auf zu tippen, können Sie Folgendes ausführen:

    nano! $

    Das !$ würde dazu führen, dass bash automatisch das letzte Argument Ihres vorherigen Befehls ausfüllt.

    Dies füllt nur das letzte Argument aus. Also, wenn du rennst ping google.com -c 4 und dann rennen ping! $ , das würde sich nur erweitern auf “ping 4“.

    Um diese Situation zu beheben, können Sie den folgenden Trick verwenden, um das erste Argument in der Zeile und nicht das letzte zu erweitern:

    Befehl! ^

    Also, wenn du rennst ping google.com -c 4 und lief dann ping! ^ , bash würde dies erweitern auf “ping google.com ".

    Um alle im vorherigen Befehl verwendeten Argumente anstelle eines einzelnen Arguments einzufügen, verwenden Sie Folgendes:

    Befehl !*

    Also, wenn du rennst ping! * Stattdessen füllt bash automatisch alle Argumente aus, die Sie im vorherigen Befehl verwendet haben.

    Sie können denselben Trick verwenden, mit dem Sie Befehle aus Ihrem Verlauf ausführen, um Argumente daraus zu erhalten. Verwenden Sie einfach das folgende Formular.

    Befehl! abc: #

    Zum Beispiel haben wir den Befehl ausgeführt Sudo-Hostname ubuntu vorhin. Wenn Sie den folgenden Befehl ausführen, durchsucht bash den Verlauf rückwärts, um den letzten Befehl zu finden, der mit den Buchstaben beginnt, die wir eingeben, und das von uns angegebene Argument eingeben. Also, wenn wir rennen echo! su: 2 , bash sucht zurück, um den letzten Befehl zu finden, der mit "su"Und geben Sie ihr zweites Argument ein, das"Ubuntu“.

    Andere Tricks funktionieren wie erwartet. Wenn Sie beispielsweise die Zahl durch ein Sternchen (Platzhalter) ersetzen, füllt bash alle Argumente des Befehls aus:

    Befehl! abc: *

    Führen Sie den vorherigen Befehl erneut aus und ändern Sie ihn

    In Bash können Sie außerdem den vorherigen Befehl erneut ausführen und etwas angeben, das geändert werden soll. Dies kann nützlich sein, um einen Tippfehler in einem Befehl zu korrigieren. Zum Beispiel führt der folgende Befehl den vorherigen Befehl erneut aus und ersetzt den Text "ABC"Darin mit dem Text"xyz“.

    ^ abc ^ xyz

    Zum Beispiel, wenn Sie versehentlich gelaufen sind ping gogle.com, Sie könnten dann laufen ^ gog ^ goog und bash würde den Befehl ausführen ping google.com stattdessen.

    Wo Ihre Geschichte gespeichert wird und wie Sie sie löschen können

    Die Bash-Shell speichert den Verlauf der Befehle, die Sie in der Protokolldatei Ihres Benutzerkontos ausführen, standardmäßig unter ~ / .bash_history. Wenn Ihr Benutzername beispielsweise bob ist, finden Sie diese Datei unter /home/bob/.bash_history.

    Da Ihr Verlauf in einer Datei gespeichert ist, bleibt er zwischen den Sitzungen erhalten. Sie können einige Befehle ausführen, sich abmelden und am nächsten Tag zurückkommen. Diese Befehle befinden sich jedoch weiterhin in Ihrer Protokolldatei und können dort angezeigt und verwendet werden. Jedes Benutzerkonto verfügt über eine eigene Verlaufsdatei mit einem separaten Befehlsverlauf.

    Um den Bash-Verlauf zu löschen, können Sie den folgenden Befehl ausführen. Dadurch wird der Inhalt der .bash_history-Datei Ihres Benutzerkontos gelöscht:

    Geschichte -c

    Bash speichert standardmäßig nur eine begrenzte Anzahl von Befehlen und verhindert, dass die Protokolldatei zu groß wird. Die Anzahl der Verlaufseinträge, an die sich die Bash erinnert, wird vom gesteuert HISTSIZEVariable. Der Standardwert ist normalerweise 500 oder 1000 Einträge. Sie können den folgenden Befehl ausführen, um die Größe des Bash-Verlaufs auf Ihrem System anzuzeigen.

    echo $ HISTSIZE

    Führen Sie den folgenden Befehl aus, um Ihren Verlauf auf Null zu setzen.

    HISTSIZE = 0

    Für die aktuelle Sitzung speichert bash keine Verlaufseinträge, es sei denn, Sie führen einen Befehl wie aus HISTSIZE = 1000 um es auf eine bestimmte Anzahl von Einträgen zurückzusetzen.

    So ignorieren Sie Leerzeichen und Duplikate

    Mit Bash können Sie Verlaufseinträge ignorieren, die mit einem Leerzeichen beginnen, wenn Sie die Option "." HISTCONTROLVariable zu Unwissensraum.

    HISTCONTROL = Unwahrheit

    Geben Sie vor einem Befehl ein Leerzeichen ein, bevor Sie ihn in der Bash-Shell ausführen. Der Befehl wird normal ausgeführt, erscheint jedoch nicht in Ihrem Protokoll, wenn diese Variable aktiviert ist. Auf diese Weise können Sie Ihren Verlauf ein wenig sauberer halten und Befehle ausführen, ohne dass diese in Ihrem Verlauf angezeigt werden.

    Mit Bash können Sie auch doppelte Befehle ignorieren, die Ihren Verlauf stören können. Setze dazu HISTCONTROL zu ignoriert.

    HISTCONTROL = ignoriert

    Um beide zu benutzen Unwissensraum und ignoriert Funktion, stellen Sie die HISTCONTROL Variable zu Unwissenheit.

    HISTCONTROL = Unwissenheit

    Beachten Sie, dass die von Ihnen festgelegten Bash-Variablen nur für die aktuelle Sitzung bestehen bleiben. Sie müssen diese zur .bashrc-Datei Ihres Benutzerkontos hinzufügen, damit diese Werte automatisch in jeder bash-Sitzung festgelegt werden, die Sie starten, falls Sie dies bevorzugen.

    Die Bash-Shell ist ein komplexes Werkzeug mit viel mehr Optionen als diesen. In den Abschnitten zu den Bash-History-Builtins- und -Historienerweiterungen im offiziellen Bash-Handbuch finden Sie weitere Informationen und andere fortgeschrittene Tricks, die Sie verwenden können.