如何在Windows上的Bash中打开当前目录?

51

我知道在 MacOS 上,人们使用 open . 命令来在文件管理器中打开当前目录。

有人知道在 Windows 的 Bash 中执行同样任务的适当命令吗?


你的问题是什么意思?想象一下,你正在查看一个Word文档。然后你想打开Ubuntu应用程序,立即进入Word文档所在的目录,MS-Word应用程序,...? - Dominique
16个回答

90
在Windows上使用Git Bash,只需键入:

On Windows with Git Bash, just type:

start .

它将在文件资源管理器中打开当前目录。


1
/mnt/c/Windows/System32/start: line 1: $'AcrSch2Svc\r': command not found 在这种情况下我该怎么办? - Soleil
7
在Windows上使用Git Bash,这对我很有帮助。 - user241244
1
非常感谢您,先生,我每隔几个月都在寻找这个命令,但总是遇到一些包含路径配置等内容的解决方案,所以您今天让我开心了。 - Християн Христов

34

现在您可以从Bash子系统调用explorer.exe。我设置了一个别名来使用它。为了保险起见,我还添加了将剪贴板复制到别名中。

别名:

alias open="explorer.exe"
alias pbcopy="clip.exe"

例子:

cat ~/.ssh/id_rsa.pub | pbcopy
open .
open "D:\\Dir"

开放式别名与 . 兼容,但如果您想指定目录,则需要将Windows路径传递给它。


1
关于 Windows 路径限制,您可以使用命令 cygpath --windows <路径> 进行转换。在此处阅读更多信息 - Maxim
wslpath 是子系统版本。 - Pieter-Uys Fourie

8

目前微软不建议将Windows资源管理器与Bash shell混合使用。在最新的win10 Insider版本中,您可以从Bash shell中使用类似以下内容的命令:

cmd.exe /c start .

如果您正在使用Win10周年纪念版,可以尝试安装桌面环境。请阅读此文档:https://github.com/microsoft/bashonwindows/issues/637。之后,您可以使用以下命令打开当前文件夹的窗口:

gnome-open .

似乎从WSL bash无法执行cmd.exe(或任何其他Windows .exe文件),您是否真的测试过,还是在猜测?当我输入“cmd.exe /c start .”时,会出现“Exec format error”。 - philwalk
我刚在最新的Insider Build 14971上进行了测试,它可以工作,但它总是打开C:\Windows\System32文件夹。 - onoma

6
您可以使用以下命令:explorer .

6

我正在使用这个函数:

open()
{
    explorer.exe  `wslpath -w "$1"`
}

如果你在路径 /mnt/c/Users/ 下,想要打开该文件夹,只需输入 open .

wslpath 仅能解析来自 Windows 系统的路径,请注意。如果你想执行类似于 open ~ 的操作,它将无法正常工作,会显示:

wslpath: /home/my-user: Result not representable

命令用法

wslpath usage:
  -a    force result to absolute path format
  -u    translate from a Windows path to a WSL path (default)
  -w    translate from a WSL path to a Windows path
  -m    translate from a WSL path to a Windows path, with ‘/’ instead of ‘\\’

  EX: wslpath ‘c:\users’

这个方法有效的证据:

wsdlpath working


不好意思,无法回答这个问题。 - Sweet Chilly Philly
在Windows上的Ubuntu Bash中,我得到了wslpath:。:无效参数 - dotnetCarpenter
你必须先设置别名 @dotnetCarpenter - nikoskip
1
我会点赞这个回答,因为它是有效的,但解释很糟糕。首先,“open”不是别名,而是一个函数。你可以把它放在你的.profile.bashrcbash_aliases等文件中,无论何时打开终端时都会被调用。其次,wslpath现在可以正确地将lxfstmpfs内部路径转换为Windows路径。也就是说,可以处理Linux子系统内的路径。 - dotnetCarpenter
@dotnetCarpenter 如果我的回答太“糟糕”,请随意修改。 - nikoskip
在Ubuntu Bash(WSL)上对我非常有效,这是最好的答案。 - jpmartineau

3
我已经添加了。
alias open='explorer.exe  `wslpath -w "$1"`'

添加到.bashrc文件中

当输入open时,打开当前文件夹

我正在使用Windows Ubuntu子系统。


2

开始。- 这相当于在bash中打开的开放。


2

试试这个

$ explorer .

这将适用于在Windows中使用的Bash命令。我正在使用R Studio,并能够打开该目录。

2
这个命令可以完成这个任务:
$ explorer

1
如果 start . 对你不起作用,那么它实际上与运行 explorer.exe . 相同,因此你可以为其创建一个别名,这就是我所做的。
alias start="explorer.exe"

顺便提一下:另一个有用的是BROWSER。explorer.exe能够启动你的默认浏览器。当你运行需要打开网页浏览器的脚本时,这会很方便,比如启动React.js开发服务器。

export BROWSER="explorer.exe"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接