별칭의 grep에서 "잘못된 최대 개수"가 나타나는 이유는 무엇입니까?

별칭의 grep에서 "잘못된 최대 개수"가 나타나는 이유는 무엇입니까?

따라서 내 별칭을 검색해 주는 별칭을 만드는 것이 아이디어입니다. 나는 꽤 많이 가지고 있습니다.

dude@gnarleybox:~$ grep alg .bash_aliases.sh
alias alg='alias | grep '
dude@gnarleybox:~$ alias | grep alg
alias alg='alias | grep '
dude@gnarleybox:~$ alg gd
grep: invalid max count
dude@gnarleybox:~$ 

아? 두 개의 매개변수를 얻기 위해 grep을 사용하시나요? 어떻게 이럴 수있어? 마지막에 공백 없이 이 작업도 시도했습니다.

alias alg='alias | grep' 

다음 항목만 입력해야 합니다.

 alg gd 

...GoogleDocs를 설치하는 데 사용한 별칭을 가져옵니다.

답변1

gd또한 별칭처럼 보이고 and 로 확장 됩니다 -m. 표시하려면:

$ alias alg='alias | grep '
$ alias gd='-m foo'
$ alg gd
grep: invalid max count

표시되는 오류 메시지는 (maxcount) 옵션과 숫자가 아닌 인수가 주어졌을 grep때 인쇄되는 것 입니다. -m를 실행하면 alias | grep gd위에 표시된 것과 일치한다는 것을 알 수 있을 것입니다.

설명된 대로 man bash:

별칭 값의 마지막 문자가 공백이나 탭인 경우 별칭 뒤의 다음 명령 단어도 별칭 확장을 확인합니다.

따라서 별칭에서 공백을 제거하면 alg문제도 해결됩니다.

~/.bash_aliases.sh그리고 혹시 이 글을 읽고 있는 분이 계시나요 ? 이것기본 파일 이름확장이 없습니다 ~/.bash_aliases. 명시적으로 소스를 지정하지 않는 한 ~/.bash_aliases.sh무시됩니다 .

답변2

rici가 제안한 대로 별칭 정의 끝의 공백을 제거하면 문제가 해결됩니다.

그러나 별칭에 동의어나 약어가 있을 뿐만 아니라 파이프가 있는 함수 코드도 있는 경우에는 별칭 대신 함수를 정의하는 것이 좋습니다.

관련 정보