我刚开始学习机器人技术,并开始研究 Linux 世界,因为很多人都推荐它。但我依赖很多 Windows 软件,而这些软件在 Ubuntu 上的支持很差(甚至根本不支持)。所以我决定使用 WSL 2。
但我真的不明白 Windows 和 Ubuntu 安装之间的文件管理是如何进行的。据我所知,Linux 文件夹就像我的 C 盘上的一个分区,所有与 Linux 相关的东西都存储在其中。因此,您通常希望将使用命令行执行任务的文件存储在 Linux/ubuntu 文件夹中以获得更好的性能?(如果我错了,请告诉我)
像这样Microsoft 文档说:
为了获得最快的性能速度,如果您在 Linux 命令行(Ubuntu、OpenSUSE 等)中工作,请将文件存储在 WSL 文件系统中。如果您在 Windows 命令行(PowerShell、命令提示符)中工作,请将文件存储在 Windows 文件系统中。
我已经阅读并观看了有关如何有效使用命令行和包管理器的教程,并希望开始将它们用于我的项目。我的所有项目、解释器/编译器和文本编辑器目前都在 Windows 安装中。假设我现在将这些文件移至 Ubuntu 文件夹,并在使用命令行时获得性能/速度的提升。太棒了!
但是,假设我想开始使用命令行来控制我的整个系统,所有软件和文件最初都安装在 Windows 上。那么我应该将所有软件和个人文件移到 Ubuntu 安装中吗?如果软件是为 Windows 系统安装的,这会导致问题吗?以虚幻引擎为例,该软件针对 Windows 进行了优化,我从 Epic Games 下载时就为 Windows 系统安装了它。将该软件移到 Ubuntu 文件夹会导致问题吗?这是否相当于在纯 Ubuntu 安装上尝试安装虚幻引擎 Windows 安装?(没有 WSL)
另外,如果您有任何推荐阅读和资源供新 Linux 用户分享,我会很乐意学习!
答案1
让我们从问题标题开始:
使用 WSL2 时是否建议将所有 Windows 软件和个人文件移至 Ubuntu 文件夹?
答案是,不是。
我的所有项目、解释器/编译器和文本编辑器目前都在 Windows 安装中。假设我现在将这些文件移至 Ubuntu 文件夹,并在使用命令行时获得性能/速度的提升。
不太清楚您所说的“使用命令行时性能/速度的提高”是什么意思。WSL2 中没有任何东西可以使其本质上比运行 Windows 应用程序更快。事实上,它可能会更慢。WSL2/Ubuntu 数据存储在虚拟 SDD 中,它永远不会像存储它的本机 Windows 文件系统那样快。
当从 Ubuntu 访问 Windows 文件或反之亦然时,WSL2 使用 Plan9 (9P) 网络文件系统。这尚未实现。其他间接级别将会降低性能。
就性能而言,排名如下:
- 最快:Windows 应用程序访问 Windows 驱动器上的文件/数据。
- 快速:WSL2/Ubuntu 中的 Linux 应用程序访问 WSL2 文件系统中的文件/数据。
- 速度较慢:Windows 应用程序访问 WSL2 文件系统中的文件/数据。
- 最慢:WSL2/Ubuntu 中的 Linux 应用程序访问 Windows 文件系统上的文件/数据。
现在,除非您的应用程序数据密集,否则速度差异通常不会产生影响。但如果您开始在应用程序中读取或写入数百个文件,您就会开始注意到这一点。
我不使用虚幻引擎,但我认为它的一个常见用例是读取许多模型。如果是这样,那么您不希望您的数据(或应用程序)位于 Ubuntu 虚拟文件系统上。
现在轮到你可以在 WSL2 中的 Ubuntu 下安装 Linux 版本的虚幻引擎,但我也不建议这样做。虽然 Linux GUI 应用程序可以在 WSL2 中运行,但就功能和性能而言,它们绝对是“二流”的。
专注于在 WSL2 中运行 Ubuntu/Linux 应用程序:
该应用程序基于终端/控制台(例如,Vim、Node.js和相关构建工具等)
或者 Windows 中没有好的 GUI 替代方案
Linux 版本得到了更好的支持,具有您需要而 Windows 中没有的功能等。
为了那些应用程序,在 WSL2 下的 Ubuntu 中安装 Linux 版本及其数据。
附注:如上所述,您可以在 WSL2 下的 Ubuntu 中从命令行运行任何应用程序的 Windows 版本。但是,如果它不在您的 Windows 路径中,则需要使用 Linux 目录结构提供完整路径。您还需要提供扩展名(.exe
)。
例如,运行记事本:
/mnt/c/WINDOWS/System32/notepad.exe
或者(假设 Google 搜索结果正确):
/mnt/c/Program\ Files\Epic\ Games\UE_5.1\Engine\Binaries\Win64\UnrealEditor.exe
答案2
如果“移动”仅仅意味着移动当前文件;
那么您将面临纯粹的失败 - 除非您拥有以完全相同的方式解释文件的软件(例如编译器)。
提取源代码并进行编译,然后运行就可以了 - 假设源代码是以允许为 Linux 编译的样式编写的。
获取知识的途径:
Windows cmd.exe 比较古老且特殊,Linux 的命令“Shell”可能被视为与其相对应,有多个变体,但通常与 Ubuntu 一起安装的是“Bash”。
www.tldp.org有几个“Bash 指南”,对于初学者来说可以很好地浏览,它们有点旧但仍然非常有效。
shell 可以看作是 Linux 的基础,具有多种自动化和调整的可能性。GUI 软件(窗口管理器)具有所有常规选项,但很少允许相同程度的控制。那里也有几个可选版本。不过我不知道在 WSL 中是否有这种可能性。
需要指出的一点是:
文本文件或源代码完全可以在两者之间进行传输,但要记住一点:Windows 使用 CR+LF 作为行尾,而 Linux 仅使用 LF。
unix2dos
和dos2unix
是用于转换的 shell 命令。
$ sudo apt install dos2unix
# 安装这两者。