9 Bash-Tipps und -Tricks, die jeder Benutzer kennen sollte - Technik leichter machen

Index
  1. Bash vs. das Terminal
  2. 1. Erstellen Sie benutzerdefinierte Aliase für häufige Befehle
  3. 2. Durchsuchen Sie Ihren Befehlsverlauf sofort
  4. 3. Ketten Sie Befehle miteinander
  5. Pipelines und Umleitung
  6. Gespeicherte Befehle in den Hintergrund senden
  7. Den vorherigen Befehl mit Root-Rechten erneut ausführen (sudo !!)
  8. Mehrere Befehle gleichzeitig ausführen
  9. 7. Finden von Befehlen mit Apropos
  10. 8. Substituieren im vorherigen Befehl
  11. 9. Übergeben von Argumenten aus früheren Befehlen

Entdecken Sie essentielle Bash-Tipps, um effizienter im Terminal zu arbeiten, von benutzerdefinierten Aliasen über das Durchsuchen des Befehlsverlaufs bis hin zu effizienten Befehlsverknüpfungen.

Als Linux-Nutzer ist es ein besonderer Moment, wenn wir zum ersten Mal ein Terminal öffnen und auf eine Weise mit dem System arbeiten, die am effizientesten, leistungsstärksten und flexibelsten ist. Allerdings kann der erste Besuch im Terminal einschüchternd sein, da man nur einen blinkenden Cursor und eine endlose Welt von Möglichkeiten vorfindet. Um Ihnen zu helfen, zeigen wir Ihnen einige Bash-Tipps und -Tricks, um im Terminal smarter und nicht härter zu arbeiten.

Bash vs. das Terminal

Wenn Sie denken, dass Bash das Terminal ist und vice versa, liegen Sie mehr falsch als richtig. Das Terminal ist die Anwendung (oder grafische Schnittstelle), in der Sie Befehle eingeben, um mit dem System zu interagieren. Bash ist die Shell (Programmiersprache für UNIX), die die eingegebenen Befehle interpretiert und ausführt. Wenn wir also das Terminal öffnen und damit arbeiten, benutzen wir tatsächlich die Bash-Shell (oder zsh, fish oder welche Shell auch immer mit Ihrem System kommt). Die folgenden Tipps und Tricks sind Befehlszeilen-Tipps, die in der Bash-Shell funktionieren, nicht in der Terminal-Anwendung.

1. Erstellen Sie benutzerdefinierte Aliase für häufige Befehle

Haben Sie sich jemals gelangweilt, denselben langen Befehl jedes Mal eingeben zu müssen? Oder gibt es Befehle, die Sie ein Dutzend Mal am Tag eingeben? In diesem Fall sollten Sie Aliase verwenden. Mit Aliase müssen Sie nicht alles eingeben, sondern nur Ihr kurzes, einprägsames Alias.

Beispielsweise könnten Sie anstelle von git status jedes Mal einen Alias wie gs oder einen anderen Shortcut nach Ihrem Geschmack erstellen. Sie können Aliase entweder vorübergehend für Ihre aktuelle Sitzung oder dauerhaft erstellen.

Um ein temporäres Alias für Ihre aktuelle Sitzung zu erstellen, verwenden Sie den Alias-Befehl folgendermaßen:

alias gs="git status"

Jetzt können Sie einfach gs eingeben, und Bash führt git status für Sie aus. So einfach ist das. Sie können so viele Aliase hinzufügen, wie Sie möchten, aber die echte Magie geschieht, wenn Sie diese Aliase dauerhaft machen.

Öffnen Sie einfach Ihre Bash-Konfigurationsdatei (normalerweise “~/.bashrc” oder ~/.bash_profile) mit Ihrem bevorzugten Editor, wie nano:

sudo nano ~/.bashrc

Fügen Sie dann Ihre Alias-Befehle ans Ende der Datei hinzu.

Speichern Sie die Datei, starten Sie Ihr Terminal neu oder führen Sie Folgendes aus:

sudo source ~/.bashrc

Jetzt sind sie jedes Mal verfügbar, wenn Sie ein Terminal öffnen. Außerdem habe ich Aliase für alles, insbesondere für Update- und Upgrade-Befehle:

