파이프로 시작하는 bash 별칭이 작동하지 않나요?

파이프로 시작하는 bash 별칭이 작동하지 않나요?

파이프로 시작하는 별칭을 만들려고 합니다.

전임자:

echo -i "hello\nworld" | grep world
> world
alias gr="| grep"
echo -i "hello\nworld" gr world
> hello
> world gr world

즉, 별칭이 파이프로 시작하면 제대로 작동하지 않는 것 같습니다. 이를 수행할 수 있는 방법이 있습니까?

답변1

에서 man bash:

별칭을 사용하면 간단한 명령의 첫 번째 단어로 사용될 때 단어를 문자열로 바꿀 수 있습니다.

파이프는 간단한 명령의 첫 번째 단어가 될 수 없습니다.

답변2

아, 귀하의 별칭은 작동합니다. 단독으로 시도 하면 줄 시작으로 인해 gr쉘에서 구문 오류가 발생합니다 . |이는 분명히 별칭이 작동한다는 것을 의미합니다. 즉, 한 문자열을 다른 문자열로 대체합니다.언제해야합니까?.

귀하의 예에서는 gr매개 변수로 처리되므로 echo대체가 없습니다. 별칭에 파이프가 없는 경우에도 그렇지 않습니다. 초기 파이프 기호는 앨리어싱 발생 여부를 결정하지 않지만 앨리어싱 메커니즘과 관련되지 않은 오류를 발생시킵니다.

답변3

쉘을 전환할 수 있거나 전환하고 싶다면 별칭을 다음으로 설정하여 zsh에서 이를 수행할 수 있습니다.

alias -g gr="| grep"

관련 정보