
Linux 터미널에서 Windows 시스템으로 파일을 푸시하려면 다음 두 가지 예가 제대로 작동합니다.
scp /home/user.name/file.html [email protected]:/C:/Users/user.name/test_folder/file.html
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test_folder/file.html"
로컬 폴더에 공백이 있고 이름을 변경할 수 없는 경우 이 작업을 수행해야 합니다./C:/Users/user.name/test folder/
다음은 모두 메시지와 함께 실패합니다.scp: ambiguous target
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test folder/file.html"
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test\ folder/file.html"
scp /home/user.name/file.html [email protected]:"'/C:/Users/user.name/test\ folder/file.html'"
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test\\ folder/file.html"
scp /home/user.name/file.html [email protected]:"'/C:/Users/user.name/test\\ folder/file.html'"
scp /home/user.name/file.html [email protected]:"/C:/Users/user.name/test\\\ folder/file.html"
scp /home/user.name/file.html [email protected]:"'/C:/Users/user.name/test\\\ folder/file.html'"
이것을 작동시키려면 어떻게 해야 합니까?
답변1
사용해 보세요
quotes '
또는Double quotes "
완전한 논쟁에 관한 것입니다.주석에서 @dirkt가 제안한 대로 SSH 호스트에 대한 전체 경로 인수를 인용하면 작업이 수행됩니다. 그러면 명령이 다음과 같이 됩니다.
scp /home/user.name/file.html '[email protected]:/C:/Users/user.name/test folder/'
사용
escape sequence for space
폴더 이름 사이에.\
공백의 이스케이프 시퀀스인 (백슬래시와 공백)을 사용할 수 있습니다 . 그러면 명령이 다음과 같이 됩니다.scp /home/user.name/file.html '[email protected]:/C:/Users/user.name/test\ folder/'
&
\
사이에 공백이 있는 것을 확인하세요 .test
folder
test\ folder
.어쩌면 당신이 그럴 수도 있습니다
need to escape twice
먼저 로컬에서 이스케이프된 다음 원격 끝에서 이스케이프됩니다. 이 경우 다음과 같이 작성할 수 있습니다."'complete argument'"
다음과 같이 큰따옴표 안의 따옴표 안에:"'[email protected]:/C:/Users/user.name/test folder/'"
또는
공백을 이스케이프 처리하고 다음과 같이 전체 인수를 인용하세요.
'[email protected]:/C:/Users/user.name/test\ folder/'
또는
이와 같은 이스케이프 시퀀스를 사용하여 직접 두 번 이스케이프하세요.
[email protected]:/C:/Users/user.name/test\\ folder/
자세한 내용을 추가해 보세요.
답변2
CentOS 클라이언트에서 Windows 7(SP1)로 scp하기 위해 위의 모든 옵션을 시도했지만 성공하지 못했습니다.
그래도 이것은 나를 위해 일했습니다.
$ scp /tmp/lala 'win7@<IP>:"/Users/win7/Documents/TestComplete 14 Projects"'
답변3
이것이 여전히 관련이 있는지는 모르겠지만 (어떤 상황에서는 역효과를 낼 수 있는) 한 가지 해결책은 "?"를 사용하는 것입니다. 공간 대신:
scp "user@ip:/home/user/file?with?spaces.txt" .
답변4
그만큼"기호는 bash 자체에 의해 해석됩니다. Bash는 가능하다면 인터브레드 사이에 있는 모든 것을 캡슐화하고 특수 기호가 있을 수 있는 문자열로 호출되는 명령에 출력을 표시합니다. 아포스트로피(') 기호는 bash가 문자열을 전혀 보지 않고 먼저 호출된 명령에 전달하도록 강제합니다. 그 문자열은'다음과 같은 형식이어야 합니다.
~하지 않다
echo $'dont\'t'