【发布时间】:2023-03-04 11:34:02
【问题描述】:
我正在使用zsh,并且正在尝试编写一个函数来对 URL 和路径名进行操作:
function my-function
{
somecommand --url $1 $(readlink -f $2)
}
(为了让事情有些复杂,该函数实际上使用了sh 语法,因为它来自我的~/.zshrc 使用a trick like this)。 readlink 用于扩展符号链接并确保正确评估诸如. 之类的目录(存储目录名称以供somecommand 以后使用)。
当我像这样从命令行键入命令时:
my-function http://example.org/example /tmp/myexampledirectory
...即使我自动完成目录名称,它也可以正常工作。但是,如果目录名称包含空格,zsh 会这样完成:
my-function http://example.org/example /tmp/My\ Example\ Directory
对于大多数“正常”命令(cp、mv 等),似乎永远不会导致问题。但是,就我而言,somecommand 将 $2 视为仅是 /tmp/My - 大概其余的被视为另一个参数。
如何避免这种情况?我希望不 改变标准的zsh 自动完成功能,而是为我的函数找到一种方法来处理这个问题。
【问题讨论】:
标签: autocomplete scripting sh zsh