如何在 bash 下转义 rsync 输出格式参数中的单引号?

如何在 bash 下转义 rsync 输出格式参数中的单引号?

我在 Centos 7 下使用 bash 版本 3.0.9,但似乎找不到允许我将单引号传递给 out-format 参数的转义组合。我尝试了所有能想到的组合,将选项括在单引号或双引号中,用反斜杠转义单引号,连接字符串,将它们作为变量传递,但似乎都不起作用。显然,下面的命令应该可以给我提供人类可读的文件大小,但我只得到了您在输出中看到的单引号:

$ rsync -crthivn --out-format="%n %''l" /from_folder /to_folder
sending incremental file list
test/ %''l
test/file1 %''l
test/folders_current %''l
test/test2/ %''l
test/test2/file2 %''l

sent 191 bytes  received 29 bytes  440.00 bytes/sec

我以为 bash 转义是问题的根源,但当我尝试使用 sh 和 csh 时,我得到了相同的结果。所以我现在非常困惑!任何帮助都值得感激。

答案1

只是为了跟进这一点,它看起来像是 3.0.9 中的一个错误 - 我发现升级到 rsync 3.1.2 后问题就消失了(您必须手动执行此操作,因为您只能从官方 Centos 存储库获取到 3.0.9)。

我按照这里的说明进行操作:

https://stackoverflow.com/questions/36407399/why-the-latest-vesion-of-rsync-could-not-be-installed-on-centos-7-2

相关内容