Connect with us

Wie man

So verwenden Sie Ihren Bash-Verlauf im Linux- oder macOS-Terminal

So verwenden Sie Ihren Bash-Verlauf im Linux- oder macOS-Terminal

Die Bash-Shell ist die Standard-Terminalumgebung, die in den meisten Linux-Distributionen enthalten ist, in macOS enthalten ist und für die Installation unter Windows 10 verfügbar ist. Sie merkt sich die von Ihnen eingegebenen Befehle und speichert sie in einer Verlaufsdatei. Sie kennen wahrscheinlich ein paar Grundlagen der Bash-Historie, aber sie ist viel mächtiger, als Sie vielleicht denken.

Tastatürkürzel

Um durch Ihren Bash-Verlauf zu scrollen, können Sie einige der vielen nützlichen 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 Ihrem Verlauf. Drücken Sie die Taste mehrmals, um rückwärts durch die von Ihnen verwendeten Befehle zu gehen.
  • Pfeil nach unten oder Strg+N: Gehe zum nächsten Befehl in deinem Verlauf. Drücken Sie die Taste mehrmals, um vorwärts durch die von Ihnen verwendeten Befehle zu gehen.
  • Alt+R: Machen Sie alle Änderungen an einem Befehl rückgängig, den Sie aus Ihrem Verlauf gezogen haben, wenn Sie ihn in der aktuellen Zeile bearbeitet haben.

Bash verfügt auch über einen speziellen „Recall“-Modus, mit dem Sie nach Befehlen suchen können, die Sie zuvor ausgeführt haben, anstatt sie einzeln durchzublättern.

  • Strg+R: Rufen Sie den letzten Befehl auf, der den von Ihnen angegebenen Zeichen entspricht. Drücken Sie diese Verknüpfung und beginnen Sie mit der Eingabe, um Ihren 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.

Sehen Sie sich Ihren Bash-Verlauf an

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

history

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

Sie können mit der Ausgabe alles machen, was Sie möchten. Sie könnten es zum Beispiel an die grepBefehl, um Ihren Befehlsverlauf zu durchsuchen.

history | grep your_search

Sie könnten es auch an die tail -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.

history | tail -5

Führen Sie Befehle aus Ihrem Verlauf aus

Bash kann vorherige Befehle schnell „erweitern“ oder sie erweitern und ändern. Diese Funktion wird als „Verlaufserweiterung“ bezeichnet und verwendet ein Ausrufezeichen, das als „Knall“ bekannt ist. Geben Sie sie einfach an der Eingabeaufforderung ein und drücken Sie die Eingabetaste, um sie wie jeden anderen Befehl auszuführen.

Um einen bestimmten Befehl aus Ihrem Verlauf anhand seiner Nummer auszuführen, verwenden Sie den folgenden Befehl:

!#

Angenommen, Sie möchten den 12. Befehl aus Ihrem Bash-Verlauf ausführen. Das ist der Befehl mit einer „12“ links davon, wenn Sie den Befehl ausführen history Befehl. Sie würden den folgenden Befehl eingeben.

!12

Geben Sie Folgendes ein, um den zuletzt ausgeführten Befehl erneut auszuführen. Dies hat die gleiche Wirkung wie das einmalige Drücken des Aufwärtspfeils, um den vorherigen Befehl anzuzeigen und dann die Eingabetaste zu drücken.

!!

Sie können auf einen Befehl auch eine bestimmte Anzahl von Zeilen zurückverweisen. Beispielsweise, !-2 würde den vorletzten Befehl ausführen, den Sie ausgeführt haben. !! bedeutet dasselbe wie !-1 .

This expansion works anywhere on the line. You can add anything you like before or after !! oder einen der anderen Ausdrücke in diesem Abschnitt. Sie können beispielsweise den folgenden Befehl eingeben, um den zuletzt ausgeführten Befehl erneut auszuführen sudo, und gibt ihm Root-Rechte. Dies ist besonders nützlich, wenn Sie vergessen haben hinzuzufügen sudo bevor Sie einen Befehl ausführen.

sudo !!

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

!! | grep text

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

!text

Wenn Sie also kürzlich einen Befehl ausgeführt haben, der mit begann ping, können Sie den folgenden Befehl ausführen, um danach zu suchen. Dies durchsucht Ihren Verlauf rückwärts und sucht den neuesten Befehl, der mit „pi“, und führen Sie es sofort aus:

!pi

