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 "")"; }
感谢您注意正确引用您的论点!
使用 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 "")"; }
感谢您注意正确引用您的论点!