如何使用资源管理器在 Windows 上的 Ubuntu 中进行文件操作?

如何使用资源管理器在 Windows 上的 Ubuntu 中进行文件操作?

使用Windows 10 上的 Ubuntu 上的 Bash我知道我的主文件夹位于C:\Users\<username>\AppData\Local\lxss\home\并且所有其他东西也都在那里的某个地方。

当我使用 Windows 资源管理器复制内容时,...\lxss\home它不会显示在 bash 中。也许是文件系统,也许是权限?好吧,让我\mnt\c\...通过 bash 从那里复制内容。有效。

现在我只想编辑weirdfile.txt主目录中的文件。我用 Windows 记事本打开它,编辑它,保存它 - 它从 bash 中消失了。从物理上讲,我仍然可以通过 Windows 资源管理器看到它在文件夹中,但在 bash 中它消失了。没有隐藏。sudo 没有帮助。以管理员身份启动 bash 没有帮助。

重现步骤

  1. C:\Users\<username>\AppData\Local\lxss\home\使用 Windows 资源管理器将文件夹复制到
  2. 使用以下命令检查主目录Windows 上的 Ubuntu 上的 Bash(重击)ls -a
  3. 观察到文件夹不存在
  4. 使用常规文本文件重复步骤 1-3
  5. 在 bash 中创建文件夹mkdir TestFolder
  6. C:\Users\<username>\AppData\Local\lxss\home\使用 Windows 资源管理器检查
  7. 观察文件夹是否存在
  8. 对常规文件重复步骤 5-7touch somefile.txt
  9. somefile.txt用您喜欢的文本编辑器打开并进行一些更改
  10. 当我们在 bash 中查看时,发现它somefile.txt已经消失了 ( )。ls -a

这是怎么回事?请介绍一下虚拟化文件系统,并告诉我如何在 Windows 中处理文件。通过 SSH 进入本地主机并通过 SCP 编辑文件?不用了,谢谢。我可以用 Explorer/Windows 工具处理文件吗?

我可以给你做得更好:

ln -s /mnt/c/Users/<username>/Desktop/weirdfile.txt /~/weirdfile.txt

有效。永远不会消失。我可以使用 Windows 工具处理文件。世界变得更美好了。不幸的是,Windows 上的 Bash 似乎无法理解 Windows 符号链接/硬链接,所以我必须在 Bash 内部对所有内容进行符号链接。

PS:用“ubuntu”和“windows”标记问题感觉很奇怪。

答案1

因此,微软的项目经理 Jack Hammons 链接到了这个优秀的官方资源:https://blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support/

问题是我运气很差(上面的链接略有修改):

虽然 [WSL] 文件存储在上述 Windows 目录中的常规文件中,互操作性使用 Windows不支持。如果从 Windows [WSL] 将新文件添加到这些目录中,则它会忽略它。许多编辑器在保存现有文件时还会删除 [用于存储 WSL 元数据的扩展属性],同样导致文件在 WSL 中无法使用

此外,由于 [WSL] 缓存目录条目,在 WSL 运行时从 Windows 对这些目录所做的任何修改都可能无法准确反映

所以即使我可以中的文件/文件夹C:\Users\<username>\AppData\Local\lxss\home\,我不应该通过 Windows 与它们进行交互。

关于符号链接:

虽然 NT 支持符号链接,但我们不能依赖这种支持,因为 WSL 创建的符号链接可能指向 /proc 之类的在 Windows 中没有意义的路径。

还有一个问题:当从某个地方符号链接文件时,/mnt/c/一切似乎都可以在 Windows 和 WSL 中正常工作。所以现在我有几个文件夹从我的文档符号链接到我的 WSL 主文件夹。我把事情搞砸了吗?

编辑:Rich Turner 非常友善地将这些信息放在了这里的半官方博客文章中https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/。虽然没有指定,但我的符号链接想法实际上似乎是一种好方法,因为已安装的 NTFS 分区被区别对待。

相关内容