Подтвердить что ты не робот

Zsh alias → функция?

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

alias gg="git grep"

тогда материал вроде:

gg "int x"

работает, но

gg int x

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

Спасибо!

4b9b3361

Ответ 1

gg() { git grep "$*"; }

Ответ 2

В вашем конкретном случае использования это плохая идея. 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. Ваш оригинальный псевдоним подходит для этого. И продолжайте одиночную или двойную кавычку вашего шаблона, как и с любой другой принимающей команду.