Jak uruchomić polecenie wymagające danych wejściowych użytkownika za pośrednictwem aliasu oh-my-zsh?

3

Próbuję dodać elementy Reminder.app za pomocą wiersza polecenia, wywołując alias. Korzystam z rozwiązania przepływu pracy Automator z tego pytania: Jak dodać przypomnienia za pomocą wiersza polecenia? , który wywołuje podstawowy obieg pracy zawierający pusty element Przypomnienia za pomocą następującego wiersza poleceń:

automator -i remindertext add_reminder.workflow

Działa to idealnie, ale jest nieporadne do pisania, więc chcę ustawić dla niego alias. Moje pytanie brzmi: jak ustawić alias w .zshrc, który pozwala mi ustawić tekst elementu przypomnienia po wywołaniu aliasu? Zasadniczo musiałby być w stanie zastąpić „przypomnienie” tekstem zmiennym, tak jak:

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

Czy jest to możliwe w zsh / oh-my-zsh?

strefowy post meridiem
źródło

Odpowiedzi:

0

Aliasy są używane jako skróty - polecenia sipmple, które rozwijają się do dłuższych. Jeśli musisz przekazać argument, musisz utworzyć funkcję. Może spróbuj czegoś takiego:

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

Tutaj 1 USD rozwinie się do pierwszego argumentu przekazanego do funkcji. Więc zrobisz coś takiego:

reminder "Buy potatoes"

PS: Nie próbowałem tego, ponieważ nie mam teraz przy sobie Zsh, więc jeśli się zepsuje, daj mi krzyk.

Atanas Bozhkov
źródło
Dzięki! To ustawiło mnie we właściwym kierunku, z drobnymi majstrami. Mam teraz ten wiersz w pliku .zshrc: function reminder () {automator -i $1 add_reminder.workflow} działa idealnie.
strefowy post meridiem
Chciałem dodać, że po odrobinie gry ze składnią zdałem sobie sprawę, że działa również bez dodawania części „funkcyjnej” na początku linii (tj. Działa dokładnie tak, jak sugerowałby Atanas ze swoim kodem)
strefowy post meridiem
Próbuję wpisać, weather() { curl -4 http://wttr.in/$1 }aby włączyć weather newyorkalias, oryginalne polecenie tocurl -4 http://wttr.in/newyork
Zigii Wong
@Wongzigii: (1) Tęskniłeś; od 1 $ do} (2) Lepiej jest użyć $ {1: -newyork}, w tym przypadku jeśli zaczniesz weather, newyork jest domyślnie używany i możesz określić dodatkowe parametry, jeśli chcesz go zastąpić; (3) nie potrzebujesz już -4, działa nawet tak nie; (4) Sugerowałbym użycie wttrzamiast weathernazwy funkcji: jest krótka i niepowtarzalna oraz oczywiste, co to znaczy
Igor Chubin