【问题标题】:Opening directory in file explorer from WSL2从 WSL2 在文件资源管理器中打开目录
【发布时间】:2021-10-03 16:12:51
【问题描述】:

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

我尝试输入“explorer.exe Desktop/”,但它会打开 Documents,实际上每次我尝试运行它时,它只会打开 Documents,除非我输入“explorer.exe .”,然后它会打开当前目录正确,但我希望它可以与我给它的任何目录一起使用。有什么想法吗?

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

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

键入不带引号的“某些路径”,它会在文件资源管理器中打开路径,我还看到我需要在 explorer.exe 的参数周围添加引号

【问题讨论】:

    标签: bash windows-subsystem-for-linux wsl-2


    【解决方案1】:

    答案已在帖子中,但我会在此处再次输入。 把这个函数放在你的 ~/.bashrc 中

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

    现在,当您键入 start “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 函数时所说的。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

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

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

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

    【讨论】:

    • 它仍然会打开 Documents 文件夹,即使我指定了绝对路径,我还是找到了一个可以在线 bash 的功能。
    • 我错了,我输入的路径不带引号,但现在可以了,仍然必须是完整路径。感谢您的澄清
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多