将您的 JavaScript 开发迁移到 Windows 上的 Bash

已发表: 2022-03-10
快速总结↬喜欢您的 Bash 终端,但也喜欢您的 PC? 也许您已经关注了一些新的 Surface 硬件,但没有终端就无法进行切换。 现在您可以拥有 Windows 和 Bash。 在本文中,我们将深入了解如何设置用于 JavaScript 开发的 Windows/Linux 开发盒。

我是那些没有 Bash 终端就活不下去的人之一。 这个唯一的事实使我很难在 Windows 上进行前端工作。 我在微软工作,我在 Mac 上。 直到几年前新的 Surface 硬件系列问世,我才意识到:我必须拥有其中一个

所以我得到了一个。 确切地说,是运行 Windows 10 的 Surface Book 2。 我现在正在起草这篇文章。 我的甜美的 Bash 提示符呢? 嗯,当然是我随身带了。

在本文中,我将深入了解 Windows 10 中的新技术如何使您能够在 Windows 上运行完整的 Linux 终端。 我还将向您展示我惊人的终端设置(被“我”称为“有史以来最好的”)以及如何设置您自己的 Windows/Linux 开发机器。

如果您一直渴望某些 Surface 硬件,但又离不开 Linux 终端,那么您来对地方了。

注意在撰写本文时,本文中的许多项目将要求您使用或切换到各种项目的“预览”或“内部人员”版本,包括 Windows。 这些东西中的大部分将在未来的某个时候出现在主要的 Windows 版本中。

跳跃后更多! 继续往下看↓

适用于 Linux 的 Windows 子系统 (WSL)

适用于 Linux 的 Windows 子系统或“WSL”使您能够在 Windows 上运行 Linux。 但这种疯狂的科学究竟什么?

WSL 目前的化身是将 Linux 系统调用转换为 Windows 系统调用的转换层。 Linux 在 WSL 之上运行。 这意味着为了在 Windows 上安装 Linux,您需要做三件事:

  1. 启用 WSL,
  2. 安装Linux,
  3. 始终在列表中包含三个项目。

事实证明,翻译层有点慢——有点像我试图记住我是否需要spliceslice 。 当 WSL 读取和写入文件系统时尤其如此。 这对 Web 开发人员来说是个大问题,因为任何正确的npm install都会将数千个文件复制到您的机器上。 我的意思是,我不了解你,但我不会留下自己的弦乐。

WSL 的第 2 版是另一回事。 它比当前版本快得多,因为它利用了 Windows 中的虚拟化核心,而不是使用转换层。 当我说它“相当快”时,我的意思是快得多。 像我一样快谷歌搜索“拼接与切片”。

出于这个原因,我将展示如何安装 WSL 2。在撰写本文时,这将要求您使用 Windows 的“Insider”版本。

首先要做的事情:按照此简短指南在 Windows 10 上启用 WSL 并检查您的 Windows 版本号。

安装完成后,点击 Windows 键并输入“windows Insider”。 然后选择“Windows Insider 程序设置”。

Windows 预览体验计划设置菜单选项
(大预览)

对于要使用的“环”,您将有几个不同的选择。 我认识的很多人都在快圈上。 不过,我是个谨慎的人。 当我还是个孩子的时候,我会在操场上滑下滑梯,肚子撑着两边。 这就是为什么我留在慢环上。 我已经使用它几个月了,我发现它并不比普通 Windows 更具破坏性或不稳定。

如果您想要 WSL 2,这是一个不错的选择,但您不想死在幻灯片上。

Windows Insider 设置屏幕显示“慢”环
(大预览)

注意发表这篇文章后,我了解到 WSL 2 实际上并不在慢环上。 您需要在快速环上才能获得它。 在写这篇文章的过程中,我一定在某个时刻处于快速状态。 这么快的铃声。 祝你在幻灯片上好运!

接下来,您需要在 Windows 中启用“虚拟机平台”功能,这是 WSL 版本 2 所要求的。要进入此屏幕,请按 Windows 键并键入“windows features”。 然后选择“打开或关闭 Windows 功能”。 选择“虚拟机平台”。 “Linux 的 Windows 子系统”选项应该已经启用。

突出显示“虚拟机平台”和“Linux 的 Windows 子系统”的“Windows 功能”屏幕
(大预览)

