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

Windowsで使用したことがないscpので推測だけしていますが、バックスラッシュが無視されるようです。または、むしろエスケープ文字として扱われ、関連項目をエスケープしないので無視されるようなものです。 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

関連情報