如何从 Windows 10 WSL 访问 linux/Ubuntu 文件?

mpe*_*pen 146 windows-10 windows-subsystem-for-linux windows-10-v1607

这个问题回答了如何从 Ubuntu Bash 访问 Windows 文件,但我该怎么做?

具体来说,我需要从位于/home/mark/.ssh/id_rsaBash 下的Windows 访问我的 SSH 密钥。

Ric*_*ner 82

用于 Windows 命令行的 PM 在这里:

2019 年 10 月更新:更新下面的响应以反映新添加的通过 Win10 1903(及更高版本)中新集成的 P9 服务器直接访问发行版的 Linux 文件的能力。

重要提示:通过 Windows 文件系统探查以访问 Linux 文件已经并将继续不受支持,并且强烈建议反对!要了解原因,请阅读这篇文章

那么如何使用 Windows 工具(例如记事本、VS/VScode 等)访问 Linux 文件呢?以前,您不能,但从 Windows 10 1903 开始​​,我们(终于!)通过 P9 文件服务器将您的发行版的文件系统公开给 Windows。我们还发布了一个深入的视频,讨论这是如何工作的!您还可以在此博客文章中阅读此新功能的摘要

在此处输入图片说明

期待听到您如何使用此功能。如果您发现任何问题,请在此处的 WSL GitHub 存储库上提交问题:https : //github.com/Microsoft/wsl

  • 与 Axeman 类似的情况,当我运行 `explorer.exe .` 时,它会打开 System32 文件夹。@RichardTurner 手动步骤在哪里? (7认同)
  • 先生,这个9P文件服务器功能对普通用户稳定吗?如果没有,那么最好添加关于使用不稳定内部构建的警告。许多用户可能不熟悉它。不过,一个有趣的事实是,您的回答包含 2016 年和 2019 年的博客,大约 3 年;) (2认同)
  • 自从我第一次听说这个命令被发布以来,我一直在 Ubuntu 上尝试这个命令,每次更新我的系统。我的资源管理器总是转到我的文档文件夹。而且我还没有找到“启用”此功能的任何*步骤*。 (2认同)

dre*_*721 78

该位置实际上已在最新版本中移动到:

C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
Run Code Online (Sandbox Code Playgroud)

请参阅来自Microsoft/WSL #2578 的GitHub 问题

正如上面的问题和下面的评论中提到的,不要从 Windows 操作系统中弄乱这些文件。

https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

  • 我们强烈建议您不要从 WINDOWS 进入发行版根文件夹。如果您这样做,数据丢失和/或损坏的可能性很大:请阅读此帖子了解更多详细信息:https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-文件-使用-windows-apps-and-tools/ (11认同)
  • “我怀疑有人会尝试以这种方式操纵或更改文件”。你认为我为什么大声喊出上面的建议?我们每周多次收到人们的来信,他们忽略或没有阅读此建议,最终损坏了根文件夹中的文件。哎呀,有一些工具可以替换您的(测试版)发行版文件,这也经常导致这种情况。 (2认同)
  • 我在资源管理器中浏览到通过 Ubuntu WSL 创建的文件夹,结果它不可逆转地破坏了权限......所以是的,我不建议这样做! (2认同)

小智 54

\\wsl$\Ubuntu\home\user\whatever 
Run Code Online (Sandbox Code Playgroud)

在资源管理器或运行小部件 (Cmd+R) 中。像普通的网络共享一样工作,操作文件是安全的。

您还可以将其映射到驱动器或文件夹,就像任何其他网络共享一样。

注意:这是在 Windows 10 build 18342 中实现的新功能

  • 还值得注意的是,运行 `\\wsl$` 将允许您使用资源管理器导航到正确的安装和路径(如果您有多个发行版 (11认同)
  • 此答案应标记为“官方”答案,因为使用 \\wsl$ 共享是从 Windows 安全编辑 WSL Linux 文件的唯一途径 (6认同)
  • \\wsl$\Ubuntu-20.04 (3认同)
  • 当我在资源管理器中输入 `\\wsl$` 时,它没有显示任何内容。在 cmd 中,我使用 `wsl -l` 来查看发行版列表并使用确切的名称,例如 `\\wsl$\Ubuntu-18.04`。一旦我打开了这个位置,`\\wsl$` 也开始显示它...... (3认同)

ono*_*oma 11

可以,但不建议从 Windows 资源管理器中操作该文件夹。如果您想从 lxss 文件夹中复制、移动、编辑或删除文件,您需要使用命令行工具在 bash 中执行此操作。只有 /mnt/* 上的文件才能真正从 Windows 资源管理器中操作。

  • 听起来这应该是一个错误。Windows 要么不让我们访问这些文件,要么不给我们只读访问权限,或者他们应该拦截对 linux 文件的写入调用,而不是修改属性。谢谢你的提示。我只想阅读文件,所以希望这不是问题。 (4认同)
  • 驻留在 Volfs 文件夹(如 /home)中的每个文件都具有存储该文件的 Linux 权限的扩展属性。如果您在 Windows 编辑器上编辑该文件,那么这些属性将丢失并且文件将从 bash 中消失。您可以在此处阅读更多信息:https://blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support/ (3认同)

mpe*_*pen 9

通过搜索我的整个 C 驱动器找到它。文件在这里:

C:\Users\<username>\AppData\Local\lxss
Run Code Online (Sandbox Code Playgroud)

例如,我的 SSH 密钥在这里:

C:\Users\Mark\AppData\Local\lxss\home\mark\.ssh\id_rsa
Run Code Online (Sandbox Code Playgroud)

  • @John D WSL 位于将安装应用程序的包文件夹中。对我来说是:C:/Users/{username}/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/rootfs/ Cont. 到 https://github.com/Microsoft/WSL/issues/402#issuecomment-321853125 (3认同)
  • 自官方 FCU 更新以来,路径似乎发生了变化。 (2认同)

mas*_*ilo 7

powershell,使用

cd ${env:appdata}\..\local\packages\canonical*\localstate\rootfs
Run Code Online (Sandbox Code Playgroud)

然后

ls
Run Code Online (Sandbox Code Playgroud)

返回相同的文件夹列表

ls / 
Run Code Online (Sandbox Code Playgroud)

在 WSL 上的 bash 中。


nev*_*ves 6

如果打开 Windows 资源管理器,输入路径,\\wsl$它将列出所有已安装的 Linux 发行版。

  • 此信息已于 2019 年 10 月建议 (2认同)

归档时间:

查看次数:

243090 次

最近记录:

4 年,3 月 前