现在 WSL 已启用,您可以安装 Linux。 具有讽刺意味的是,您直接从 Windows 应用商店执行此操作。 只有在 2019 年,我才会建议你“从 Windows 商店安装 Linux”。

有几种不同的发行版可供选择,但 Ubuntu 将成为我们稍后将配置的所有工具(包括 VS Code)中最受支持的发行版。 从这里开始的所有说明都假设安装了 Ubuntu。 如果您安装不同的发行版,则所有赌注都将取消。

从 Windows 应用商店搜索“Ubuntu”。 将有三个可供选择:Ubuntu、Ubuntu 18.04 和 Ubuntu 16.04。 Ubuntu 真的很喜欢 04 次要版本号,不是吗?

Windows 应用商店中的“Ubuntu”项目
(大预览)

“Ubuntu” 发行版(此屏幕截图中的第一个)是“元版本”,或者更确切地说是一个仅指向最新版本的占位符。 截至目前,那是 18.04。

我选择了元版本,因为稍后我将向您展示如何使用 Windows 资源管理器浏览 Linux 文件系统,并且将“Ubuntu 18.04”作为驱动器名称与“Ubuntu”相比有点混乱。

此安装速度非常快,具体取决于您的 Internet 连接。 它只有大约 215 兆字节,但我在这里使用的是千兆连接,你怎么知道有人在使用千兆连接? 别担心,他们会告诉你的。

安装后,您现在将在开始菜单中拥有一个“Ubuntu”应用程序。

Ubuntu 已安装并显示在 Windows 开始菜单中
(大预览)

如果你点击它,你会得到一个 Bash 终端!

在 Windows 上运行的 Ubuntu 终端
(大预览)

花点时间沉浸在科技的奇迹中。

默认情况下,您将在 WSL 版本 1 中运行。要升级到版本 2,您需要打开 PowerShell 终端并运行命令。

点击“Windows”键并输入“Powershell”。

开始菜单中的“Powershell”项
(大预览)

在 PowerShell 终端中,您可以通过执行wsl --list --verbose查看您拥有的 WSL 版本。

列出从 Powershell 中运行的所有 WSL 实例的详细列表
(大预览)

如果您显示的是版本 1,则需要执行--set-version命令并指定实例的名称 (Ubuntu) 和您想要的版本 (2)。

 wsl --set-version Ubuntu 2 
使用 Powershell 将 WSL 的版本设置为版本 2
(大预览)

这将需要一些时间,具体取决于您的机器有多少肉。 我花了“几分钟”给予或接受。 完成后,您将使用最新最好的 WSL 版本。

在 Linux 上是你的大脑……在 Windows 上。

Linux 不是 Windows。 WSL 不是 Windows 操作系统之上的 bash 提示符。 它本身就是一个完整的操作系统,具有自己的文件夹结构和已安装的应用程序。 如果您使用 Windows 安装程序安装 Node,在 Linux 中键入node将失败,因为 Node 未安装在 Linux 中。 它安装在 Windows 上。

然而,WSL 的真正魔力在于它无缝连接 Windows 和 Linux 的方式,以便它们在您的机器上显示为一个文件系统。

文件和文件夹导航

默认情况下,Ubuntu 终端会将您放入 Linux 主目录(或/home/your-user-name )。 您可以转到/mnt/c移动到 Windows 端。

列出 C 盘内容的 Ubuntu 终端
(大预览)

请注意,此处拒绝了某些权限。 我必须右键单击 Ubuntu 图标并单击“以管理员身份运行”才能访问这些文件。 这就是 Windows 提升权限的方式。 Windows 上没有 sudo。

启动应用程序

您可以从 Ubuntu 终端启动任何 Windows 应用程序。 例如,我可以从 Unbuntu 终端打开 Windows Explorer。

Windows 资源管理器和 Ubuntu 终端
(大预览)

这也适用于相反的情况。 您可以执行安装在 Linux 端的任何应用程序。 在这里,我正在从 Windows 命令行执行安装在 Linux 中的“财富”。 (因为如果没有随机的、毫无意义的运气,它就不是一个正确的 Linux 安装。)

执行 Linux“财富”程序的 Windows 命令行
(大预览)

两种不同的操作系统。 两种不同的文件系统。 两组不同的已安装应用程序。 看看这怎么会让人困惑?

