So erstellen Sie Ihre eigenen benutzerdefinierten Terminalbefehle

In diesem Artikel werden wir sehen, wie wir benutzerdefinierte Shell-Befehle zur Automatisierung unserer Aufgaben erstellen können, mit denen wir uns durch Zeitersparnis auf andere produktive Dinge konzentrieren können. Es ist einfach einzurichten und macht auch viel Spaß, da wir alle benutzerdefinierten Befehle erstellen können, von sehr nützlichen bis nur zum Spaß. Wir können einen einzigen Befehl für folgende Dinge erstellen:

  • Konvertieren eines YouTube-Videos in MP3
  • Starten Sie alle Datenbankserver und Ihre Apps mit einem einzigen Befehl über Tmuxinator
  • Extrahieren von Informationen von einer Website
  • Holen Sie sich Git-SSH-Schlüssel und kopieren Sie es in die Zwischenablage
  • Abrufen von Details zu Top-5-Programmen, die übermäßig viel RAM / CPU verbrauchen usw.

Benutzerdefinierte Befehle sind im Grunde eine Funktion / Methode wie alle anderen Sprachen, die Eingaben annehmen oder nicht, und einige Dinge tun können. Innerhalb einer Funktion können beliebig viele Befehle gestapelt werden, die dann beim Funktionsaufruf ausgeführt werden. Weitere Einzelheiten zum Schreiben von Funktionen und zum Einrichten der Verwendung in einem Terminal als Befehl finden Sie weiter unten. Das folgende Beispiel funktioniert auf allen UNIX-basierten Systemen.

Beginnen wir mit einem einfachen Beispiel zum Erstellen eines benutzerdefinierten Befehls und zum Bereitstellen des Befehls im Terminal.

Schritt 1: Kennen Sie die Grundstruktur zum Schreiben einer Funktion in Shell

Hier ist ein Beispiel:

Funktion print_my_input () {
 Echo 'Ihre Eingabe:' $ 1
}

Wenn Sie Eingaben an die Funktion senden, wird der erste Parameter in der Variablen "$ 1" gespeichert, der zweite Parameter in "$ 2" und so weiter.

Kopieren Sie die obige Funktion und fügen Sie sie in Ihr Terminal ein. Versuchen Sie, die Funktion folgendermaßen aufzurufen:
print_my_input 'Ich probiere nur meinen neuen Befehl aus'

Die Ausgabe sollte sein:
Ihre Eingabe: Einfach meinen neuen Befehl ausprobieren

Schritt 2: Erstellen Sie einen Speicherort für alle Ihre benutzerdefinierten Befehle

2.1 Wir werden eine neue Bash-Skript-Datei erstellen, in der wir alle unsere Befehle aufbewahren werden.
Wir machen es zu einer versteckten Datei, indem wir einen Punkt (.) Vor dem Dateinamen anhängen, da er nur vom Terminal verwendet wird und auch ein versehentliches Löschen verhindert.

Gehen wir zum Home-Verzeichnis (~) in unserem Terminal. cd ~ bringt dich dorthin. Erstellen Sie jetzt ein neues Bash-Skript mit dem folgenden Befehl:
Berühre .my_custom_commands.sh

Öffnen Sie nun die obige Datei in einem beliebigen Texteditor, fügen Sie den folgenden Code ein und speichern Sie ihn.

#! / bin / bash
# druckt die Eingabe
Funktion print_my_input () {
  Echo 'Ihre Eingabe:' $ 1
}
  • Die erste Zeile ist eine Konvention, die beim Schreiben von Shell-Skripten verwendet wird und der Shell Informationen zur Verwendung des entsprechenden Interpreters liefert. z. B. #! / usr / bin / env Python
  • # wird zum Schreiben von Kommentaren verwendet

2.2 Einrichten von Dateiberechtigungen
Standardmäßig verfügt eine neu erstellte Datei nur über Leseberechtigung. Da wir nur unsere Datei in die Shell laden müssen, reicht uns die Leseberechtigung, die bereits vorhanden ist. Daher müssen wir in dieser Sitzung die Berechtigung unserer Datei nicht ändern.

Aber nur zur Kenntnisnahme können Sie versuchen, das Skript mit dem Befehl in diesem Format auszuführen ./{{script_name}}, in unserem Fall ./.my_custom_command.sh. Sie sehen die Meldung "Erlaubnis verweigert".