alias update='sudo apt update && sudo apt upgrade -y'

Anstelle des vollständigen Befehls tippe ich einfach update, und es erledigt den Rest.
Zusätzlich können Sie sogar Aliase mit Parametern über Funktionen erstellen:

mkcd() {
mkdir -p "$1" && cd "$1"
}

Jetzt erstellt mkcd projects/new-app das Verzeichnis und wechselt sofort hinein. Achten Sie darauf, keine integrierten Befehle zu überschreiben, sonst verwirren Sie sich.

2. Durchsuchen Sie Ihren Befehlsverlauf sofort

Durch das Scrollen durch Ihren Terminalverlauf mit der Pfeiltaste Hoch kann ewig dauern. Sie wissen, dass der Befehl dort ist, aber um ihn zu finden, müssen Sie immer wieder die Taste drücken. Glücklicherweise hat Bash eine integrierte Suche, die es mühelos macht.

Drücken Sie einfach Ctrl + R in Ihrem Terminal. Ihre Eingabeaufforderung ändert sich, und Sie können anfangen, einen Teil des gesuchten Befehls einzugeben. Während Sie tippen, zeigt Bash sofort die letzte Übereinstimmung aus Ihrem Verlauf an.

Alternativ fügen Sie diesen Snippet in Ihre “~/.inputrc”-Datei ein (wenn sie nicht existiert, erstellen Sie sie):

"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on

Laden Sie Ihr Terminal neu. Sie können jetzt ein paar Zeichen eintippen und die Pfeiltasten Hoch/Runter verwenden, um den Bash-Verlauf nach Befehlen zu durchsuchen, die mit den eingegebenen Zeichen beginnen. Wenn Sie beispielsweise cd / eingeben und die Hoch-Taste drücken, wird nach Befehlen gesucht, die mit cd / beginnen.

3. Ketten Sie Befehle miteinander

Pipelines und Umleitung

Eine großartige Fähigkeit von Bash besteht darin, dass Sie Befehle verketten können. Anstatt Befehle nacheinander auszuführen, können Sie diese miteinander verbinden, sodass die Ausgabe eines Befehls zur Eingabe eines anderen wird. Dies können Sie mit dem Pipeline-Operator (|) tun.

Wenn Sie beispielsweise nur die mit Python verbundenen laufenden Prozesse sehen möchten, müssen Sie nicht zwei separate Befehle verwenden. Stattdessen können Sie sie so verketten:

ps aux | grep python

Hier listet ps aux alle laufenden Prozesse auf, und grep python filtert die Liste, um nur die anzuzeigen, die mit Python in Verbindung stehen. Darüber hinaus können Sie mehr als zwei Befehle miteinander verketten, um schnelle Einzeiler zu erstellen, wie hier:

cat logfile.txt | grep "error" | wc -l

Das zählt, wie viele Fehlermeldungen in einer Protokolldatei erscheinen – drei Befehle arbeiten nahtlos zusammen.

Umleitung ist ein weiteres essentielles Werkzeug. Anstatt die Ausgabe auf Ihrem Bildschirm anzuzeigen, können Sie sie in eine Datei senden. Wenn Sie beispielsweise die Verzeichnisauflistung in einer Datei speichern möchten, können Sie dies mit folgendem Befehl tun:

ls -l > files.txt

Sie können auch >> anstelle von > verwenden, wenn Sie anhängen statt überschreiben möchten. Umleitung ist besonders nützlich für Protokolle, Backups oder wann immer Sie Ergebnisse für später speichern möchten.

Gespeicherte Befehle in den Hintergrund senden

Sie haben gerade etwas gestartet, das ewig dauern wird, wie eine große Dateiübertragung oder einen langen Job, und Ihr Terminal ist jetzt blockiert. Anstatt ein neues Fenster zu öffnen, können Sie es in den Hintergrund verschieben.

Wenn bereits etwas läuft, drücken Sie Ctrl + Z. Dadurch wird es angehalten und Sie kehren zur Shell-Eingabeaufforderung zurück. Geben Sie dann ein:

bg