为了保持一切顺利,我建议您将所有 JavaScript 开发文件和工具都安装在 Linux 端。 也就是说,在 Windows 和 Linux 之间移动并从两个系统访问文件的能力是 WSL 的核心魔力。 不要忘记它,因为它使整个设置比标准的 Linux 机器更好。

设置您的开发环境

从现在开始,我将为您列出一些我认为在 Windows 上设置杀手级 Linux 的自以为是的项目。 请记住:我的意见就是这样。 意见。 就像我所有的意见一样,它们是 100% 正确的。

获得更好的终端

是的,当你安装 Ubuntu 时,你有一个终端。 它实际上是连接到您的 Linux 发行版的 Windows 控制台。 这不是一个糟糕的控制台。 您可以调整它的大小,打开复制/粘贴(在设置中)。 但是您不能执行选项卡或打开新窗口之类的操作。 就像很多人在 Mac 上使用替代终端程序(我使用 Hyper)一样,Windows 也有其他选项。 Github 上的 Awesome WSL 列表包含一个非常详尽的列表。

这些都是很好的模拟器,但是有一个新选项是由非常了解 Windows 的人构建的。

微软一直在开发一个名为“Windows Terminal”的新应用程序。

Windows 应用商店中的 Windows 终端项目
(大预览)

Windows 终端可以从 Windows 应用商店安装,目前处于预览模式。 我已经使用了很长一段时间了,它有足够的功能并且足够稳定,足以让我给它一个全力支持。

新的 Windows 终端具有完整的选项卡界面、复制/粘贴、多个配置文件、透明背景、背景图像——甚至是透明背景图像。 如果你想定制你的终端,这是一个野外日,我来赢得这场麻袋比赛。

这是我当前的终端。 我们将在这里进行一些重要的调整。

作者当前终端:深蓝色背景,右下角有一颗卡通星球。绿色和白色的文本。
(大预览)

Windows 终端是完全可定制的。 单击左上角的“ ”箭头(“ + ”符号旁边)可以访问“设置”。 这将打开一个 JSON 文件。

绑定复制/粘贴

文件顶部是所有键绑定。 我做的第一件事是将“复制”映射到Ctrl + C并粘贴到Ctrl + V 。 我还要如何从 Stack Overflow 复制和粘贴我不理解的命令?

 { "command": "copy", "keys": ["ctrl+c"] }, { "command": "paste", "keys": ["ctrl+v"] },

问题是Ctrl + C已经映射到 SIGINT 或 Linux 上的 Interrupt/kill 命令。 有很多 Windows 终端可以通过将复制/粘贴分别映射到Ctrl + Shift + CCtrl + Shift + V来处理这个问题。 问题是复制/粘贴是Ctrl + C / Ctrl + V在 Windows 中每隔一个地方。 我只是在终端中一遍又一遍地按Ctrl + C试图复制东西。 我无法停止这样做。

Windows 终端以不同方式处理此问题。 如果突出显示文本并按Ctrl + C ,它将复制文本。 如果有一个正在运行的进程,它仍然会向下发送 SIGINT 命令并中断它。 这意味着您可以安全地将Ctrl + C / Ctrl + V映射到 Windows 终端中的复制/粘贴,并且不会干扰您中断进程的能力。

谁想到复制/粘贴会引起如此多的心痛?

更改默认配置文件

默认配置文件是打开新选项卡时出现的内容。 默认情况下,这是 Powershell。 您需要向下滚动并找到 Linux 配置文件。 这是打开wsl.exe -d Ubuntu的那个。 复制其 GUID 并将其粘贴到defaultProfile设置中。

我已经移动了这两个设置,因此它们彼此相邻以便更容易查看:

在 settings.json 文件中突出显示的默认终端配置文件
(大预览)

设置背景

我喜欢我的背景是深色的纯色,右上角有一个扁平的标志。 我这样做是因为我希望徽标明亮可见,但不妨碍文本。 这是我自己制作的,但在 Simple Desktops 中有大量平面图像可供选择。

背景是用backgroundImage属性设置的:

 "backgroundImage": "c:/Users/YourUserName/Pictures/earth.png" 
右下角带有卡通行星的蓝色方形图像
(大预览)

