如何访问 Windows 上区分大小写的路径(使用 Bash-on-Ubuntu-on-Windows 创建)?

tmr*_*232 5 bash windows-explorer filesystems windows-10 windows-subsystem-for-linux

Bash-on-Ubuntu-on-Windows 支持区分大小写的文件路径。这意味着我可以创建两个名称仅大小写不同的文件或目录。但是,我在访问这些文件时遇到问题。

跑步

bash -c "touch Magic ; mkdir magic ; echo Secret! > magic/secret"
Run Code Online (Sandbox Code Playgroud)

在该目录中创建一个文件名Magic、一个名为的目录magic和一个文件名secret

bash -c "ls -lR" 产量

.:
total 0
drwxrwxrwx 2 root root 0 Aug 23 10:37 magic
-rwxrwxrwx 1 root root 0 Aug 23 10:37 Magic

./magic:
total 0
-rwxrwxrwx 1 root root 8 Aug 23 10:37 secret
Run Code Online (Sandbox Code Playgroud)

(我不确定为什么会得到root,因为它不是默认用户,但这似乎与我的问题无关。)

Windows 资源管理器显示: Windows 资源管理器显示文件和目录

现在,虽然bash可以轻松访问magic/secret目录中的文件,但 Windows 似乎将目录和文件视为一回事。所以双击目录我得到一个“目录名无效”的错误 dbl 单击目录时出错

使用 也是如此cd,因为我被The directory name is invalid.打印出来了。

有没有办法(除了使用 Bash)来访问magic/secret文件?

部分答案

我找到了一种以编程方式执行此操作的方法,并进行了一些注册表更改。描述在这里。但似乎没有办法用现有的 Windows 工具来做到这一点。

phu*_*clv 1

您无法在资源管理器中访问这些文件夹,仅仅是因为 Win32 子系统不支持区分大小写,并且资源管理器不支持 POSIX 子系统

内部版本 14361

有关内部版本 14361 的一般 Windows 信息,请访问 Windows 博客。

要跟踪或报告问题,请访问我们的 Github 页面。

固定的

  • DrvFs 现在在 Windows 上的 Ubuntu 上的 Bash 中运行时区分大小写。

  • 用户可以将 case.txt 和 CASE.TXT 放在其 /mnt/c 驱动器上

  • 仅 Windows 上 Ubuntu 上的 Bash 支持区分大小写。在 Bash 之外时,NTFS 将正确报告文件,但与 Windows 中的文件交互时可能会出现意外行为。

  • 每个卷的根目录(即/mnt/c)不区分大小写

  • 有关在 Windows 中处理这些文件的更多信息,请参阅此处

https://docs.microsoft.com/en-us/windows/wsl/release-notes#build-14361