从 WSL2 在文件资源管理器中打开目录

Opening directory in file explorer from WSL2

我在 windows 终端中,我想在文件资源管理器中打开目录,而在 WSL2 中 Ubuntu。

我尝试输入“explorer.exe Desktop/”,但它会打开文档,实际上每次我尝试 运行 它时,它只会打开文档,除非我输入“[=19] =]。”,然后它会正确打开当前目录,但我希望它能与我给它的任何目录一起工作。有什么想法吗?

编辑 1:我找到了这个函数,只需将它添加到你的 ~/.bashrc 中就可以了

start(){
    path=$(wslpath -w "")
    /mnt/c/Windows/explorer.exe "$path"
}

键入不带引号的“Some Path”开始,它会在文件资源管理器中打开路径,我还看到我需要在 explorer.exe

的参数周围添加引号

“桌面/”实际上并未解析为文件夹。请尝试以下操作:

explorer.exe "c:\users\<YOUR USERNAME>\Desktop"

这提供了到 explorer.exe 的完整(绝对)路径。

答案在 post 中,但我会在这里再次输入。 把这个函数放在你的 ~/.bashrc

start(){
    path=$(wslpath -w "")
    /mnt/c/Windows/explorer.exe "$path"
}

现在,当您键入开始“Some Path”时,您将在文件资源管理器中打开它。如果需要,您还可以从 /mnt/c/Windows/explorer.exe 中删除 /mnt/c/Windows/。

PTH(到这里的路径):基本上我的问题是我试图读取用户输入的路径以从 cmd 和 powershell 重新创建启动命令,但在 wsl2 中这要困难得多,因为它没有没有 GUI,所以它不知道如何使用 xdg-open 或其他工具打开它。使用来自 bash 的读取命令不够好,因为它总是让用户输入换行符,但这使用参数并立即获取您输入的下一个内容 bash ,这太棒了。 bash 中的函数与参数一起工作,比如让你在 c 中键入 ./program arg1 arg2 arg3... 的程序,在 bash 中它是相同的,数字表示参数,所以 $0 是第零个参数始终是名称,因此我们不使用它。从 $1 $2 $3 等开始是 bash 函数中可用的参数。在我们的例子中,键入“start Desktop/”,$1 被分配为“Desktop/”,然后转换为 C:\Users\Desktop 并分配给 $path。然后 $path 被传递给 /mnt/c/Windows/explorer.exe 最终在文件资源管理器中打开。很漂亮吧?这就是我 1 分钟前第一次看到和理解 bash 函数时所说的。