您还会注意到一个名为“亚克力”的设置。 这使您可以调整背景的不透明度。 如果您有纯色背景色,这非常简单。

 "background": "#336699", "useAcrylic": true, "acrylicOpacity": 0.5 
背景略透明的终端
(大预览)

您也可以通过将arcylicOpacity设置与backgroundImageOpacity相结合来使用背景图像来实现这一点:

 "backgroundImage": "c:/Users/username/Pictures/earth-and-stars.png", "useAcrylic": true, "acrylicOpacity": 0.5 
具有透明图像和透明背景的终端
(大预览)

对于我的主题,透明度使一切看起来都很安静,所以我将useAcrylic设置为false

更改字体

构建 Windows 终端的团队也在开发一种名为“Cascadia Code”的新字体。 在撰写本文时它不可用,因此您可以使用默认的 Windows 字体。

Windows 终端中的默认字体是“Consolas”。 这与 Windows 命令行使用的字体相同。 如果你想要真正的 Ubuntu 感觉,Chris Hoffman 指出了如何安装官方的 Ubuntu Mono 字体。

这是之前和之后,因此您可以看到差异:

 "fontFace": "Ubuntu Mono" 
终端中 Consolas 和 Unbuntu Mono 字体的并排比较
(大预览)

它们看起来很相似; 主要区别在于 Ubuntu Mono 的间距,这使得终端更加紧凑和清洁。

颜色方案

颜色方案都位于设置文件的底部。 我复制了“坎贝尔”配色方案作为基线。 我尝试将颜色与他们的名字相匹配,但我也不怕流氓。 我会将“#ffffff”映射到“blue”——我什至不在乎。

settings.json 文件中的配色方案设置
(大预览)

如果你喜欢这个我命名为“地球”的特殊方案,我已经把这个要点放在一起,这样你就不必从屏幕截图中手动复制所有这些乱七八糟的东西。

注意颜色预览来自 VS Code 的“Color Highlight”扩展。

更改默认起始目录

默认情况下,WSL 配置文件会将您放入 Windows 端的主目录。 根据我在本文中推荐的设置,最好将其放到您的 Linux home文件夹中。 为此,请更改“Ubuntu”配置文件中的startingDirectory设置:

 "startingDirectory": "\\\\wsl$\\Ubuntu\\home\\burkeholland"

注意那里的路径。 您可以使用此路径(减去额外的转义斜杠)从 Windows 命令行访问 WSL。

从 Windows 命令行对 Linux 主目录运行“dir”命令
(大预览)

安装 Zsh/Oh-My-Zsh

如果您以前从未使用过 Zsh 和 Oh-My-Zsh,那么您将获得真正的享受。 Zsh(或“Z Shell”)是 Linux 的替代 shell。 它扩展了 Bash 的基本功能,包括隐含的目录切换(无需键入cd )、更好的主题支持、更好的提示等等。

要安装 Zsh,请使用 apt 包管理器来获取它,它随 Linux 安装开箱即用:

 sudo apt install zsh

使用 curl 安装 oh-my-zsh。 Oh-my-zsh 是一组 zsh 配置,可通过插件、主题和无数键盘快捷键进一步改善 shell 体验。

 sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

然后它会询问您是否要将默认 shell 更改为 Zsh。 你这样做了,所以回答是肯定的,你现在可以使用 Zsh 和 Oh-My-Zsh 运行。

终端询问您是否要更改默认 shell
(大预览)

您会注意到提示现在干净多了。 您可以通过更改~/.zshrc文件中的主题来更改该提示的外观。

nano打开它,有点像 VIM,但你可以编辑内容并在需要时退出。

 nano ~/.zshrc

更改设置主题的行。 上面有一个带有完整主题列表的 URL。 我认为“云”那个很好。 而且很可爱。

在 zshrc 文件中设置的“云”主题
(大预览)

要获取对.zshrc的更改,您需要获取它:

 source ~/.zshrc 
“云”主题提示
(大预览)

注意如果你选择像“agnoster”这样需要字形的主题,你需要一个电力线注入版本的 Ubuntu Mono,它有……字形。 否则,您的终端将充满奇怪的字符,就像您在键盘上捣碎自己的脸一样。 Nerd Fonts 提供了一种看起来效果很好的字体。

