it-swarm.com.de

Sollte ich für jede Bash-Funktion einen Alias ​​erstellen?

Ich habe einen kurzen Kurs über Bash und Terminal absolviert. Eine der besten Methoden des Kurses bestand darin, für jede zu erstellende Funktion einen Alias ​​zu erstellen. Zum Beispiel, wenn ich eine Funktion hätte:

function e() { echo "$*"; }

Ich sollte auch einen Alias ​​erstellen:

alias e='e'

Denkst du, dass es Sinn macht und wenn ja, was ist die Begründung? Ich glaube, ich kann die Funktionen ausfindig machen und sie trotzdem ohne Aliase verwenden, so dass es irgendwie wie unnötige Arbeit aussieht.

5
Yos

Fall für Aliase

  • Aliase können sehr nützlich sein, wenn Sie einen längeren Befehl mit einem kurzen Namen bezeichnen möchten.
  • In der Rangfolge stehen Aliase über Funktionen. Wenn Sie also einen vorhandenen Namen für Ihre eigene Sitzung überschreiben möchten, verwenden Sie einen alias.

Argumente für Funktionen

  • Wenn Sie einen Befehl haben, für den das gleichzeitige Behandeln von einfachen und doppelten Anführungszeichen erforderlich ist, verwenden Sie Funktionen. Diejenigen, die mit sed oder awk viel zu tun haben, verstehen.
  • Wenn Sie sich auf eine lange Aufgabe beziehen möchten, die aus mehreren Befehlen besteht, die mit Variablen interagieren, verwenden Sie function. Im Allgemeinen befolge ich persönlich die Regel, dass es Zeit ist, eine Funktion zu verwenden, wenn mehr als 3 Befehle vorhanden sind.
  • Aliase können durch Anhängen von \ ausgeblendet werden. Dies ist nützlich für Systemadministratoren. Wenn Sie nicht möchten, dass Ihr Benutzer einen bestimmten Befehl ausführt, hat eine Funktion Vorrang vor dieser. Beispiel:

    $ ls
    serg says this command is a no-no
    $ \ls
    serg says this command is a no-no
    

    beachten Sie, dass der Benutzer /bin/ls weiterhin ohne Probleme ausführen kann. Dies ist also keine wirklich gute Sicherheitsmaßnahme. Ich würde sagen, die bessere Verwendung wäre als Wrapper für einen Befehl, bei dem Sie einen Header hinzufügen oder einige Informationen entfernen möchten.

  • Aus der Bash-Manpage: There is no mechanism for using arguments in the replacement text.If arguments are needed, a Shell function should be used. Während Sie also einfache Tricks ausführen können - so etwas wie alias e="echo"; e Hello -, möchten Sie eine Funktion, wenn Sie sich ausführlich mit Befehlszeilenargumenten befassen möchten.

Nach meiner persönlichen Erfahrung habe ich Funktionen weit mehr als nur Aliase verwendet. Sie sind wie Skripte, außer dass keine externen Dateien erstellt werden müssen - sie können alle in meinem ~/.bashrc leben. Das Zitieren und Referenzieren von Variablen wird weniger problematisch.

6
function e() { echo "$*"; }

Ich sollte auch einen Alias ​​erstellen:

alias e='e'

Das ist so, wie es ist, ziemlich dumm. Es hat keinen Sinn, einen Alias ​​einer Funktion zu definieren und ihm den gleichen Namen zu geben.

Ich würde denken, was sie meinten, war:

  • Geben Sie jeder Funktion einen beschreibenden Namen, der lang sein kann.
  • Und machen Sie einen kurzen Alias ​​für die Bequemlichkeit.
6
muru