scp 명령을 입력할 때 원격 파일을 탭 완성할 수 있는 마법이 있습니까?

scp 명령을 입력할 때 원격 파일을 탭 완성할 수 있는 마법이 있습니까?

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

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

예를 들어

$ diff <(scp [email protected]:/var/www/html/

탭을 클릭하면 작동합니다! (명령 자체로 수행하려는 작업은 scpstdout에 "복사"를 사용하고 이를 diff에 파일로 제공합니다. 이렇게 하면 이전 실행에서 서버에 배포한 정확한 변경 사항을 볼 수 있습니다. rsync)

이 작품이 이렇게 대단한 이유가 무엇인지 궁금합니다. z 쉘과 통합되는 scp에 내장된 것이 있습니까? 아니면 다른 것입니까?

답변1

아아, 찾았어설명.

관련 부분을 인용하자면:

zsh 셸에는 원격 탭 완성과 같은 여러 가지 훌륭한 기능이 있습니다. 예를 들어, scp를 통해 파일을 복사하려면 원격 호스트의 파일 이름 중 아무 부분에서나 Tab 키를 누르기만 하면 됩니다. zsh는 백그라운드에서 SSH 세션을 설정하고 관련 정보를 얻을 수 있으므로 원격 파일을 통해 탭 완성을 수행할 수 있습니다.

게시물은 계속해서 zstyle구현이 완료된 몇 가지 설명을 보여주지만 앞서 언급한 것과 같은 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)"}%%
[# ]*}//,/ })'

<...>

관련 정보