Wie erstellt man Aliase und Shell-Funktionen unter Linux?

Die Kenntnis der Eingabeaufforderungen und Shell-Skripte ist immer noch erforderlich, wenn Sie das GNU/Linux-System optimal nutzen möchten und je mehr man an der Befehlszeile arbeitet, desto mehr wird man feststellen, dass die Mehrheit der verwendeten Befehle sehr kleine Teilmenge der verfügbaren Befehle. Die meisten Aufgaben sind gewohnheitsmäßig und der Benutzer kann diese jeden Tag auf die gleiche Weise ausführen.

Während die Hersteller vieler der gebräuchlichsten Befehlsdienstprogramme versucht haben, überflüssige Typisierung durch Verwendung verkürzter Namen, z. anstelle der Liste geben wir “ls"& Anstelle von change-directory geben wir"CD”. Darüber hinaus müssen viele Linux-Benutzer häufig immer wieder einen Befehl verwenden. Das wiederholte Eingeben / Kopieren desselben Befehls verringert die Produktivität und lenkt den Benutzer von der eigentlichen Arbeit ab.

Es wäre großartig, wenn wir weniger Zeit damit verbringen würden, diese langen Befehle einzugeben. Wir haben zwei leistungsstarke Möglichkeiten, um Ihre Zeit an der Befehlszeile zu minimieren: Shell-Aliase und Funktionen, Mithilfe dieser beiden Optionen kann der Benutzer sich wiederholende Aufgaben zähmen, langwierige Prozesse verkürzen und benutzerdefinierte Befehle mit den Optionen konfigurieren, die der Benutzer immer verwendet und an die er sich nur schwer erinnern kann.

Sie können Ihre Befehle entsprechend Ihren spezifischen Anforderungen definieren und sich wiederholende Aufgaben entlasten.

Aliase und Shell-Skripte, d. H. Funktionen, erledigen die gleiche Aufgabe. Mit ihnen können Sie eine Reihe von Bash-Shell-Funktionen definieren und benennen, die dann unter dem Namen aufgerufen werden können, den Sie ihr gegeben haben. Das Eingeben des Namens ist einfacher und bequemer, als alle Schritte oder Befehle jedes Mal eingeben zu müssen, wenn Sie sie verwenden möchten.

Der Unterschied zwischen einem Alias ​​und einer Funktion besteht in der Komplexität und Skalierbarkeit. Skripte sind besser darin, längere und aufwändigere Codestücke zu speichern. Aliase eignen sich perfekt für kürzere, prägnantere Befehlssätze.

Shell Aliase

Ein Shell-Alias ​​ist eine benutzerdefinierte Verknüpfung zum Verweisen auf einen Befehl oder eine Reihe von Befehlen, die mit oder ohne benutzerdefinierte Optionen ausgeführt werden. Diese Aliase sind alternative, leicht zu merkende Namen für lange Befehle, die Sie häufig ausführen müssen. Wenn Sie in der Befehlszeile eingeben, sucht die Shell zuerst nach dem, was Sie in ihrer Liste der Aliase geschrieben haben. Wenn eine Übereinstimmung gefunden wird, wird diese durch den Alias ​​mit dem entsprechenden Text ersetzt. Danach wird die gesamte resultierende Befehlszeile erneut angezeigt und ausgeführt.

Möglicherweise haben Sie das bereits verwendet Decknamen auf dem Linux-System, da die meisten Linux-Distributionen standardmäßig mindestens einige der gängigen Aliase in „.bashrc ” Datei des Benutzerkontos.

Über Aliase hinaus: Shell-Funktionen

Blöcke mit ähnlichen, aber nicht identischen Codes können nicht durch Aliase ersetzt werden. Sie können keine Fehler behandeln oder benutzerdefinierte Exit-Codes zurückgeben, keine Flusskontrolle durchführen oder Variablen verwenden. Wenn Sie eine dieser Aufgaben ausführen müssen, ist es an der Zeit, Shell-Funktionen zu verwenden.

Shell-Funktionen sind Codeblöcke, die als vollständige Unterskripte strukturiert sind, einmal geschrieben und von jedem Skript aufgerufen werden, das sie benötigt.

