2010-02-01 3 views
32

zsh 별칭 -> 함수?

내가 가지고 있다고 가정 해보자 :

alias gg="git grep" 

다음과 같은 것들 :

gg "int x" 

작동하지만

gg int x 

불평을받습니다. zg의 함수로 gg를 재 작성하여 gg 뒤에 모든 인수를 가져 와서 문자열로 채우는 방법이 있습니까?

고마워!

답변

58
gg() { git grep "$*"; } 
+6

음, 하나의 문자열로 이동하려면''$ @ ''대신''$ * "'가 필요합니다 - 작성한 양식은 별칭처럼 별개의 매개 변수로 전달됩니다. –

+1

고마워. –

+0

이것은 bash 와도 호환되는 이점이 있습니다 – Jian

4

특정 사용 사례에 대해 이것은 잘못된 생각입니다. git-grep은 단일 인수가 이고 예상 패턴은입니다. 패턴을 사용하여 셸에서 int와 x 사이의 공간을 처리하려고합니다. 이것은 gg foo.*bar 또는 쉘이 해석 할 수있는 다양한 다른 것을 시도 할 때 빠르게 깨질 것입니다. 따라서 gg 이후의 내용은 정말로 인용되어야합니다. 당신이 gg이 가치있는 키 입력 보호기 생각한다면 fatal: ambiguous argument 'x': unknown revision or path not in the working tree...

, 일관된 어떤 git-grep 예상하는과로 인수를 유지해야합니다 git grep int x도 작동하지 않는 이유입니다. 원본 별칭은이 문제가 없습니다. 다른 정규 표현식 명령을 사용하는 것과 마찬가지로 패턴을 한 번 또는 큰 따옴표로 계속 입력하십시오.

+0

대답이 아니지만 아주 좋은 지적입니다. – shadowtalker