Bash-Alias ​​mit einem Leerzeichen als Teil des Befehls


11

Ich versuche, einen Bash-Alias ​​zu erstellen, in dem der Alias ​​selbst ein Leerzeichen enthält.

Die Idee ist, dass der Alias ​​(dh con) für steht sudo openvpn --config /path/to/my/openvpn/configs/. Dies führt zu einem lesbaren Befehl, wenn der conAlias ​​verwendet wird.

dh: `con uk.conf` == `sudo openvpn --config /path/to/my/openvpn/configs/uk.conf`

Ich verstehe, dass ich den Alias ​​nicht so deklarieren kann : con ="sudo openvpn --config /path/to/my/openvpn/configs/". Würden Bash-Funktionen in diesem Szenario funktionieren? Ich habe noch nie davon gehört, aber bei der Suche nach einer Lösung für dieses kleine Problem.

Antworten:


12

Ja, Sie müssen eine Funktion verwenden. Ein Alias ​​würde funktionieren, wenn Sie einen Parameter hinzufügen möchten. Alle Argumente für Aliase werden als Argumente an das Alias-Programm übergeben, aber als separate Parameter , die nicht einfach an das angehängt werden, was vorhanden ist. Um zu veranschaulichen:

$ alias foo='echo bar'
$ foo
bar
$ foo baz
bar baz

Wie Sie sehen können, wurde bar bazund wurde nicht wiedergegeben barbaz. Da Sie den Wert, den Sie an den vorhandenen Parameter übergeben, verketten möchten, benötigen Sie Folgendes:

function com(){ sudo openvpn --config /path/to/my/openvpn/configs/"$@"; }

Fügen Sie die obige Zeile zu Ihrer hinzu ~/.bashrcund Sie können loslegen.


4
Sie können "$@"stattdessen verwenden, "$1"damit auch nachfolgende Argumente durchlaufen werden. (Allgemeiner Kommentar, möglicherweise irrelevant für den speziellen Fall hier)
Toby Speight

@TobySpeight D'oh! Daran hätte ich denken sollen. Danke, bearbeitet.
Terdon

1
@TobySpeight nur zur Verdeutlichung, com uk.conf -something elsewürde das bedeuten , zu übersetzen sudo openvpn --config /path/to/my/openvpn/configs/uk.conf -something else?
TMH

4
@ TomHart ja. $@enthält alle angegebenen Parameter. Siehe Was ist der Unterschied zwischen $ * und $ @? .
Terdon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.