Fatmawati Achmad Zaenuri/Shutterstock.com
Erstellen Sie Ihre eigenen Linux-Befehle mit Aliasen und Bash-Shell-Funktionen. Zähmen Sie sich wiederholende Aufgaben, kürzen Sie langwierige Prozesse und konfigurieren Sie Standardbefehle mit den Optionen, die Sie immer verwenden und sich nur schwer merken können.
Aliase und Shell-Skripte sind leistungsstarke Techniken in Linux- und Unix-ähnlichen Betriebssystemen, die es Ihnen ermöglichen, Ihre Befehlszeilenerfahrung so zu verbessern, dass sie genau das ist, was Sie wollen. Sie können Ihre eigenen Befehle definieren, die Ihren spezifischen Anforderungen entsprechen und sich wiederholende Aufgaben erleichtern.
Aliase und Shell-Skripte machen die gleiche Art von Arbeit. Sie ermöglichen es Ihnen, eine Reihe von Bash-Shell-Funktionen zu definieren und zu benennen, die dann mit dem von Ihnen angegebenen Namen aufgerufen werden können. Das Eingeben des Namens ist einfacher und bequemer, als jedes Mal alle Schritte oder Befehle eingeben zu müssen, wenn Sie sie verwenden möchten.
Der Unterschied zwischen einem Alias und einem Skript liegt in der Komplexität und dem Umfang. Skripte sind besser darin, längere und aufwändigere Code-Blöcke zu speichern. Aliase sind perfekt, um kürzere, prägnantere Befehlssätze zu halten.
Vordefinierte Aliase
Einige Aliase sind für Sie vordefiniert. Um die Liste der in Ihrem System definierten Aliase anzuzeigen, verwenden Sie den Befehl alias ohne Parameter:
alias

Dies sind die Aliase, die auf dem Ubuntu-Testcomputer definiert sind, über den dieser Artikel recherchiert wurde. Wenn ich benutzerdefinierte Aliase definiert hätte, würden diese auch in dieser Liste angezeigt.
Ganz oben in der Auflistung steht ein kompliziert aussehender Alias namens alert
. Dazu kommen wir gleich. Es gibt eine Reihe verschiedener Aliase für die ls
Befehl, und es gibt eine Gruppe von Aliasnamen, die eine Farbausgabe an die grep
Familie von Befehlen. Beispielsweise mit diesen definierten Aliasnamen, wenn Sie Folgendes eingeben:
grep
Das System interpretiert es als:
grep --color=auto
Dies zeigt einen wichtigen Punkt mit Aliasen. Sie können denselben Namen wie vorhandene Befehle haben. Sie können sogar den ursprünglichen Befehl in sich selbst enthalten.
Hier ist die Definition von grep
alias.
alias grep='grep --color=auto'
- Das
alias
Befehl wird verwendet, um einen Alias zu definieren.
- Als nächstes wird der Name des Alias angegeben. In diesem Beispiel ist es
grep
.
- Das Gleichheitszeichen verbindet das des Alias mit dem des Alias. Bei allen außer sehr einfachen Aliasnamen wird der Rumpf des Aliasnamens in einfache Anführungszeichen eingeschlossen
'
.
- Der Rumpf des Alias ist der Abschnitt, der ausgeführt wird, wenn der Alias in der Befehlszeile verwendet wird.
Der Körper dieses Alias ruft einfach die grep
Befehl mit dem --color=auto
Möglichkeit.
Der Benachrichtigungs-Alias
Zur schnellen Seite und damit Sie wissen, was es tut, die alert
Alias wird verwendet, um Sie wissen zu lassen, wenn ein Befehl beendet wurde. Es zeigt auch an, ob der Befehl erfolgreich abgeschlossen wurde oder nicht. Es bietet eine grafische Systemwarnung am oberen Rand des Bildschirms.
Hier ist ein einfaches Beispiel. Das sleep
Befehl schläft fünf Sekunden lang., Der alert
alias 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 abgeschlossen wurde oder nicht. Anschließend präsentiert es die Ergebnisse in einer Systemwarnung.
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.
sleep 5; alert

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 fehlschlagen wird:
DoomedToFail; alert

