Bevorzugen Sie Bash-Skripte oder Aliase für Verknüpfungen? [geschlossen]

8

Ich habe ein ~/binVerzeichnis (das sich in meinem befindet PATH), in dem ich viele kleine 1- oder 2-Zeilen-Skripte speichere. Einige von ihnen gehen einfach cdin ein Verzeichnis und führen einen Befehl für eine Datei aus, wie vimoder so. Ich habe aber auch viele Aliase in meiner .bash_aliasesDatei, die dem gleichen Zweck dienen.

Wie entscheiden Sie sich zwischen dem Schreiben eines kleinen Bash-Skripts und dem Schreiben eines Alias? Ist es überhaupt wichtig, welchen Weg Sie gehen?

Dan
quelle

Antworten:

5

Wenn ich sie häufig genug benutze, um den Aufwand zu gewährleisten, dass sie in jede Shell geladen werden. Ich werde sie als Funktionen aufschreiben.

Wenn sie projektspezifisch sind, schreibe ich sie möglicherweise als eine Reihe von Aliasnamen und Funktionen, die bei der Arbeit an diesem Projekt in eine Shell eingespeist werden können.

Nur wenn sie eigenständig arbeiten, wird in meinem ~ / bin etwas zu einem Skript. Es gibt einige Einzeiler, die im Grunde genommen Aliase sind, aber diese dienen zum Ausführen von anderen Orten als Shells (führen Sie beispielsweise Eingabeaufforderungen in anderen Programmen aus). Zum größten Teil müssen es sich um ziemlich umfangreiche Skripte handeln.

Caleb
quelle
1

Im Allgemeinen sind Shell-Skriptfunktionen flexibler als Aliase, und Sie sollten sie bevorzugen. In einem Alias ​​können Sie beispielsweise nicht testen, ob die Anzahl der angegebenen Argumente oder deren Typ die erwarteten sind. Ich stimme Caleb zu, dass Aliase zum Beispiel gut zu einfachen Einzeilern passenalias cp='cp -i'

Sakisk
quelle
1

Für alles, was eine String-Ersetzung eines einzelnen Befehls komplizierter macht, ist ein Skript wahrscheinlich besser geeignet. Außerdem ist alles, was von anderen Skripten verwendet wird oder möglicherweise von anderen Personen verwendet wird, wahrscheinlich besser als Skripte geeignet. Das Ausführen von Programmen aus dem bin-Verzeichnis einer anderen Person ist zwar keine gute Idee, aber es ist besser, als die einzelnen Aliase-Dateien einer anderen Person zu beziehen.

Aliase eignen sich am besten zur Personalisierung Ihrer interaktiven Umgebung. Zum Beispiel e='emacs -nw'und so etwas.

Goladus
quelle
0

Ich benutze den einfachsten Ansatz.

Hauptsächlich, wenn der Befehl keine Parameter hat, verwende ich normalerweise Aliase.

Wenn der Befehl Parameter hat, benutze ich eine Funktion.

zB ein Verzeichnis erstellen und cd'en:

md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }

Ich benutze auch eine Funktion, wenn der Befehl eine installierte Funktion verwendet, die selbst Parameter hat

Beispiel: Hinzufügen von -v zu git:

git () { [ $1 = commit ] && command git commit -v "${@:2}" || command git "$@"; }
Michael Durrant
quelle