cd wslpath作为bash函数shell引用问题



当使用wsl(linux的windows子系统(时,我经常想将目录更改为windows目录。wslpath获取一个类似C:\windows的windows目录,并将其转换为wsl版本/mnt/C/windows。只要引用一点这样的构造,效果就很好(尽管我怀疑有边缘情况(:

cd "`wslpath 'C:Windows'`"

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

wcd 'C:Windows'

问题是引用所有这些引文,这样我就能得到我想要的。此选项失败:

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

这一点永远不会奏效,但我对更有希望

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

这大约是我对shell引用的限制,但我相信这应该是可能的。

单引号阻止变量展开,因此'$1'生成文本字符串$1

命令替换是一个命令边界,所以你可以说

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

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

尽管非常首选的现代命令替换语法肯定应该在任何新代码中使用;

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

注意正确引用你的论点值得称赞!

最新更新