zsh에서 bash의 대안?

zsh에서 bash의 대안?

최근에 bash에서 zsh로 전환했습니다.

내가 실행하면 complete -f _ssh sshrc표시됩니다.

zsh: command not found: complete
  • completezsh에서 bash의 대안은 무엇입니까?

  • zsh 쉘의 자동 완성에 별칭 명령을 추가하는 방법은 무엇입니까?

답변1

나는 당신이 "새로운 완성 시스템"( compinit)을 사용하고 있다고 가정하고 있습니다. 그렇지 않은 경우 아래를 참조하십시오.

기본적으로 zsh는 완료를 수행하기 전에 별칭을 확장하므로 sshrc추가 옵션이 있는 별칭인 경우 ssh즉시 완성을 얻을 수 있습니다. 하지만 sshrc함수나 스크립트라면 이를 수행하는 방법을 설명해야 합니다.

명령이 특정 기능을 사용하도록 하려면 다음을 사용하십시오.compdef기능:

compdef _ssh sshrc

대부분의 완성 기능에는 직면하지 않는 추가적인 어려움이 있습니다 _ssh. 명령 이름에 따라 다르게 작동하거나 보다 정확하게는 "서비스 이름"(기본적으로 명령 이름)에 따라 다르게 작동합니다. _ssh명령 이름이 인식되지 않으면 완성 기능이 제공되지 않습니다 .

sshrc이와 같은 작업을 수행 하려면 sshzsh에 직접 지시하십시오. 이는 sshrc수행할 기능을 설정할 뿐만 아니라 제대로 작동 _ssh하도록 서비스 이름도 선언합니다 sshrc.ssh_ssh

compdef sshrc=ssh

내부적으로는 이 기능이 수행됩니다.

_comps[sshrc]=$_comps[ssh]
_services[sshrc]=ssh

zsh의 완성 시스템

Zsh에는 세 가지 완료 메커니즘이 있습니다."올드 스타일" 마감compctl,"새로운 스타일" 완성(이것은 1990년대에 소개되었기 때문에 완전히 새로운 것은 아닙니다.)Bash로 완성된 호환성 레이어.

기본적으로 zsh는 이전 버전과의 호환성을 위해 이전 완성 시스템을 사용합니다. 그러나 새로운 완성 시스템이 출시된 후 zsh를 사용하기 시작하는 사람은 누구나 이를 사용해야 합니다. 새 사용자 마법사는 구성 파일에 필요한 줄을 추가할 수 있습니다. 실행할 기회가 없거나 다시 실행하고 싶다면 다음을 참조하세요.Zsh 처음 시작 마법사 실행에서 새 완성 시스템 사용을 선택하고 필요에 따라 설정을 조정한 다음 저장될 때까지 변경 사항을 확인합니다.

당신이 넣으면bashcompinit귀하의 것에서는 bash와 대부분 호환되는 기능을 .zshrc정의합니다 . complete호환성이 완벽하지는 않지만 사람들이 자신의 프로그램으로 작성하고 배포하는 대부분의 기능을 실행하기에 충분합니다.

추신: zsh의 새로운 사용자로서 귀하는 제 내용에 관심이 있으실 것입니다.Bash와 zsh의 차이점 개요.

관련 정보