Das setzt es im Hintergrund fort, sodass es weiterläuft, während Sie andere Dinge tun. Wenn Sie jedoch sehen möchten, welche Jobs laufen oder angehalten sind, verwenden Sie einfach diesen Befehl:

jobs

Sie können einen Job auch mit folgendem Befehl wieder in den Vordergrund bringen:

fg %1

Verwenden Sie die Jobnummer; wenn Sie sie weglassen, wählt fg den zuletzt ausgeführten. Sie können auch einen Befehl von Anfang an im Hintergrund starten, indem Sie & wie folgt hinzufügen:

some_long_task &

So beginnt er unabhängig, und Sie erhalten sofort Ihre Eingabeaufforderung. Ein weiterer Trick: Wenn Sie befürchten, dass der Job beendet wird, wenn Sie das Terminal schließen, können Sie folgendes ausführen:

disown -h %job

Dieser Bash-Befehl sendet einen „nicht abmelden“ (SIGHUP) Code an diesen Job, wenn Ihre Shell beendet wird. Oder verwenden Sie nohup am Anfang. Denken Sie daran: Hintergrundjobs können weiterhin Ausgaben auf Ihrem Bildschirm schreiben, und nicht alle Befehle mögen es, im Hintergrund ausgeführt zu werden. Verwenden Sie Umleitung oder nohup bei Bedarf.

Den vorherigen Befehl mit Root-Rechten erneut ausführen (sudo !!)

Dies ist ein nützlicher Befehl in einem spezifischen Szenario, das mir oft passiert. !! (bang-bang) ruft den vorherigen Befehl in voller Länge ab. Es scheint vielleicht nicht nützlich, aber wenn Sie an all die Male denken, in denen Sie einen Befehl eingeben, der mit Root-Rechten ausgeführt werden muss, werden Sie verstehen, wo dies nützlich ist.

Ein großartiges Beispiel ist das Installieren von Skripten. Angenommen, Sie führen ein Installationsskript mit „./SCRIPT-NAME.sh“ aus, und es sagt, dass Sie es mit Superuser-Rechten ausführen müssen. Geben Sie einfach sudo !! ein, geben Sie Ihr Passwort ein, und schon sind Sie startklar. Es spart viel Zeit, und sobald Sie diese Abfolge im Gedächtnis haben, können Sie es schneller tun, als wenn Sie es falsch gemacht haben.

Mehrere Befehle gleichzeitig ausführen

Manchmal möchten Sie nicht nur einen Befehl nach dem anderen eintippen. Mit Bash können Sie sie so verketten, dass sie nacheinander ohne Wartezeiten ausgeführt werden. Wenn Sie wollen, dass sie nacheinander ausgeführt werden, unabhängig von der vorherigen Erfolg, können Sie die Befehle mit einem Semikolon (;) trennen, wie folgt:

Befehle hier
mkdir newdir; cd newdir; touch file.txt

Wenn Sie möchten, dass der zweite Befehl nur ausgeführt wird, wenn der erste erfolgreich war, verwenden Sie &&, so:

sudo apt update && sudo apt upgrade

Umgekehrt können Sie || verwenden, um etwas nur auszuführen, wenn der erste Befehl fehlschlägt:

backup_database || echo "Backup fehlgeschlagen!"

Sie sind auch nicht auf sequentielle Befehle beschränkt. Fügen Sie ein Ampersand am Ende hinzu, und der Befehl läuft im Hintergrund und gibt Ihr Terminal frei. Zum Beispiel können Sie mehrere Apps direkt von Ihrem Terminal auf verschiedene Weise öffnen:

python script.py & firefox &

Dies führt Ihr Python-Skript aus und öffnet gleichzeitig Firefox. Wenn Sie sich erst einmal mit Verknüpfungen, Hintergrundjobs und ein wenig Prozesssubstitution vertraut machen, werden Sie aufhören, Befehle als einzelne Schritte zu betrachten, und beginnen, sie wie Bausteine zu behandeln, die Sie zu größeren Workflows zusammenfügen können.

7. Finden von Befehlen mit Apropos