现在,您只需输入目录名称即可执行更改目录等操作。 无需cd 。 想备份目录吗? 做一个.. 您甚至不必输入整个目录名称,只需输入前几个字母并按 Tab。 Zsh 将为您提供与您的搜索匹配的所有文件/目录的列表,您可以通过它们进行选项卡。

突出显示了许多路径之一的终端
(大预览)

安装节点

作为一名 Web 开发人员,您可能想要安装 Node.js。 我想你不必安装 Node 来进行 Web 开发,但在 2019 年感觉确实如此!

您的第一直觉可能是使用apt安装节点,您可以这样做,但您会因为两个原因而后悔:

  1. apt 上的 Node 版本已经过时了;
  2. 您应该使用版本管理器安装 Node,以免遇到权限问题。

解决这两个问题的最佳方法是安装 nvm(节点版本管理器)。 因为你已经安装了zsh ,你可以在你的 zshrc 文件中添加 nvm 插件,zsh 会处理剩下的事情。

首先,通过在zsh-nvm库中克隆来安装插件。 (别担心,Git 是 Ubuntu 安装的标准配置。)

 git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm

然后将其作为插件添加到~/.zshrc文件中。

 `nano ~/.zshrc` plugins (zsh-nvm git) 
添加了 zsh-vnm-plugin 的 zshrc 文件
(大预览)

请记住使用source ~/.zshrc .zshrc 再次获取 zshrc 文件,您将看到 nvm 正在安装。

显示 nvm 安装进度的终端
(大预览)

现在您可以使用 nvm 安装节点。 它可以轻松安装多个并排版本的节点,并轻松地在它们之间切换。 此外,进行全局 npm 安装时不会出现权限错误!

 nvm install --lts

我推荐这个而不是标准的 nvm 安装,因为该插件使您能够轻松升级 nvm。 这对于标准的“curl”安装来说是一种痛苦。 这是插件的一个命令。

 nvm upgrade

利用自动建议

我最喜欢的 zsh 插件之一是 zsh-autosuggestions。 它会记住您之前在终端中输入的内容,然后在您再次开始输入时识别它们,并“自动建议”您可能需要的行。 这个插件派上用场的次数比我记得的要多——特别是当涉及到我过去使用过但不记得的长 CLI 命令时。

将 repo 克隆到 zsh 扩展文件夹中:

 git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

然后将其添加到您的 zsh 插件并获取 zshrc 文件:

 nano ~/.zshrc # In the .zshrc file plugins(zsh-nvm zsh-autosuggestions git) source ~/.zshrc

该插件会读取您的 zsh 历史记录,因此请开始输入您之前输入的一些命令并观看魔术。 尝试输入上面那个长克隆命令的第一部分。

显示 zsh autosuggestions 自动完成 git clone 命令的终端
(大预览)

如果你点击 ,它将自动完成命令。 如果您继续按 ,它将循环遍历您历史记录中可能匹配的任何命令。

重要的键盘快捷键

我一直在使用一些终端快捷方式。 我在我所有的工具中都发现了这一点——包括 VS Code。 试图学习所有的快捷方式是浪费时间,因为你不会使用它们来记住它们。

以下是我经常使用的一些:

终端快捷方式它有什么作用?
Ctrl + L 这将清除终端并让您回到顶部。 这相当于输入“clear”。
Ctrl + U 这仅清除当前行。
Ctrl + A 将光标发送到命令行的开头。
Ctrl + E 移动到行尾。
Ctrl + K 删除光标后的所有字符。

而已! 其他一切我可能已经学过然后忘记了,因为它从来没有任何用处。

配置 Git(Hub/Lab/Whatevs)

Git 来自 Ubuntu,因此不需要安装。 您可以按照您选择的源代码控制主机上的说明来创建您的 ssh 密钥并使其正常工作。

请注意,在 Github 说明中,它告诉您使用“复制”实用程序来复制您的 ssh 密钥。 Ubuntu 有“xcopy”命令,但它在这里不起作用,因为就剪贴板而言,Linux 和 Windows 之间没有互操作性。

相反,您可以只使用 Windows 剪贴板可执行文件并直接从终端调用它。 您需要先使用cat获取文本,然后将其通过管道传输到 Windows 剪贴板。

 cat ~/.ssh/id_rsa.pub | clip.exe

