Wie kann ich einen Befehl ausführen, der eine Benutzereingabe über den Alias ​​oh-my-zsh erfordert?

Ich versuche, Reminder.app-Elemente über die Befehlszeile hinzuzufügen, indem ich einen Alias ​​aufrufe. Ich verwende die Automator-Workflow-Lösung aus dieser Frage: Wie kann ich Erinnerungen über die Befehlszeile hinzufügen? , der über die folgende Befehlszeileneingabe einen grundlegenden Workflow aufruft, der ein leeres Erinnerungselement enthält:

automator -i remindertext add_reminder.workflow

Das funktioniert perfekt, ist aber ungeschickt zu tippen, also möchte ich einen Alias ​​​​dafür festlegen. Meine Frage ist: Wie lege ich einen Alias ​​in .zshrc fest, mit dem ich den Text des Erinnerungselements festlegen kann, wenn ich den Alias ​​aufrufe? Es müsste grundsätzlich in der Lage sein, "Erinnerungstext" durch eine Variable zu ersetzen, wie folgt:

alias reminder='automator -i <variable> add_reminder.workflow'

Ist dies in zsh/oh-my-zsh möglich?

Antworten (1)

Aliase werden als Abkürzungen verwendet - einfache Befehle, die sich zu längeren erweitern lassen. Wenn Sie ihm ein Argument übergeben müssen, müssen Sie eine Funktion erstellen. Probieren Sie vielleicht etwas wie:

reminder () { automator -i $1 add_reminder.workflow' }

Hier wird $1 zum ersten Argument erweitert, das Sie an die Funktion übergeben haben. Sie müssen also Folgendes tun:

reminder "Buy potatoes"

PS: Ich habe es nicht ausprobiert, da ich zsh gerade nicht bei mir habe, also wenn es kaputt geht, ruf mich an.

Danke! Das hat mich mit einigen kleinen Basteleien in die richtige Richtung gebracht. Ich habe jetzt diese Zeile in meiner .zshrc-Datei: function reminder () {automator -i $1 add_reminder.workflow}Funktioniert perfekt.
Ich wollte das hinzufügen, nachdem ich ein wenig mit der Syntax gespielt hatte, dass ich feststellte, dass es auch funktioniert, ohne den Teil „Funktion“ am Anfang der Zeile hinzuzufügen (dh es funktioniert genau so, wie Atanas es mit seinem Code vorgeschlagen hat).
Ich versuche zu tippen, weather() { curl -4 http://wttr.in/$1 }um weather newyorkAlias ​​zu aktivieren, der ursprüngliche Befehl lautetcurl -4 http://wttr.in/newyork
@Wongzigii: (1) Du hast es verpasst ; weatherzwischen $1 und } (2) Es ist besser, ${1:-newyork} zu verwenden, in diesem Fall wird newyork standardmäßig verwendet, wenn Sie starten, und Sie können zusätzliche Parameter angeben, wenn Sie es überschreiben möchten; (3) Sie brauchen -4 nicht mehr, es funktioniert trotzdem nein; wttr(4) Ich würde vorschlagen, use statt weatherfür den Funktionsnamen zu verwenden : Er ist kurz und eindeutig und es ist offensichtlich, was er bedeutet