SCP 파일 이름 탭 완성


13

SCP를 정기적으로 사용하여 서버간에 파일을 이동하고 공개 키를 사용하는 경우 원격 서버에서 탭 완성 기능을 사용할 수 있다는 소문이 있지만 지금까지는 운이 없었습니다.

내가 달성하려고하는 것은 다음과 같습니다.

scp -r remote.ip.address:/remote/dir/folder<TAB> /local/destiation/

ls원격 서버에 /dir/3 개의 폴더가 표시됩니다.

/remote/dir/folder_1
/remote/dir/folder_2
/remote/dir/folder_3

로컬 파일 시스템을 탐색 할 때 정상적인 경로 완성과 마찬가지로 SCP가 어떤 폴더가 일치하는지 (있는 경우) 공개하고 싶습니다. 탭 완성은 scp명령 줄 의 로컬 경로에서 작동 하지만 원격 컴퓨터의 경로가 로컬과 일치 할 때 (예 : "~ /") 로컬 파일 시스템에서 파일 / 폴더를 완성 / 제안한다는 것을 알았습니다. 리모컨보다.

비밀번호없이 로그인하려면 다음을 실행하십시오.

`ssh remote.ip.address`

... 키가 올바르게 설정되어 있음을 알고 있습니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?


방금 이것을 사용했습니다-omgbbq
William Entriken

답변:


16

어떤 쉘을 사용하고 있습니까? bash를 사용하는 경우 bash에서 "고급"완료를 활성화해야 할 수도 있습니다.

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

~ / .bashrc에서

OSX에서는 다음을 수행 할 수 있습니다.

$ sudo port install bash-completion

~ / .profile에 다음을 추가하십시오.

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

OSX를 워크 스테이션으로 사용하고 있는데 해당 파일이 없습니다. 그러나 distrubtion을 사용하면 bash-completion 패키지를 설치해야 작동한다고 가정합니다.

답변을 업데이트하겠습니다.
rkthkr

나는 그 단계들을 스스로 끝내고 모든 것이 잘 작동합니다. 고마워 친구!

문제 없습니다, 기꺼이 도와 드리겠습니다!
rkthkr 2016 년

1
물론 OS X 용 포트 설치 부분은 MacPorts 패키지 (www.macports.org)를 설치 한 경우에만 작동합니다. MacPorts 대신 fink를 사용해야한다면 패키지가 있다고 생각합니다.
Sven

2

누군가 rkthkr의 방법으로 Mac OSX Mountain Lion에서이 작업을 수행하려면 먼저 Mac Ports ( http://www.macports.org/install.php ) 를 설치해야하며 다음 명령을 실행하십시오.

$ sudo port install bash-completion

https://trac.macports.org/wiki/howto/bash-completion 에서 찾은 지침에 따라 터미널 앱을 구성하십시오.


의견을 남길 평판이 충분할 경우 기존 답변에 추가하면 일반적으로 답변에 더 적합합니다. (응답을 편집하지 않을 경우)
Andrew B

감사. 그게 내가하고 싶었지만 당신이 언급했듯이 나는 그렇게 할 충분한 담당자가 없었습니다.
Shawn Conn

0

또 다른 간단한 해결책은 sshfs를 사용하는 것 입니다.

SSH 파일 전송 프로토콜을 기반으로하는 파일 시스템 클라이언트입니다. 대부분의 SSH 서버는 이미이 프로토콜을 지원하므로 설정하기가 매우 쉽습니다. 즉, 서버 측에서는 할 일이 없습니다. 클라이언트 측에서 파일 시스템은 ssh를 사용하여 서버에 로그인하는 것만 큼 쉽습니다.

원격 폴더를 로컬 폴더에 연결 하는 퓨즈 기반 파일 시스템입니다. 후드 아래에서 scp가 사용되지만 cp로컬 컴퓨터에서 파일을 복사하는 것처럼 명령을 작동 할 수 있습니다 . 따라서 탭 완성 이 자동으로 작동합니다! SSHFS는 대부분의 배포판 사용할 수 있습니다, 예를 들면 않는다 sudo apt-get install sshfs(이것은 또한로드 fuse커널 모듈)

다음과 같이 시작:

$ sudo mkdir /mnt/server1
$ sudo chown local-username /mnt/server1
$ sshfs remote-username@server1.example.com:/home/remote-username /mnt/server1
$ ls /mnt/server1
 .. <bunch of files> ...
$ cp /mnt/server1/.bash<tab><tab>
.bash_history  .bash_logout   .bashrc
$ cp /mnt/server1/.bashrc .

0

yafc 사용하는 것이 좋습니다 .

파일 이름 완성을 지원하고 다른 유용한 기능도 있습니다 (예 : 재귀 get / put / fxp / ls / rm)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.