Github 文档告诉您确保ssh-agent正在运行。 它不是。 当您尝试将密钥添加到代理时,您会看到:

显示 ssh 代理未运行的终端
(大预览)

您可以启动代理,但下次重新启动 Windows 或 WSL 停止时,您必须重新启动它。 这是因为 WSL 中没有初始化系统。 当 WSL 启动时,没有systemd或其他进程会启动您的所有服务。 WSL 仍处于预览阶段,团队正在为此制定解决方案。

与此同时,不管你信不信,也有一个 zsh 插件。 它被称为ssh-agent ,它与 oh-my-zsh 一起安装,所以你需要做的就是在.zshrc文件中引用它。

 zsh-nvm zsh-autosuggestions ssh-agent git

如果您第一次启动 WSL 时它没有运行,这将自动启动 ssh-agent。 不利的一面是,每次 WSL 重新启动时,它都会询问您的密码。 这意味着基本上只要您重新启动计算机。

终端提示输入 rsa 密钥的密码
(大预览)

VS 代码和 WSL

WSL 没有 GUI,因此您无法安装 VS Code 之类的可视化工具。 这需要安装在 Windows 端。 这会带来一个问题,因为您有一个在 Windows 端运行的程序访问 Linux 端的文件,这可能会导致各种怪癖和“权限被拒绝”问题。 作为一般经验法则, Microsoft 建议您不要使用 Windows 程序更改 WSL 端的文件。

为了解决这个问题,VS Code 有一个名为“Remote WSL”的扩展。 此扩展由 Microsoft 制作,允许您在 WSL 中进行开发,但可以从 VS Code 内部进行。

安装扩展后,您可以通过打开命令面板( Ctrl + Shift + P )并选择“Remote-WSL:新窗口”。

在命令面板中突出显示“远程 WSL:新窗口”命令的 VS Code
(大预览)

这会打开一个新的 VS Code 实例,让您可以像完全在 Linux 方面一样工作。 执行“文件/打开”浏览 Ubuntu 文件系统而不是 Windows 文件系统。

VS Code“打开文件”视图
(大预览)

VS Code 中的集成终端打开您精美定制的 zsh 设置。 当您安装了远程 WSL 扩展时,一切都“正常工作”。

如果您使用 code 从终端打开code . , VS Code 会自动检测到它是从 WSL 打开的,并会自动附加远程 WSL 扩展。

带有远程 WSL 的 VS 代码扩展

VS Code 的远程 WSL 扩展通过在 Linux 端设置一个小服务器,然后在 Windows 端从 VS Code 连接到该服务器来工作。 在这种情况下,当您从 WSL 打开项目时,您在 VS Code 中安装的扩展不会自动显示。

例如,我在 VS Code 中打开了一个 Vue 项目。 尽管我为语法高亮、格式化等安装了所有正确的 Vue 扩展,但 VS Code 的行为就像以前从未见过.vue文件一样。

在 VS Code 中打开的 .vue 文件,没有语法高亮显示
(大预览)

您已安装的所有扩展都可以在 WSL 中启用。 只需在 WSL 中找到您想要的扩展,然后单击“Install in WSL”按钮。

VS Code 中的 Vetur VS Code 扩展登陆页面
(大预览)

WSL 中安装的所有扩展都将显示在 Extensions Explorer 视图中它们自己的部分中。 如果你有很多扩展,单独安装每个扩展可能会有点烦人。 如果您只想安装 WSL 中的每个扩展,请单击“本地 - 已安装”部分顶部的小云下载图标。

VS Code 中的 Extensions 视图,突出显示了在 WSL 中安装所有扩展的图标
(大预览)

如何设置你的开发目录

这已经是一篇固执己见的文章,所以这是一篇关于我认为应该如何在文件系统上构建项目的你并没有问到的文章。

我将所有项目都放在 Linux 端。 我不会将我的项目放在“我的文档”中,然后尝试从 WSL 中使用它们。 我的大脑处理不了。

我创建了一个名为/dev的文件夹,我将它放在 Linux 中/home文件夹的根目录中。 在该文件夹中,我创建了另一个与我的 Github 存储库同名的文件夹: /burkeholland 。 该文件夹是所有项目所在的位置——即使是那些未推送到 Github 的项目。

