在 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
我刚刚从 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