Syntax von Aliasen:

Das Erstellen von Aliasnamen in Bash ist sehr einfach. Die Syntax lautet wie folgt:

alias alias_name = ”command_to_run”

So erstellen Sie einen neuen Bash-Alias ​​in der aktuellen Sitzung

  1. Schreib die "alias
  2. Dann deklarieren Sie den Aliasnamen
  3. Gefolgt von einem Gleichheitszeichen
  4. Und der Befehl, der ausgeführt wird, wenn der Alias ​​aufgerufen wird.

Der Befehl muss in Anführungszeichen und ohne Leerzeichen um das Gleichheitszeichen stehen. Leerzeichen hier brechen den Befehl. Jeder Alias ​​muss in einer neuen Zeile deklariert werden.

Lassen Sie es uns anhand des Beispiels verdeutlichen. In der Linux-Befehlszeile lautet einer der am häufigsten verwendeten Befehle „ls”. Meistens wird der Befehl „ls“ mit dem „laSchalter, der alle Dateien und Verzeichnisse mit versteckten Dateien im Format der langen Liste auflistet. Jetzt erstellen wir einen einfachen Bash-Alias ​​“ll”, Die eine Abkürzung zum sein wirdls -la Befehl.

  1. Öffne ein Terminalfenster
  2. Art:
    alias ll = "ls -la"

    & Drücken Sie eingeben

  3. Geben Sie jetzt in der Konsole „ll" und drücke eingeben
  4. Die Ausgabe ist dieselbe wie durch Eingabe von ls -la.

Der oben definierte Alias ​​"ll" ist nur in der aktuellen Shell-Sitzung verfügbar. Wenn Sie die Sitzung schließen oder ein neues Sitzungsfenster von einem anderen Terminal aus starten, steht der oben definierte Alias ​​„ll“ nicht zur Verfügung.

Wir werden später darauf eingehen, wie der Alias ​​dauerhaft gemacht werden kann. Die Beispiele hier gelten für die Bash-Shell, aber alle Konzepte und der größte Teil des Codes gelten auch für andere Shells.

Vordefinierte Aliase

Einige Aliase sind für Sie vordefiniert. Um die Liste aller im System definierten Aliase zu kennen, verwenden wir den Befehl "alias" ohne Parameter:

alias

Dies sind die Aliase auf der Ubuntu-Testmaschine, auf der dieser Artikel untersucht wurde. Außerdem werden alle benutzerdefinierten Aliase in dieser Liste angezeigt.

Es gibt eine Reihe verschiedener Aliase für den Befehl ls und eine Gruppe von Aliasen, die der grep-Befehlsfamilie, z. mit wie oben definierten Aliasen, wann immer Sie Folgendes eingeben:

grep

Es wird interpretiert als:

grep --color = auto

Dies zeigt einen wichtigen Punkt bei Aliasen. Sie können denselben Namen haben wie vorhandene Befehle. Sie können sogar den ursprünglichen Befehl in sich enthalten.

Hier ist die Definition des Grep-Alias.

alias grep = 'grep --color = auto'
  1. Mit dem Befehl alias wird ein Alias ​​definiert.
  2. Als nächstes wird der Name des Alias ​​angegeben. In diesem Beispiel ist es "grep".
  3. Das Gleichheitszeichen verbindet den Namen des Alias ​​mit demKörper des Alias. Bei allen außer sehr einfachen Aliasnamen wird der Rumpf des Aliasnamens in einfache Anführungszeichen eingeschlossen.
  4. Der Rumpf des Alias ​​ist der Abschnitt, der ausgeführt wird, wenn der Alias ​​in der Befehlszeile verwendet wird.
  5. Der Hauptteil dieses Alias ​​ruft einfach den Befehl grep mit der Option –color = auto auf.

Der Alarmalias

Oben in der Liste befindet sich ein kompliziert aussehender Alias ​​namensaufmerksam. Nebenbei bemerkt und damit Sie wissen, was es tut, wird der Alarmalias verwendet, um Sie zu informieren, wenn ein Befehl beendet wurde. Es zeigt auch an, ob der Befehl erfolgreich abgeschlossen wurde oder nicht. Es bietet eine grafische Systemwarnung am oberen Bildschirmrand.