如果我从不同的 Github 帐户(例如“microsoft”)克隆 repo,我将在“dev”中创建一个名为/microsoft的新文件夹。 然后我将 repo 克隆到其中的一个文件夹中。

基本上,我在模仿与本地机器上的源代码控制相同的结构。 我发现仅仅凭借它们的位置来推断项目在哪里以及它们附加到哪些存储库要容易得多。 这很简单,但在帮助我保持一切井井有条方面非常有效。 我需要我能得到的所有帮助。

作者认为终端中列出的文件夹结构
(大预览)

从 Windows 资源管理器浏览文件

有时您需要从 Windows 端获取 Linux 中的文件。 WSL 的美妙之处在于您仍然可以做到这一点。

一种方法是像访问映射驱动器一样访问 WSL。 直接从资源管理器栏中使用\\wsl$访问它:

 \\wsl$ 
Windows Explorer 将 Ubuntu 安装为挂载目录
(大预览)

出于多种不同的原因,您可能会这样做。 例如,就在今天,我需要一个不在网上商店中的 Chrome 扩展程序。 所以我在 WSL 中克隆了 repo,然后将它作为“解压扩展”导航到它,并将其加载到 Edge 中。

我在 Linux 中经常做的一件事是直接从终端打开包含文件的目录。 您也可以通过直接调用explorer.exe在 WSL 中执行此操作。 例如,此命令在 Windows 资源管理器中打开当前目录。

 $ explorer.exe . 
演示从终端在当前目录上打开 Windows 资源管理器的 GIF

这个命令虽然有点麻烦。 在 Linux 上,它只是open . . 我们可以通过在~/.zshrc中创建别名来实现同样的魔力。

 alias open="explorer.exe"

码头工人

当我说所有工具都应该在 Linux 端时,我的意思是。 这包括 Docker。

这是橡胶真正开始与道路相遇的地方。 我们这里需要的是 Docker,在 Linux 内部运行,在 Windows 内部运行。 当您在博客文章中写下它时,它有点像俄罗斯嵌套娃娃。 实际上,这很简单。

您需要适用于 Windows 的正确版本的 Docker。 在撰写本文时,这就是 WSL 2 技术预览版。

当您运行安装程序时,它会询问您是否要使用 Windows 容器而不是 Linux 容器。 你肯定会的。 否则,您将无法选择在 WSL 中运行 Docker。

选择了“使用 Windows 容器”选项的 Docker 安装屏幕
(大预览)

您现在可以通过单击系统托盘中的项目并选择“WSL 2 Tech Preview”来在 WSL 中启用 Docker:

Docker Daemon 上下文菜单中的 WSL2 技术预览选项
(大预览)

启动服务后,您可以在 WSL 中使用 Docker,就像您期望的那样。 在 WSL 中运行 Docker 提供了相当大的性能提升,以及容器冷启动时间的提升。

我是否还建议您为 VS Code 安装 Docker 扩展? 它为您的 Docker 设置提供了一个可视化界面,并且通常只是使使用 Docker 更容易,因为您不必记住所有这些命令行标志和选项。

在 Windows 上获得更多 Bash

至此,您应该了解如何在 Windows 上安装 Bash,以及在安装后它是如何工作的。 您可以无休止地自定义终端,并且可以添加各种 rad 程序来执行诸如自动设置 PATH 变量、创建别名、在终端中获取 ASCII 牛等操作。

在 Windows 上运行 Bash 为我打开了一个全新的世界。 我能够将我喜欢用于生产力方面的 Windows 和我作为开发人员依赖的 Linux 结合起来。 最重要的是,我现在可以用一台机器为两个平台构建应用程序。

延伸阅读

您可以在此处阅读有关 Windows 上的 Bash 的更多信息:

  • “适用于 Windows 10 的 Linux 安装指南的 Windows 子系统”,Microsoft Docs
  • “如何在 Windows 10 上安装和使用 Bash Shell”,Chris Hoffman,How-To Geek
  • “与 WSL 共享 SSH”,Drew Wilson
  • “让 Linux 的 Window 子系统变得疯狂”,Brian Ketelsen
  • “使用 Windows 10 的新 Bash Shell 可以做的一切”,Chris Hoffman,How-To Geek

特别感谢 Brian Ketelsen、Matt Hernandez、Rich Turner 和 Craig Loewen 对本文的耐心、帮助和指导。