Ответ 1
gg() { git grep "$*"; }
Предположим, что у меня есть:
alias gg="git grep"
тогда материал вроде:
gg "int x"
работает, но
gg int x
получает жалобы. Есть ли способ переписать gg как функцию в zsh, чтобы он принимал все аргументы после gg и вносил их в строку?
Спасибо!
gg() { git grep "$*"; }
В вашем конкретном случае использования это плохая идея. 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
. Ваш оригинальный псевдоним подходит для этого. И продолжайте одиночную или двойную кавычку вашего шаблона, как и с любой другой принимающей команду.