Answers:
rsync
将引号内的字符串传递给远程计算机。如果您使用引号转义空格,则该反斜杠将成为字符串的一部分(它不会被您的shell使用)。
该 rsync
手册页 是指逃避:
如果需要传输包含空格的文件名,可以指定
--protect-args
(-s
)选项,或者您需要以远程shell将理解的方式转义空白。例如:
CWrsync -av host:'file\ name\ with\ spaces' /dest
您可以使用如下的简单脚本查看shell如何(或不)使用特殊字符:
#!/bin/sh
n=1
echo "$@"
for i in "$@"
do
echo "$n:$i"
n=`expr $n + 1`
done
这称呼 args
:
$ args "xx\ yy"; args "xx yy"
xx\ yy
1:xx\ yy
xx yy
1:xx yy
以来 rsync
不添加引号(除非要求,使用 -s
),当作为shell命令的一部分发送到另一台机器时,必须特别处理这些空间。