내 인수를 Bash 별칭 명령에 넣는 방법은 무엇입니까?

내 인수를 Bash 별칭 명령에 넣는 방법은 무엇입니까?

나는 일반적으로 bashrc에 다음과 같은 간단한 별칭을 가지고 있습니다.

alias g="grep --color=always --exclude-dir=\*.svn\*"

하지만 지금은 GNU grep 2.5만 있는 시스템에서 작업해야 하므로 --exclude-dir논쟁의 여지가 없습니다.

이제 작동하려면 다음과 같은 것이 필요합니다.

alias g="grep --color=always $1 $2 | grep -v .svn"

물론 인수는 별칭 끝에 추가됩니다. $1 및 $2는 큰 따옴표를 사용해도 호출될 때가 아니라 별칭이 생성될 때 구문 분석됩니다.

추가 스크립트나 기능을 사용하지 않고도 이 문제를 해결할 수 있나요?

답변1

아니요, 그럴 수 없습니다. Bash 매뉴얼에 따르면 다음과 같습니다.

`csh'처럼 대체 텍스트에 인수를 사용하는 메커니즘은 없습니다. 인수가 필요한 경우 쉘 함수를 사용해야 합니다(*쉘 함수 참고::).

함수는 이에 적합한 것이며 별칭처럼 쉽게 작성할 수 있습니다. 이 경우에는 다음과 같습니다.

function g () { grep --color=always "$1" "$2" | grep -v .svn ; }

관련 정보