Unsere Systemwarnung hat jetzt ein Fehlersymbol.

Definieren eines trivialen Alias
Wie wir gesehen haben, verwenden wir zum Definieren eines Alias die alias
Befehl.
Wir erstellen ein Pseudonym für die clear
Befehl. Unser Alias wird aufgerufen cls
und es wird die rufen clear
Befehl.
Unsere Alias-Definition ist so trivial, dass sie nicht in einfache Anführungszeichen eingeschlossen werden muss. Wenn der Rumpf des Alias komplexer ist oder Leerzeichen enthält, schließen Sie ihn in einfache Anführungszeichen ein. Wir definieren den Alias, verwenden Sie ls
um etwas Ausgabe in das Terminalfenster zu geben und dann unseren neuen Alias zu verwenden 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 wird nur so lange überleben, wie dieses Terminalfenster geöffnet bleibt. Sobald das Fenster geschlossen wird, verschwindet der Alias.
Wie machen wir also unsere Aliase dauerhaft?
Die .bashrc-Datei und Aliase
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 ausgeführt, wenn Sie eine interaktive Shell starten. Das heißt, wenn Sie ein Terminalfenster öffnen.
Geben Sie den folgenden Befehl in Ihren Home-Ordner ein, um den Inhalt der Datei „.bashrc“ mit Syntaxhervorhebung anzuzeigen.
gedit .bashrc

Dies startet die gedit
Editor 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 zu Aliasen angezeigt:

Die erste davon ist die Definition von alert
alias. Das zweite ist ein if
Stellungnahme. Übersetzt heißt das: „Wenn die Datei „.bash_aliases“ existiert, lies sie ein.“
Wenn Sie nur wenige Aliase definieren möchten, können Sie diese in Ihre „.bashrc“-Datei einfügen. Stecken Sie sie unter den Abschnitt mit den ls
Aliase.
Wenn Sie viele Aliase erstellen oder einfach nur die Idee haben, Ihre Aliase in einer eigenen Datei zu kapseln, können Sie sie in Ihrer Datei „.bash_aliases“ definieren. Ein Vorteil der Erstellung in Ihrer „.bash_aliases“-Datei besteht darin, dass Sie die Einstellungen in der „.bashrc“-Datei nicht versehentlich ändern können. Ein weiterer Vorteil ist, dass Ihre Aliase leicht auf neue Systeme kopiert werden können, da sie vollständig von der „.bashrc“-Datei getrennt sind.
Speichern von Aliasen in der .bash_aliases-Datei
Die Datei „.bash_aliases“ existiert erst, wenn Sie sie erstellen. Sie können die Datei mit diesem Befehl erstellen:
touch .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 unser cls
Alias, den wir zuvor verwendet haben. Der nächste heißt h.
und ist eine Kurzform für die Bezeichnung history
Befehl.
Der dritte Alias heißt ftc
. Dies steht für „Dateitypanzahl“.
Dieser Alias ist komplizierter und wird daher in einfache Anführungszeichen eingeschlossen. Es verwendet eine Kette von Befehlen, die durch Pipes miteinander verbunden sind. Es erzeugt eine sortierte Liste der verschiedenen Dateierweiterungen und Verzeichnisnamen mit einer Zählung für jeden Listeneintrag.
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 Alias-Definitionen live sind. Dies geschieht immer dann, wenn eine interaktive Shell geöffnet wird.
Wir können auch die integrierte Bash-Shell verwenden .
zu die Befehle lesen und ausführen in einer Datei. Da unsere Datei „.bash_alias“ bei der Verarbeitung von „.bashrc“ eingelesen wird, sollten wir unseren Test mit dem Aufruf von „.bashrc“ durchführen. Auf diese Weise können wir überprüfen, ob die Datei „.bash_alias“ von „.bashrc“ aufgerufen wird und dass unsere Aliase lebendig und gesund sind.
Die von uns verwendeten Befehle sind:
gedit .bash_alias
Um die Datei „.bash_alias“ zu bearbeiten.
. .bashrc
Dadurch werden die Befehle innerhalb von „.bashrc“ eingelesen und ausgeführt, wodurch „.bash_alias“ aufgerufen wird.
ftc
Das ruft die ftc
alias.

