scp 명령을 입력 할 때 원격 파일을 탭 완성 할 수있는 마술은 무엇입니까? 플러그인에서 제공하는 기능 일

아마도 이것은 내 oh-my-zsh 설정에서 활성화 한 일부 플러그인에서 제공하는 기능 일 것입니다 (수년 동안 zsh를 사용해 왔습니다).

공개 키를 서버에 추가 한 이후 (이제 비밀번호를 입력하지 않고 서버에 SSH로 연결할 수 있음), scp쉘에서 명령을 작성할 때 실제로 원격 파일 경로를 탭 완성 할 수 있습니다!

예 :

$ diff <(scp Remoteuser@remote.domain.net:/var/www/html/

탭을 누르면 작동합니다! (명령 자체로 수행하려는 작업은 scpstdout에 “복사”하고 diff에 파일로 공급하는 데 사용합니다.이 방법으로 서버에 배포 한 정확한 변경 사항을 볼 수 있습니다 달리기 rsync)

이 작품이 잘 작동하는 부분이 궁금합니다. z 쉘과 통합 된 scp에 내장 된 것입니까? 또는 다른 것?



답변

설명을 찾았 습니다 .

관련 부분을 인용하려면 :

zsh 셸에는 원격 탭 완성과 같은 훌륭한 기능이 하나 이상 제공됩니다. 예를 들어 scp를 통해 파일을 복사하려면 원격 호스트의 파일 이름 부분에서 탭을 누르십시오. zsh는 백그라운드에서 ssh 세션을 설정하고 관련 정보를 가져올 수 있으므로 원격 파일을 통해 탭 완성 할 수 있습니다.

게시물은 zstyle완성을 달성하는 몇 가지 선언 을 보여 주지만 위에서 언급 한 oh-my-zsh 와 같은 zsh 패키지를 사용 하여 OSS 커뮤니티 에서이 자료를 유지 관리하는 것이 좋습니다.

내 .oh-my-zsh 디렉토리의 시스템에서 볼 수 있듯이 관련이있는 것 같습니다.

$ ack scp
plugins/common-aliases/common-aliases.plugin.zsh
85:zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%
[# ]*}//,/ })'

<...>