我有一台Linux机器和2台Windows机器。每台Windows机器都包含带有sshd守护程序的cygwin。 Linux机器是我正在使用的主要机器。在XP的第一台Windows机器上,我有一个文件,我想与第二台Windows机器上的文件进行比较,即Windows 7。
我的想法是,一旦我进入XP机器,我应该能够轻松地使用scp命令获取Windows 7机器上的文件,然后运行差异来比较2个文件,但它首先被绊倒在“程序文件”中的空格上以及在使用\来逃避它们之后,它会在括号中被绊倒。
逃脱的空间
$ scp root@10.10.10.10:/cygdrive/c/Program\ Files\ (x86)/myfile.xml .
-bash: syntax error near unexpected token `('
Escaped斜杠
$ scp root@10.10.10.10:/cygdrive/c/Program\ Files\ \(x86\)/myfile.xml .
root@10.10.10.10's password:
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `scp -f /cygdrive/c/Program Files (x86)/myfile.xml'
使用变量
$ scpfile="/cygdrive/c/Program Files (x86)/myfile.xml"
$ scp root@10.10.10.10:$scpfile .
root@10.10.10.10's password:
scp: /cygdrive/c/Program: No such file or directory
cp: cannot stat `Files': No such file or directory
cp: cannot stat `(x86)/myfile.xml': No such file or directory
我也尝试使用带有转义斜杠的变量,但没有运气。
如果我将myfile.xml移动到/ cygdrive / c /然后scp它,它将正常工作。如何使用cygwin的scp?
scp包含括号的目录中的文件答案 0 :(得分:2)
如果创建指向Program Files(x86)目录的软链接并使名称不带空格或括号,则可以将该目录与scp结合使用。
On Cygwin(10.10.10.10)
cd c:
ln -s "Program Files (x86)" PF86
在Linux上(运行scp的家用电脑)
scp root@10.10.10.10:/cygdrive/c/PF86/myfile.xml .
它有效