cd wslpath as bash function shell 引用问题

cd wslpath as bash function shell quoting problems

使用 wsl(linux 的 windows 子系统)时,我经常想将目录更改为 windows 目录。 wslpath 获取一个 windows 目录,如 C:\Windows 并将其转换为 wsl 版本 /mnt/c/Windows。像这样引用一个结构效果很好(虽然我怀疑有边缘情况):

cd "`wslpath 'C:\Windows'`"

我想做的是将其转换成一个 bash 函数,我可以将其放入我的 .bashrc 文件中,使其更易于输入。我希望能够输入如下内容:

wcd 'C:\Windows'

问题是引用所有这些引语,所以我得到了我想要的。此选项失败:

wcd ()
{
  cd "`wslpath ''`"
}

那个永远不会奏效,但我更有希望:

wcd ()
{
  cd \"\`wslpath \'\'\`\"
}

这是我对 shell 引用的限制,但我相信应该可以让它正常工作。

单引号防止变量扩展,因此 '' 生成文字字符串 </code>.</p> <p>命令替换是一个命令边界,所以你可以说</p> <pre><code>wcd () { cd "`wslpath ""`"; }

不会碰到公认的第二个引号关闭第一个引号开始的字符串,而不是嵌套,否则您通常无法做到这一点。

...虽然广泛首选的现代命令替换语法绝对应该在任何新代码中使用;

wcd () { cd "$(wslpath "")"; }

感谢您注意正确引用您的论点!