Hier ist ein einfaches Beispiel. Der Schlafbefehl wird fünf Sekunden lang in den Ruhezustand versetzt. Der Alarmalias wird dann aufgerufen. Der Alias ​​überprüft die Antwort des vorherigen Befehls. Es extrahiert den letzten Befehl aus der History-Datei. Es bestimmt, ob der Befehl erfolgreich ausgeführt wurde oder nicht. Anschließend werden die Ergebnisse in einer Systemwarnung angezeigt.

Wenn der Befehl wie erwartet ausgeführt wurde, ist das Symbol in der Systemwarnung ein kleines Terminalfenster. Wenn der Befehl einen Fehlercode zurückgegeben hat, ist das Symbol in der Systemwarnung ein rotes Fehlersymbol.

Schlaf 5; aufmerksam

Nach fünf Sekunden sehen wir diese Systemwarnung:

Das Symbol ist ein kleines Terminalfenster, was bedeutet, dass alles gut gelaufen ist. Versuchen wir es noch einmal mit einem Befehl, von dem wir wissen, dass er fehlschlägt:

DoomedToFail; aufmerksam

Unsere Systemwarnung hat jetzt ein Fehlersymbol.

Definieren eines Trivial-Alias

Wie wir gesehen haben, verwenden wir zum Definieren eines Alias ​​den Befehl alias.

Wir werden ein Pseudonym für den Befehl clear erstellen. Unser Alias ​​heißt cls und ruft den clear-Befehl auf.

Unsere Alias-Definition ist so trivial, dass es nicht gerechtfertigt ist, in einfache Anführungszeichen gesetzt zu werden. Wenn der Hauptteil des Alias ​​komplexer ist oder Leerzeichen enthält, setzen Sie ihn in einfache Anführungszeichen. Wir definieren den Alias, verwenden ls, um eine Ausgabe in das Terminalfenster einzufügen, und verwenden dann unseren neuen Alias ​​cls, um den Bildschirm zu löschen.

alias cls = clear ls -l cls

Der Bildschirm wird gelöscht. Erfolg, wenn auch nur von kurzer Dauer. Der Alias ​​bleibt nur so lange erhalten, wie dieses Terminalfenster geöffnet bleibt. Sobald das Fenster geschlossen ist, verschwindet der Alias.

So machen Sie Aliase mithilfe der Datei ".bashrc" dauerhaft

Sie fragen sich vielleicht, wo die vorgefertigten Aliase definiert sind. Es befindet sich in der Datei ".bashrc" in Ihrem Home-Ordner. Diese Datei wird gelesen und die darin enthaltenen Befehle werden ausgeführt, wenn Sie eine interaktive Shell starten. Dann öffnen Sie ein Terminalfenster.

Geben Sie den folgenden Befehl in Ihren Home-Ordner ein, um den Inhalt der Datei ".bashrc" mit Syntaxhervorhebung anzuzeigen.

gedit .bashrc

Dadurch wird diegeditEditor mit der darin geladenen Datei ".bashrc".

Die hervorgehobenen Bereiche zeigen zwei Bereiche, in denen Aliase definiert sind.

Wenn Sie durch das Dokument scrollen, werden zwei weitere Abschnitte angezeigt, die sich auf Aliase beziehen:

Die erste davon ist die Definition des Alarmalias. Die zweite ist eine if-Anweisung. Es bedeutet "wenn die Datei".bash_aliases"Existiert, lies es ein."

Wenn Sie nur wenige Aliase haben, die Sie definieren möchten, können Sie diese in Ihre ".bashrc" -Datei einfügen. Stecken Sie sie unter den Abschnitt, der die ls-Aliase enthält.

