псевдоним zsh -> функция? - PullRequest
       10

псевдоним zsh -> функция?

32 голосов
/ 01 февраля 2010

Предположим, у меня есть:

alias gg="git grep"

тогда такие вещи как:

gg "int x"

работает, но

gg int x

получает жалобы. Есть ли способ переписать gg как функцию в zsh, чтобы он брал все аргументы после gg и помещал их в строку?

Спасибо!

Ответы [ 2 ]

58 голосов
/ 01 февраля 2010
gg() { git grep "$*"; }
4 голосов
/ 12 июня 2015

Для вашего конкретного случая использования это плохая идея. git-grep ожидает единый аргумент паттерн . Вы пытаетесь заставить оболочку обрабатывать ваше пространство (между int и x) как часть шаблона. Это быстро сломается, когда вы попробуете что-то вроде: gg foo.*bar или другие вещи, которые оболочка может интерпретировать. Поэтому все, что после gg действительно должно быть указано. Вот почему git grep int x также не работает: fatal: ambiguous argument 'x': unknown revision or path not in the working tree...

Если вы думаете, что gg - это полезная заставка нажатия клавиш, вы должны держать свой аргумент в соответствии с тем, что ожидает git-grep. Ваш оригинальный псевдоним подходит для этого. И продолжайте ставить в шаблоне одинарные или двойные кавычки, как и в случае любой другой команды, принимающей регулярные выражения.

...