![scp 명령을 입력할 때 원격 파일을 탭 완성할 수 있는 마법이 있습니까?](https://linux55.com/image/65207/scp%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%9E%85%EB%A0%A5%ED%95%A0%20%EB%95%8C%20%EC%9B%90%EA%B2%A9%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%83%AD%20%EC%99%84%EC%84%B1%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EB%A7%88%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
아마도 이것은 내 oh-my-zsh 설정에서 활성화한 일부 플러그인에서 제공하는 기능일 것입니다(저는 수년 동안 zsh를 사용해 왔습니다).
서버에 공개 키를 추가한 이후(이제 비밀번호를 입력하지 않고 서버에 SSH를 통해 연결할 수 있음) scp
셸에서 명령을 작성할 때 실제로 원격 파일 경로에 탭 완성 기능을 사용할 수 있다는 사실을 발견했습니다!
예를 들어
$ diff <(scp [email protected]:/var/www/html/
탭을 클릭하면 작동합니다! (명령 자체로 수행하려는 작업은 scp
stdout에 "복사"를 사용하고 이를 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)"}%%
[# ]*}//,/ })'
<...>