为什么通过scp传输文件到Windows主机时使用定义的路径作为文件名?

为什么通过scp传输文件到Windows主机时使用定义的路径作为文件名?

当尝试使用 SCP 将文件从 Linux(准确地说是 Raspbian,尽管我认为这并不重要)复制到 Windows 时:

scp a.txt {user}@{ip}:\C\Users\{user}\a.txt

文件已复制,但复制到C:\Users\{user}\CUsers{user}a.txt.

看来我需要以某种方式转义“\”,但不知道如何转义。

答案1

虽然我从未scp在 Windows 上使用过,所以我只是猜测,但看起来反斜杠确实被忽略了。或者,更确切地说,就好像它们被视为转义字符一样,并且由于它们没有转义任何相关内容,因此被忽略。在 Linux 机器上考虑一下:

$ cd \usr\share
bash: cd: usrshare: No such file or directory

正如您所看到的,\被忽略并且路径连接到单个字符串,就像您上面所描述的那样。

默认目标位置scp是用户的主目录。因此\C\Users\userName,您尝试指定的路径将被用作文件名(\C\Users\userName\a.txt变为CUsersuserNamea.txt),并且该文件将以该名称保存在默认位置:C:\Users\userName\CUsersuserNamea.txt

在这种情况下,一个简单的解决方案是不指定路径:

scp a.txt user@ip:

答案2

使用 Windows 路径时,我建议使用相对路径,例如(相对于主目录):

scp a.txt {user}@{ip}:a.txt

相关内容