Wenn Sie viele Aliase erstellen möchten oder einfach nur die Idee mögen, Ihre Aliase in der eigenen Datei zu kapseln, können Sie sie in Ihrer Datei ".bash_aliases" definieren. Ein Vorteil beim Erstellen in Ihrer ".bash_aliases" -Datei besteht darin, dass Sie keine der Einstellungen in der ".bashrc" -Datei versehentlich ändern können. Ein weiterer Vorteil ist, dass Ihre Aliase leicht auf neue Systeme kopiert werden können, da sie von der Datei ".bashrc" getrennt sind.

Der Alias ​​sollte so benannt werden, dass er leicht zu merken ist. Es wird auch empfohlen, einen Kommentar zum späteren Nachschlagen hinzuzufügen.

Speichern von Aliasen in der .bash_aliases-Datei

Die Datei „.bash_aliases“ existiert standardmäßig nicht, Sie müssen sie erstellen. Sie können die Datei mit dem folgenden Befehl erstellen:

Berühren Sie .bash_aliases

Lassen Sie uns die Datei bearbeiten und einige Aliase hinzufügen. Dieser Befehl öffnet die Datei ".bash_aliases" im gedit-Editor.

gedit .bash_aliases

Wir haben drei Aliase hinzugefügt. Der erste ist unserclsAlias, den wir früher verwendet haben. Der nächste heißth. und ist eine Kurzform zum Aufrufen des Befehls history.

Der dritte Alias ​​heißtftc. Dies steht für "Dateitypanzahl".

Dieser Alias ​​ist aufwendiger und wird daher in einfache Anführungszeichen gesetzt. Es verwendet eine Befehlskette, die durch Pipes miteinander verbunden sind. Es wird eine sortierte Liste der verschiedenen Dateierweiterungen und Verzeichnisnamen mit einer Anzahl für jeden Listeneintrag erstellt.

Wenn wir die Datei „.bash_aliases“ gespeichert haben, erwarten wir möglicherweise, dass unsere Aliase live und zugänglich sind. Das ist nicht der Fall. Die Datei muss von der Bash-Shell eingelesen werden, bevor die Aliasdefinitionen aktiv sind. Dies erfolgt immer dann, wenn eine interaktive Shell geöffnet wird.

Wir können auch die integrierte Bash-Shell verwenden. um die Befehle in einer Datei zu lesen und auszuführen. Da unsere Datei ".bash_alias" bei der Verarbeitung von ".bashrc" eingelesen wird, sollten wir unseren Test durch Aufrufen von ".bashrc" durchführen. Auf diese Weise können wir überprüfen, ob die Datei ".bash_alias" von ".bashrc" aufgerufen wird und ob unsere Aliase lebendig und in Ordnung sind.

Die Befehle, die wir verwendet haben, sind:

gedit .bash_aliases

So bearbeiten Sie die Datei ".bash_aliases".

. .bashrc

Dadurch werden die Befehle in ".bashrc" eingelesen und ausgeführt, wodurch ".bash_aliases" aufgerufen wird.

ftc

Dadurch wird der FTC-Alias ​​aufgerufen.

Unser Alias ​​antwortet, was bedeutet, dass Bash sowohl ".bashrc" als auch ".bash_aliases" gelesen hat und unsere neuen Aliase jetzt aktiv sind.

Sie können jetzt fortfahren und der Datei ".bash_aliases" neue Aliase hinzufügen, sobald sie Ihnen einfallen. Wenn Sie feststellen, dass Sie Dinge mehr als ein- oder zweimal tun, sollten Sie einen Alias ​​dafür erstellen.

Aliase entfernen

Es gibt einen Befehl zum Entfernen von Aliasnamen, damit Bash sie nicht erkennt und nicht darauf reagiert. Erfrischend direkt wird der Befehl aufgerufenUnalias.

Um es zu verwenden, geben Sie den Namen des Alias ​​ein, den Bash vergessen soll. Verwenden Sie Unalias, z. das bisher verwendete “ll" Befehl:

unalias ll

Sie können Unalias verwenden, um von Ihnen definierte Aliase und alle vordefinierten Aliase zu entfernen.

Um alle Aliase von Ihrem System zu entfernen, verwenden Sie die Option -a (all):

unalias -a