Wenn das Skript jedoch wie oben beschrieben explizit über das Terminal ausgeführt werden muss, wird die Berechtigung "ausführbar" für die Datei mit dem folgenden Befehl festgelegt:
chmod + x .my_custom_commands.sh

2.3 Stellen Sie den Befehl im Terminal zur Verfügung
Erinnern Sie sich, wir hatten unsere Funktion print_my_input in das Terminal eingefügt und versucht, sie auszuführen? Dadurch wird der Befehl (der eigentlich nur eine Funktion / Methode ist) für die aktuelle Terminalsitzung nur für diese bestimmte Registerkarte verfügbar. Wenn Sie versuchen, einen neuen Tab zu öffnen und den Befehl auszuführen, ist er nicht vorhanden.

Schauen wir uns an, wie wir unseren Befehl in jeder Terminalsitzung laden können.
Unsere Datei ist bereits da, gespeichert und bereit.
Fangen wir frisch an.

  • Verlassen Sie das Terminal und starten Sie ein neues und wechseln Sie in das Home-Verzeichnis.
  • Überprüfen Sie, ob dieser Befehl print_my_input funktioniert oder nicht. Es sollte jetzt nicht funktionieren.
  • Laden Sie nun den Dateiinhalt mit dem folgenden Befehl:
    source ~ / .my_custom_commands.sh
  • Geben Sie nun den Befehl print_my_input ein und drücken Sie die Eingabetaste.
  • Es funktioniert richtig? Jetzt müssen wir Terminal anweisen, den Inhalt unseres Skripts in jeder Terminalsitzung zu laden. Dazu fügen wir den Befehl zum Laden des Skripts in eine rc-Datei (Run Control) der Shell hinzu. Die Shell lädt / führt alle Befehle in der Ausführungssteuerungsdatei bei jedem interaktiven Shell-Start aus.

Bash ist die Standardshell für fast alle UNIX-basierten Systeme. Es gibt jedoch auch verschiedene Geschmacksrichtungen wie ZSH. Abhängig von der verwendeten Shell ändern wir entweder die Datei ~ / .bashrc oder ~ / .zshrc. Wenn Sie keine Ahnung haben, rufen Sie einfach die Datei ~ / .bashrc auf. Beachten Sie, dass ich bei der Beschreibung dieser Dateien den vollständigen Pfad verwende.

Hinzufügen unseres Befehls zu den rc-Dateien:

  • Öffnen Sie ~ / .bashrc oder ~ / .zshrc mit einem beliebigen Texteditor
  • Fügen Sie den folgenden Befehl nach der letzten Zeile oder an einer beliebigen Stelle ein
    source ~ / .my_custom_commands.sh
  • Speichern Sie die Datei nach dem Hinzufügen der neuen Zeile und verlassen Sie das Terminal
  • Da wir Terminal bereits angewiesen haben, unsere Datei bei jeder Terminalsitzung zu laden, versuchen Sie diesen Befehl print_my_input in der aktuellen Registerkarte und öffnen Sie auch eine neue Registerkarte. Es sollte überall funktionieren, auch wenn wir ein neues Terminal verlassen und starten.

Herzliche Glückwünsche!! Sie haben gerade gelernt, Ihren eigenen benutzerdefinierten Befehl zu erstellen!

Dies ist nur der Anfang. Sie können sich eingehender mit Shell-Skripten befassen, die Verwendung von Variablen, Schleifen und if-Bedingungen sowie das Erstellen neuer Befehle und das Hinzufügen neuer Funktionen in dieser Datei (my_custom_commands.sh).

Hier ist ein praktischer benutzerdefinierter Befehl, den ich kürzlich zum Herunterladen von MP3-Dateien von einer öffentlichen YouTube-Video-URL erstellt habe.

# konvertiert und speichert YouTube-Videos in MP3
Funktion convert_to_mp3 () {
  youtube-dl --extract-audio --audio-format mp3 $ 1
}

Du musst zuerst die youtube-dl- und ffmpeg-Bibliothek installieren, wenn du sie nicht hast. Kopieren Sie dann die folgende Funktion in die Datei mit den benutzerdefinierten Befehlen. Laden Sie das Terminal neu oder gehen Sie zu einer neuen Registerkarte und versuchen Sie den folgenden Befehl:

convert_to_mp3 'https://youtube.com/{{youtube_url_of_some_song}}'

Versuchen Sie, die Bibliothek zu aktualisieren, indem Sie youtube-dl -U ausführen, wenn Sie sie bereits haben und einen Fehler auslösen.

Verweise:
- Steuerdateien ausführen
- Bash Script