Unser Alias antwortet, was bedeutet, dass Bash sowohl «.bashrc» als auch «.bash_aliases» eingelesen hat und unsere neuen Aliase jetzt live sind.
Sie können nun fortfahren und der Datei „.bash_aliases“ neue Aliase hinzufügen, sobald Ihnen diese einfallen. Wenn Sie feststellen, dass Sie Dinge mehr als ein- oder zweimal tun, sollten Sie einen Alias dafür erstellen.
Entfernen von Aliasnamen
Es gibt einen Befehl zu Aliase entfernen damit BAsh sie weder erkennt noch darauf antwortet. Erfrischend direkt heißt der Befehl unalias
.
Um es zu verwenden, geben Sie den Namen des Alias ein, den Bash vergessen soll. Um Bash unsere vergessen zu lassen ftc
alias, verwenden unalias
so was:
unalias ftc
Sie können verwenden unalias
um von Ihnen definierte Aliase und alle vordefinierten Aliase zu entfernen.
Um alle Aliase von Ihrem System zu entfernen, verwenden Sie die -a
(alle) Möglichkeit:
unalias -a
Der Speicherverlust von Bash 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 denken, dass Sie sie jemals wieder haben möchten, löschen Sie sie nicht aus Ihrer „.bashrc“-Datei. Kommentieren Sie sie stattdessen aus, indem Sie einen Hash hinzufügen #
zu jedem anfang alias
Linie. Um Ihre „.bash_alias“-Datei unwirksam zu machen, benennen Sie sie um. Wenn Ihre „.bashrc“-Datei sie nicht sehen kann, wird sie nicht eingelesen. Diese Schritte umzukehren, um Ihre Aliase wiederherzustellen, ist eine triviale Angelegenheit.
Shell-Funktionen
Lika-Aliasnamen, Bash-Shell-Funktionen können in der Datei „.bashrc“ definiert werden, aber es ist oft einfacher, sie in ihre eigene Definitionsdatei zu packen. Wir nennen es „.bash_functions“ und folgen dabei der Konvention, die für die Datei „.bash_aliases“ verwendet wird.
Das bedeutet, dass wir der Datei „.bashrc“ mitteilen müssen, dass sie unsere Definitionen einlesen soll. Wir können das Code-Snippet kopieren und ändern, das in der Datei „.bash_aliases“ gelesen wird. Start gedit
und laden Sie die Datei „.bashrc“ mit diesem Befehl:
gedit .bashrc

Sie müssen den unten gezeigten hervorgehobenen Abschnitt hinzufügen.
Sie können den Alias-Abschnitt markieren und drücken Ctrl+C
und gehen Sie dann zu der Stelle, an der Sie den neuen Abschnitt haben möchten, und drücken Sie Ctrl+V
um eine Kopie des Textes einzufügen. Dann müssen Sie nur noch die beiden Stellen, an denen „.bash_aliases“ steht, in „.bash_functions“ ändern.

Wir können diese Änderungen speichern und schließen gedit
.
Jetzt erstellen und bearbeiten wir die Datei „.bash_functions“ und fügen eine Funktionsdefinition darin ein.
touch .bash_functions
gedit .bash_functions

Dies öffnet die leere Datei „.bash_functions“ in gedit
.
Wir werden eine einfache Funktion namens . hinzufügen up
. up
nimmt einen einzelnen Befehlszeilenparameter, bei dem es sich um eine Ziffer handelt. up
werde dann anrufen cd ..
so oft. Also, wenn Sie den Befehl verwendet haben
up 2
up
würde nennen cd ..
zweimal und würde im Verzeichnisbaum zwei Ebenen nach oben springen.
Es gibt verschiedene Möglichkeiten, eine Funktion zu definieren. Hier ist eine:
function up() {
Das Wort function
es ist optional. Wenn Sie ein Traditionalist sind, verwenden Sie es, wenn Sie sich nicht die Mühe machen, es einzugeben, lassen Sie es weg.
Hier ist unsere gesamte Funktion in gedit
:

function up() {
Dies markiert den Beginn unserer Funktionsdefinition und benennt die Funktion up
.
levels=$1
Dies erzeugt eine Variable namens levels
und setzt ihn auf den Wert des ersten Parameters. Dieser Parameter ist eine Ziffer, die der Benutzer beim Aufrufen der Funktion bereitstellt. Das $1
bedeutet „erster Befehlszeilenparameter“.
while [ "$levels" -gt "0" ]; do
Wir treten dann in eine Schleife ein. Dies bedeutet übersetzt „während der Wert von levels
größer als Null ist, tun Sie, was im Schleifenkörper enthalten ist.“
Innerhalb des Schleifenkörpers haben wir zwei Befehle. Sie sind:
cd ..
Gehen Sie im Verzeichnisbaum eine Ebene nach oben.
levels=$(($levels - 1))
Satz levels
auf einen neuen Wert, der um eins kleiner ist als sein aktueller Wert.
Wir gehen dann zurück zum Anfang der Schleife, dem Vergleich zwischen dem Wert von levels
und Null wird noch einmal gemacht. Ob levels
größer als Null ist, wird der Schleifenkörper erneut ausgeführt. Wenn er nicht größer als Null ist, ist die Schleife beendet und wir gehen weiter zum done
-Anweisung, und die Funktion ist beendet.
Speichern Sie diese Änderungen und schließen Sie gedit
.
Wir werden die Befehle in „.bashrc“ einlesen und ausführen, die die Befehle in unserer „.bash_functions“-Datei einlesen und ausführen sollen.
. .bashrc

Wir können die Funktion testen, indem wir an eine Stelle im Verzeichnisbaum wechseln und verwenden up
um zu einem „höheren“ Punkt im Verzeichnisbaum zurückzukehren.
cd ./work/backup/
up 2

Die Funktion funktioniert. Wir sind im Baum um zwei Verzeichnisebenen nach oben verschoben.
Mit Typ den Überblick behalten
Wenn Sie eine Reihe von Aliasen und eine Funktionsbibliothek aufbauen, kann es schwierig werden, sich daran zu erinnern, ob ein bestimmter Befehl ein Alias oder eine Funktion ist. Du kannst den … benutzen type
Befehl um dich zu erinnern. Das Coole hier ist, dass Sie auch die Definition sehen.
Lass uns verwenden type
auf unserer ftc
alias und unser up
Funktion.
type ftc
type up

Wir erhalten eine sehr nützliche Erinnerung daran, welche Art von Befehl jeder einzelne ist, zusammen mit seinen Definitionen.
Fangen Sie an zu sammeln
Aliase und Funktionen können die Verwendung der Befehlszeile enorm beschleunigen. Sie können Befehlssequenzen verkürzen und Sie können die Optionen, die Sie immer mit Standardbefehlen verwenden, einbacken.
Jedes Mal, wenn Sie eine raffinierte Einzeiler- oder nützliche Funktion sehen, können Sie sie anpassen und personalisieren und dann zu Ihren „.bash_aliases“- oder „.bash_functions“-Dateien hinzufügen.