Bashs Gedächtnisverlust wird jedoch nicht dauerhaft sein. Wenn Sie das nächste Mal ein Terminalfenster öffnen, sind die „vergessenen“ Aliase wieder da. Um sie wirklich zu löschen, müssen Sie sie aus Ihren „.bashrc“- und „.bash_alias“-Dateien entfernen.

Wenn Sie glauben, dass Sie sie jemals wieder haben möchten, löschen Sie sie nicht aus Ihrer ".bashrc" -Datei. Kommentieren Sie sie stattdessen aus, indem Sie am Anfang jeder Alias-Zeile eine Raute # hinzufügen. Benennen Sie die Datei ".bash_alias" um, um sie unwirksam zu machen. Wenn Ihre ".bashrc" -Datei sie nicht sehen kann, wird sie nicht eingelesen. Das Umkehren dieser Schritte zum Wiederherstellen Ihrer Aliase ist eine triviale Angelegenheit.

Um einen Alias ​​vorübergehend zu umgehen (sagen wir, wir haben ls auf ls -a aliasiert), können wir Folgendes eingeben:

\ ls

Infolgedessen würde der normale Befehl aufgerufen, nicht die Alias-Version.

Hilfe für Alias-Befehl:

  • –Hilfeoption: Es werden Hilfeinformationen angezeigt.

Syntax:

alias --help

Shell-Funktionen

Manchmal ist ein Alias ​​erforderlich, der ein oder mehrere Argumente akzeptieren kann, wenn Bash-Funktionen verwendet werden.

Syntax

Das Erstellen einer Bash-Funktion ist nicht sehr schwierig. Sie können in einem der folgenden zwei verschiedenen Formate deklariert werden:

Funktionsname () {[Befehle]}

oder

Funktion Funktionsname {[Befehle]}

Wir können dieses zweite Formular in eine Zeile komprimieren und die Befehle durch Semikolons trennen. Ein SemikolonMuss kommt auch nach dem letzten Befehl:

Funktionsname () {Befehl1; Befehl2; }}

Lika-Aliase, Bash-Shell-Funktionen können in der Datei ".bashrc" definiert werden, aber es ist oft ordentlicher, sie in ihre eigene Definitionsdatei einzufügen. Wir nennen es ".bash_functions", gemäß der Konvention, die für die Datei ".bash_aliases" verwendet wird.

Das heißt, wir müssen der Datei ".bashrc" mitteilen, dass sie unsere Definitionen einlesen soll. Wir können den Codeausschnitt kopieren und ändern, der in der Datei ".bash_aliases" gelesen wird. Starten Sie gedit und laden Sie die Datei ".bashrc" mit folgendem Befehl:

gedit .bashrc

Sie müssen den unten gezeigten hervorgehobenen Abschnitt hinzufügen.

Sie können den Alias-Bereich markieren und Strg + C drücken. Gehen Sie dann zu der Stelle, an der Sie den neuen Abschnitt möchten, und drücken Sie Strg + V, um eine Kopie des Texts einzufügen. Dann müssen Sie nur noch die beiden Stellen ändern, an denen ".bash_aliases" in ".bash_functions" steht.

Wir können diese Änderungen speichern und gedit schließen.

Jetzt erstellen und bearbeiten wir die Datei ".bash_functions" und fügen eine Funktionsdefinition hinzu.

Berühren Sie .bash_functions gedit .bash_functions

Dadurch wird die leere Datei „.bash_functions“ in gedit geöffnet.

Wir werden eine einfache Funktion hinzufügen, die aufgerufen wird. up verwendet einen einzelnen Befehlszeilenparameter, bei dem es sich um eine Ziffer handelt. up ruft dann so oft cd auf. Also, wenn Sie den Befehl verwendet haben

bis 2

up würde cd .. zweimal aufrufen und zwei Ebenen im Verzeichnisbaum nach oben verschieben.

Es gibt verschiedene Möglichkeiten, eine Funktion zu definieren. Hier ist eine:

Funktion auf () {

Die Wortfunktion ist optional. Wenn Sie ein Traditionalist sind, verwenden Sie es. Wenn Sie sich nicht die Mühe machen müssen, es einzutippen, lassen Sie es weg.

Hier ist unsere gesamte Funktion in gedit:

Funktion nach oben () {

Dies markiert den Beginn unserer Funktionsdefinition und benennt die Funktion nach oben.

Stufen=$1

Dadurch wird eine Variable namens aufgerufenEbenen und setzt ihn auf den Wert des ersten Parameters. Dieser Parameter ist eine Ziffer, die der Benutzer beim Aufrufen der Funktion angibt. $ 1 bedeutet "erster Befehlszeilenparameter".

während ["$ Levels" -gt "0"]; tun

Wir geben dann eine Schleife ein, die dann übersetzt wird als „wenn die“Wert" von "Ebenen"Ist positiv oder größer als Null, tun Sie, was im Körper der Schleife enthalten ist."

Innerhalb des Schleifenkörpers haben wir zwei Befehle. Sie sind:

cd ..

Verschieben Sie eine Ebene im Verzeichnisbaum nach oben.

Stufen=$(($Stufen - 1))

Stellen Sie die Pegel auf einen neuen Wert ein, der um einen Wert unter dem aktuellen Wert liegt.

Wir kehren dann zum Anfang der Schleife zurück, der Vergleich zwischen dem Wert der Ebenen und Null wird noch einmal durchgeführt. Wenn "Ebenen" größer als Null ist, wird der Hauptteil der Schleife erneut ausgeführt. Wenn es nicht positiv oder größer als Null ist, ist die Schleife beendet, und wir gehen zur Anweisung done durch, und die Funktion ist beendet.

speichern diese Änderungen und schließengedit.

Wir werden die Befehle in ".bashrc" einlesen und ausführen, die die Befehle in unserer Datei ".bash_functions" einlesen und ausführen sollen.

. .bashrc

Wir können die Funktion testen, indem wir uns an eine Stelle im Verzeichnisbaum bewegen und mit up zu einem „höheren“ Punkt im Verzeichnisbaum zurückkehren.

cd ./work/backup/ up 2

Die Funktion funktioniert. Wir haben zwei Verzeichnisebenen höher im Baum verschoben.

Mit Typ den Überblick behalten

Wenn Sie eine Suite von Aliasen und eine Bibliothek von Funktionen erstellen, kann es schwierig werden, sich zu merken, ob ein bestimmter Befehl ein Alias ​​oder eine Funktion ist. Du kannst den ... benutzen "Art" Befehl, um Sie daran zu erinnern. Das Coole hier ist, dass man auch die Definition sieht.

Verwenden wir type für unsereftcAlias ​​und unsere Up-Funktion.

Typ ftc Typ up

Wir erhalten eine sehr nützliche Erinnerung daran, um welche Art von Befehl es sich handelt, zusammen mit ihren Definitionen.

Sammeln Sie

Aliase und Funktionen können die Verwendung der Befehlszeile erheblich beschleunigen. Sie können Befehlssequenzen verkürzen und Sie können die Optionen einbinden, die Sie immer mit Standardbefehlen verwenden. Jedes Mal, wenn Sie eine raffinierte Einzeiler- oder nützliche Funktion sehen, können Sie sie anpassen und personalisieren und sie dann zu Ihren ".bash_aliases" - oder ".bash_functions" -Dateien hinzufügen. Eine umfassende Verwendung dieser Funktionen kann dazu beitragen, Ihre Zeit in der Shell angenehmer und weniger komplex zu gestalten.

Denken Sie daran, vorhandene Befehle mit potenziell destruktiven Verhaltensweisen neu zu definieren.Selbst das Gegenteil und ein Aliasing eines Befehls zu einer sichereren Variante (zum Beispiel immer nach Bestätigung fragen, bevor rekursiv gelöscht wird), kann Sie beim ersten Mal, wenn Sie sich auf einem System ohne es befinden, wieder beißen, wenn Sie sich darauf verlassen haben . Um Kandidaten zu finden, für die möglicherweise Aliase erstellt werden können, ist es möglicherweise eine gute Idee, Ihren Verlauf nach Ihren am häufigsten verwendeten Befehlen zu durchsuchen.

Facebook Twitter Google Plus Pinterest