Apropos (app-row-POE) ist ein Befehl, der es Ihnen ermöglicht, Befehle mit man oder Handbucheinträgen basierend auf ihrer Beschreibung zu finden. Wenn Sie jemals eine Man-Seite eines Befehls gefunden haben, sieht sie so aus:

Der „NAME“-Abschnitt ganz oben ist es, worüber ich spreche. Wenn ich den ping Befehl mit apropos finden möchte, würde ich apropos icmp in mein Terminal eingeben und die Eingabetaste drücken. Beachten Sie, dass es nicht groß-/kleinschreibungssensitiv ist. Dies zeigt jeden Befehl an, der einen NAME-Eintrag mit „ICMP“ enthält.

Ein weiterer toller Anwendungsbereich für apropos ist das Erkunden von Tools, mit denen Sie möglicherweise nicht vertraut sind, wie z.B. selinux. Den Befehl apropos selinux auszuführen, gibt Ihnen eine Liste aller verschiedenen Befehle, die Sie verwenden können, um mit SELinux zu interagieren und Sie effizient auf den Weg zur Durchsetzung zu bringen.

8. Substituieren im vorherigen Befehl

Etwas, das mir im Terminal viel Zeit gespart hat, ist herauszufinden, wie man etwas im vorherigen Befehl substituiert. Wenn ich etwas falsch schreibe oder eine Option im vorherigen Befehl ersetzen muss, kann ich eine ^ Taste verwenden, um das falsch geschriebene Wort abzurufen, und dann eine weitere ^, um das Wort oder die Option, die ich wollte, einzufügen.

Schauen wir uns ein Beispiel an. Angenommen, ich möchte „maketecheasier.com“ anpingen, um sicherzustellen, dass ich eine vollständige Internetverbindung (einschließlich DNS) habe. Aber wenn ich etwas falsch schreibe, könnte ich einen Fehler erhalten. Wenn ich also versehentlich maktecheaser.com anpinge (das „i“ fehlt), werde ich Probleme haben.

Um die falsch geschriebene Option zu substituieren, kann ich ^maktecheaser.com^maketecheasier.com eingeben, und der Befehl wird wie erwartet ausgeführt. Dies ist ein einfaches Beispiel, aber sagen wir, Sie führen einen langen Befehl mit vielen Optionen aus oder leiten die Ausgabe oder Fehler Ihres Befehls fehl. Die Möglichkeit, > durch >> in einem komplexen Befehl zu ersetzen, ist ein Lebensretter.

Ein weiteres Beispiel ist mit systemd und dem systemctl Befehl. Ich gebe oft mehrere verschiedene systemctl Unterbefehle aus, wie starten, stoppen, aktivieren oder deaktivieren eines Dienstes. Ich kann diese einfach mit ^start^enable ersetzen, was mir Zeit spart.

9. Übergeben von Argumenten aus früheren Befehlen

Mit !$ können wir das letzte Argument eines Befehls an den aktuellen Befehl übergeben, und mit einigen leichten Variationen können wir jedes der Argumente an unseren aktuellen Befehl übergeben.

Schauen wir uns einige Beispiele an. Wenn ich ein Skript bearbeite, könnte ich den Befehl nano samplescript.sh verwenden. Sobald ich mit diesem Skript fertig bin, möchte ich es ausführbar machen, also könnte ich die oktalen Berechtigungen auf 755 ändern. Dazu könnte ich den Befehl chmod 755 !$ verwenden. Um den Namen des Skripts erneut zu übernehmen, könnte ich ./!:2 verwenden, um das zweite Argument abzurufen.

Einige weitere Beispiele:

!^ - erstes Argument
!* - alle Argumente
!:2-$ - zweites bis letztes Argument
!:2-4 - zweites bis viertes Argument

Sie können Ihre Zahlen substituieren, um beliebige Argumente abzurufen, die Sie möchten. Bash speichert mit dieser Methode fast 100 Argumente zur Verfügung, und Sie können.

Arbeiten Sie schnell durch einige einfache Aufgaben wie diese.

Ich hoffe, Ihnen haben diese Bash-Tipps und -Tricks gefallen, die Ihnen helfen, intelligenter im Terminal zu arbeiten. Sie sollten auch etwas über Bash-Variablen und Sonderzeichen lernen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Go up