scp 명령을 입력 할 때 원격 파일을 탭 완성 할 수있는 마술은 무엇입니까?


16

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

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

예 :

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

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

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

답변:


16

설명을 찾았 습니다 .

관련 부분을 인용하려면 :

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)"}%%
[# ]*}//,/ })'

<...>

놀랄 만한!! 이 기능은 독점적 zsh입니다. 그것은 가능하다 bash.
shivams

1
@shivams 이것은 bash 요구와 관련 있을 수 있습니다. oh-my-zsh를 설정하는 것이 훨씬 쉬운 것처럼 보이며 zsh는 정말 좋습니다. 당신이 정말로 그것에 관심이 있다면, zsh가 할 수있는 bash가 할 수있는 일은 많지 않습니다 (그리고 그 반대도 마찬가지입니다). 얼마나 많은 일을하고자하는지에 대한 문제입니다.
Steven Lu

7
@shivams 나에게 그것은 항상 bash에서 일했다. scp 명령에서 언젠가 "tab"을 본격적으로 누르고 자동 완성 된 것을보고 매우 놀랐다! 인터넷 검색, bash-completion 패키지가없는 경우 설치 해야하는 것처럼 보입니다. 이 유닉스 질문은 관련이 있습니다.
Pont
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.