Sie können anhängen a :p zu einer der oben genannten Erweiterungen und bash gibt den Befehl an das Terminal aus, ohne ihn auszuführen. Dies ist nützlich, wenn Sie sich vor der Ausführung vergewissern möchten, dass Sie den richtigen Befehl ausgewählt haben.

!12:p
!!:p
!text:p

Wiederverwenden von Argumenten aus Ihrer Geschichte

Mit Bash können Sie auch einen neuen Befehl ausführen, aber Argumente aus früheren Befehlen in Ihrem Verlauf verwenden. Auf diese Weise können Sie lange oder komplizierte Argumente schnell wiederverwenden, ohne sie erneut eingeben zu müssen.

command !$

Angenommen, Sie haben den Befehl ausgeführt touch /home/chris/some_long_file_name_you_dont_want_to_type_again . Sie möchten nun den Befehl ausführen nano /home/chris/some_long_file_name_you_dont_want_to_type_again. Anstatt das Ganze von Grund auf neu einzugeben, könnten Sie Folgendes ausführen:

nano !$

Das !$ würde bash automatisch das letzte Argument Ihres vorherigen Befehls ausfüllen lassen.

Dies füllt nur das letzte Argument aus. Also, wenn du rennst ping google.com -c 4 und dann lauf ping !$ , dies 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 anstelle des letzten zu erweitern:

command !^

Also, wenn du gelaufen bist ping google.com -c 4 und dann rannte ping !^ , würde die Bash dies erweitern auf „ping google.com".

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

command !*

Also, wenn du gelaufen bist ping !* Stattdessen würde bash automatisch alle Argumente ausfüllen, die Sie im vorherigen Befehl verwendet haben.

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

command !abc:#

Zum Beispiel haben wir den Befehl ausgeführt sudo hostname ubuntu vorhin. Wenn wir den folgenden Befehl ausführen, durchsucht bash den Verlauf rückwärts, um den letzten Befehl zu finden, der mit den von uns eingegebenen Buchstaben beginnt, und trägt das von uns angegebene Argument ein. Also, wenn wir laufen echo !su:2 , sucht bash zurück, um den letzten Befehl zu finden, der mit „su“ und tragen Sie sein zweites Argument ein, nämlich „ubuntu“.

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

command !abc:*

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

Bash ermöglicht es Ihnen auch, den vorherigen Befehl erneut auszuführen und etwas anzugeben, das geändert werden soll. Dies kann nützlich sein, um einen Tippfehler in einem Befehl zu korrigieren. Der folgende Befehl führt beispielsweise den vorherigen Befehl erneut aus und ersetzt den Text „abc” darin mit dem Text “xyz“.

^abc^xyz

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

Wo Ihr Verlauf gespeichert ist und wie Sie ihn löschen können

Die Bash-Shell speichert den Verlauf der Befehle, die Sie ausgeführt haben, standardmäßig in der Verlaufsdatei Ihres Benutzerkontos 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 wird, bleibt er zwischen den Sitzungen bestehen. Sie können einige Befehle ausführen, sich abmelden und am nächsten Tag wiederkommen, und diese Befehle befinden sich immer noch in Ihrer Verlaufsdatei und können angezeigt und verwendet werden. Jedes Benutzerkonto verfügt über eine eigene Verlaufsdatei mit einem separaten Befehlsverlauf.

Um Ihren 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:

history -c

Bash merkt sich standardmäßig nur eine begrenzte Anzahl von Befehlen, wodurch verhindert wird, dass die Verlaufsdatei zu groß wird. Die Anzahl der History-Einträge, die sich bash merken kann, wird durch die 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 die 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 HISTCONTROLvariabel zu ignorespace.

HISTCONTROL=ignorespace

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

Bash ermöglicht es Ihnen auch, doppelte Befehle zu ignorieren, die Ihren Verlauf überladen können. Stellen Sie dazu HISTCONTROL zu ignoredups.

HISTCONTROL=ignoredups

Um beide zu verwenden ignorespace und ignoredups Funktion, stellen Sie die HISTCONTROL variabel zu ignoreboth.

HISTCONTROL=ignoreboth

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

Die Bash-Shell ist ein komplexes Werkzeug mit viel mehr Optionen als diese. Konsultieren Sie die Bash History Builtins und Verlaufserweiterung Abschnitten im offiziellen Bash-Handbuch detailliertere Informationen und andere fortgeschrittene Tricks, die Sie verwenden können.

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia