Alias ​​vs. Funktion in Bash-Skripten

11

Ich möchte den Unterschied zwischen Aliasen und Funktionen in der Bash-Shell kennen - und wann welche verwendet werden sollen.

Da Funktionen Argumente annehmen können, sind sie offensichtlich viel leistungsfähiger. Da ich hauptsächlich mit einem Netbook unterwegs bin und Energie und Rechenleistung sparen möchte, möchte ich insbesondere etwas mehr über die Leistungsunterschiede erfahren Davon sind zwei Möglichkeiten zur Erweiterung der Bash-Funktionalität.

MaxAxeHax
quelle
1
Keine Notwendigkeit, sich selbst zu erniedrigen. Wenn Ihre Frage nicht gewünscht wird, wird sie abgelehnt. Und wenn jemand möchte, dass Sie Ihre Frage klären, wird er dies in einem Kommentar sagen. Und das Verbot, dass Leute Ihren Beitrag bearbeiten, verfehlt den Punkt. Diese Seite ist so konzipiert, dass alles für alle bearbeitet werden kann.
k0pernikus
Ich habe nicht versucht, es zu verbieten, sondern bitte darum, mir die Möglichkeit zu geben, zu klären, ob sie es für notwendig halten. Ich habe die Erfahrung gemacht, sehr einfache Fragen zu Themen zu stellen, über die ich wenig weiß, und dann haben die Leute gedacht, dass es völlig offensichtlich ist, dass ich nach etwas Komplexerem frage und mich korrigiere, weil ich nicht weiß, wie ich nach dem fragen soll, was ich will . Natürlich ist einer der großen Vorteile dieser Plattform die Tatsache, dass sie von Kollegen bearbeitet werden kann. Ich habe nicht versucht, dies zu untergraben. Vielen Dank für Ihr Feedback, brachte mich zum Nachdenken :)
MaxAxeHax
Mögliches Cross-Site-Duplikat von: unix.stackexchange.com/questions/30925/…
Ciro Santilli 16 改造 中心 法轮功 六四

Antworten:

10

Stellen Sie sich Aliase als Spitznamen vor. Möglicherweise haben Sie einen Befehl, den Sie häufig ausführen, den Sie jedoch verkürzen möchten.

Beispielsweise möchten Sie häufig direkt in der Befehlszeile zum Desktop wechseln, damit Sie dies tun können

alias desktop="cd ~/Desktop"

Von da an tippen Sie einfach

desktop

im Terminal und es wird das cd ~/Desktopfür Sie durchführen.

Funktionen enthält Logik. In einer Funktion können Sie mehrere verschiedene Programme aufrufen. Hier ist eine einfache Echofunktion

function e {
                echo $1 
                echo $1 $1
                echo $1 $1 $1                 
           }  

Während es einem Alias ​​ähnlich erscheint, wenn Sie es aufrufen

e Hello

In Ihrem e () können viele verschiedene Dinge passieren. Das Obige ist ein vereinfachtes Beispiel.

Aliase sollten für einfache Anwendungsfälle reserviert werden. Persönliches Beispiel - Ich habe meinen rmBefehl so ersetzt

alias rm='trash-put'

Immer wenn ich einen RM mache, wird er in den Papierkorb verschoben, anstatt ihn von der Festplatte zu löschen. Dies trägt meiner Ungeschicklichkeit im Terminal Rechnung, wo ich (manchmal) versehentlich eine wichtige Datei löschen kann.

Funktionen , an die Sie sich erinnern müssen, sind logische Elemente. Normalerweise würden Sie keine eigenständige Funktion verwenden. Es wäre Teil eines größeren Skripts. Stellen Sie sich ein Skript vor, das alle Ihre Dateien aufnimmt und sie in ihre Schweinelateinversionen umbenennt. Ignorieren Sie, dass es verschiedene Möglichkeiten gibt.

Sie können jedoch jede Datei im Verzeichnis durchlaufen und den Dateipfad an Ihre RenameAsPigLatin-Funktion übergeben. Die RenameAsPigLatin-Funktion verfügt möglicherweise über eine zusätzliche Logik für Zahlen, bei der Sie entscheiden, dass Dateien, die mit Zahlen enden, nicht umbenannt werden sollen.

Sie können sofort den Vorteil einer Funktion erkennen. Die Funktion kann sich auf das Umbenennen nach Ihren seltsamen Regeln konzentrieren, während der Rest des Skripts nach Bedarf verschiedene Verzeichnisse durchlaufen kann.

Mendhak
quelle
2
Meiner Meinung nach gibt es viele Gründe, eigenständige Funktionen zu verwenden. Tatsächlich habe ich eine Reihe von Funktionen zusammen mit meinen Aliasnamen definiert. Zum Beispiel habe ich die CD durch eine gleichnamige Funktion ersetzt, damit sie nach jeder CD automatisch ein ls ausführen kann, ohne die Funktionalität zu beeinträchtigen. Dies ist mit einem Alias ​​nicht möglich, da ein wenig Logik erforderlich ist.
Scott Severance
3

Ein Alias ​​ist eine einfache Verknüpfung, die in einer Konsole verwendet wird, um zu vermeiden, dass lange Befehle eingegeben oder immer dieselben Optionen wiederholt werden.

Ein klassisches Beispiel wäre:

alias ll='ls -l'

Alias ​​funktionieren nur in einer interaktiven Konsole. Sie sind nicht für die Verwendung in Skripten vorgesehen.

Funktionen können in Skripten oder in der Konsole verwendet werden, werden jedoch häufiger in Skripten verwendet.

Im Gegensatz zu Aliasen, die nur durch ihren Wert ersetzt werden, wird eine Funktion von der Bash-Shell interpretiert.

Funktionen sind viel leistungsfähiger als Aliase. Sie können zum Erstellen sehr komplexer Programme verwendet werden.

wjandrea
quelle