在 zsh 上使用双引号时 rsync 服务器自动完成不适用于文件

rsync server autocompletion not working for files when using double quotes on zsh

我刚刚从 shell 中发现了 范围通配符 大括号扩展 {..} ({05..18} 将匹配 05、06…, 18).

我使用 zsh 自动完成(选项卡)在服务器层次结构上导航并正确转义特殊字符。

我的示例是在服务器上使用简单的文件层次结构:

文件夹1

➡️文件夹2[x]

➡️➡️file1

➡️➡️file2

路径 /folder1/folder2[x]/file 将使用正确数量的 \ 进行转义。

noglob rsync server:/folder1/folder2\\[x\\]/file1 .

正在获取文件 1 和文件 2:

noglob rsync server:/folder1/folder2\\[x\\]/file[12] .

但这不是:

noglob rsync server:/folder1/folder2\\[x\\]/file{1..2} .

源和目标不能都是远程的。

问题出在 ..(我认为)所以我使用双引号 " 来转义服务器部分。

noglob rsync "server:/folder1/folder2\[x\]/file{1..2}" .

(注意现在在[]之前只有2个\

但是,当使用自动完成构建该命令时,完成对文件夹名称有效,但对文件名无效。

noglob rsync "server:/

选项卡

noglob rsync "server:/folder1/

选项卡

noglob rsync "server:/folder1/folder2\[x\]/

选项卡

(未添加任何内容)

最后一个之后的预期结果是

noglob rsync "server:/folder1/folder2\[x\]/file

编辑: 我刚刚注意到当最后一个文件夹需要转义它的名称(空格或其中的 [...] 时)

编辑 2: 完成使用单引号(转义只需要一个 \)。

noglob rsync 'server:/folder1/folder2\[x\]/

选项卡

noglob rsync 'server:/folder1/folder2\[x\]/file

完成使用单引号(并且转义只需要一个 \)。

noglob rsync 'server:/folder1/folder2\[x\]/

选项卡

noglob rsync 'server:/folder1/folder2\[x\]/file