![scp는 대상 머신 경로를 알고 있습니까?](https://linux55.com/image/110486/scp%EB%8A%94%20%EB%8C%80%EC%83%81%20%EB%A8%B8%EC%8B%A0%20%EA%B2%BD%EB%A1%9C%EB%A5%BC%20%EC%95%8C%EA%B3%A0%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
최근에 개인적인 용도로 OSX에서 Linux로 전환했습니다. 헤드리스 Ubuntu를 실행하는 홈 미디어 서버가 있고 이제는 Mint를 실행하는 랩톱이 있습니다. 내 습관은 서버로 물건을 옮기는 것입니다 scp
. 과거 OSX에서는 복사 대상을 입력할 때 경로에 있는 모든 문자를 힘들게 입력했습니다. 습관적으로 Tab 키를 눌러 끝내려고 하면 기계가 불안해져서 처음부터 다시 시작해야 했기 때문입니다. . 그러나 방금 새 컴퓨터에 대한 SSH 키를 설정하고 랩탑에서 서버로 파일을 전송하는 중에 scp
실수로 탭을 눌렀고 놀랍게도 경로가 올바르게 완료되었습니다! 이것이 정상적인 행동입니까? OSX의 term2에서 작동하지 않는 이유는 무엇입니까? 다른 터미널 창에 서버 연결이 열려 있다는 점에 유의하세요.
답변1
이것이 셸의 명령 완성이 실제로 수행하는 작업입니다. 현재 명령줄이 로 시작되면 scp
어떤 상황에서는 경로를 완료하기 위해 대상 시스템(가능한 경우)에 연결해야 한다는 것을 "알고 있습니다". 이미 키를 로드했기 때문에 이 작업은 투명하게 수행될 수 있습니다.
/usr/share/bash-completion/completions/scp
이는 일반적으로 (Bash를 사용하는 경우) 또는 /usr/share/zsh/functions/Completion/Unix/_ssh
(Zsh의 경우) 에서 구현되는 것을 볼 수 있습니다 .