Microsoft Windows可能是桌面的主要玩家,但是快速增长的开源软件市场——尤其是管理和开发工具——显然更倾向于Linux。更不用提移动市场,在那里Android使用Linux变体。如果你是Windows系统的开发人员,那么熟悉Linux功能的呼声就会越来越高。
多年来,微软为在Windows上使用Linux功能引入了各种变通方法,如PowerShell与SSH、Cygwin和MSYS。在虚拟机中运行Linux是另一种选择。但是,vm会消耗大量的资源,并且不能提供一流的Linux体验,例如,您不能编辑本地文件或完全访问本地驱动器。
随着IT世界在许多项目上转向Linux,微软已经提出了一个新的产品来进入这个不断增长的市场。答案是在Windows上猛击。在这里,我们将指导您在Windows上安装Bash,并让您了解在Linux命令行中可以做什么,以及为什么要这样做。
Windows上Bash的概述
Windows上的Bash是Windows 10新增的一个功能。微软已经与Canonical合作,也就是Ubuntu Linux的创造者,在Windows中构建这个新的基础设施,称为Linux的Windows子系统(WSL)。它允许开发人员访问一套完整的Ubuntu CLI和工具。有了本地Linux经验,开发人员可以在Windows上运行Linux命令,包括访问本地文件和驱动器。由于Linux是与Windows集成在一起的,所以开发人员可以灵活地在Linux和Windows中处理相同的文件。简单地说,Windows上的Bash将Ubuntu用户带到了Windows而不是Linux内核。
Bash和PowerShell
微软在PowerShell中已经有了一个命令shell。那么在Windows上的Bash有什么不同呢?PowerShell是Microsoft用于自动化任务的配置管理框架。它用于管理具有面向api架构的Windows。另一方面,Bash主要依靠文本文件进行自动化和开发。两者在焦点和设计上都有所不同。例如,当您使用。列出目录中的文件时ls
命令,PowerShell将输出显示为文件对象,而Windows上的Bash将输出显示为一组字符串。值得庆幸的是,对于Windows管理员来说,您可以同时使用这两种解决方案,并从中获得最大的好处。
需要注意的是:PowerShell有允许您这样做的别名认为您正在运行传统的Bash命令,而实际上,您正在运行PowerShell cmdlet。这可能会绊倒一些人。例如,ls
是?的别名吗Get-ChildItem
命令。同样的,松材线虫病
是…的别名Get-Location
和cd
是…的别名Set-Location
。对于PowerShell中的所有别名列表,请使用混叠
cmdlet。
Windows上的Bash为开源开发人员提供了多种好处。通过将本机Linux功能引入Windows, Windows上的Bash消除了使用Ubuntu运行双启动来访问Linux功能的需要。您不需要使用Mac OS X、运行虚拟机或使用Cygwin创建工作区。它提供了为您的场景和平台编写和构建代码所需的工具集。通过从Bash访问Windows文件系统,您可以使用Windows或Linux CLI处理相同的文件。
微软是如何将Bash移植到Windows的?
在2016年4月的构建会议上,微软宣布了Linux的Windows子系统(WSL),这让很多人大吃一惊。与Canonical合作,Bash在Windows上首次发布了Windows 10周年更新。它分为两部分:核心子系统和一个包。核心子系统已经是Windows 10 Insider构建的一部分,并提供了Windows上的Linux API,这意味着您可以本地加载Linux库和可执行文件。Canonical将软件包作为一个选项提供。这个软件包提供了Linux环境所需的Bash和CLI工具。
安装Bash
要在Windows上运行Bash,您的系统必须运行x64 Windows 10周年更新构建14393或更高版本。您可以通过键入来发现构建winver
在命令框中。
如果构建版本小于14393,则无法安装Bash。
要在受支持的构建上启用Bash,首先应该打开开发人员模式。要做到这一点,请转到“设置”,单击“开发人员”,然后选择“开发人员模式单选”按钮。完成之后,系统将提示您进行确认。
完成之后,必须启用用于Linux的Windows子系统特性。最简单的方法是通过PowerShell cmdlet:
启用- windowsoptionalfeature -Online -FeatureName microsoft - windows -子系统- linux
要在Windows上打开Bash,请输入命令提示符bash
,并接受许可协议。当Bash安装时,它会对您的系统执行一些更改:
- 下载Ubuntu用户模式映像。
- 位置的隐藏文件夹
% localappdata % \ lxss \
被创建。 - 桌面上有一个快捷方式。
要运行Bash,现在可以转到命令提示符或使用桌面快捷方式图标。
成功安装Bash之后,系统将提示您创建Unix用户名和密码。这个用户名和密码是用于Bash的,与您的Windows环境没有任何关系。
开始使用命令
在Bash中,您有一些可用的命令来管理WSL和Ubuntu映像。
lxrun
:用于管理WSL实例lxrun /安装
:开始下载和安装程序lxrun /卸载
:卸载Ubuntu映像lxrun /更新
:更新WSL包索引lxrun / setdefaultuser <用户名>
:设置Ubuntu用户的默认Bash
当然,Windows上的Bash也允许您运行许多“传统”Bash命令。例如:
grep
:查找与模式匹配的行sed
:替换字符串回声
:将值输出到屏幕var = 2
:创建一个变量$ var
= = !
:比较文本的小片段
导航命令
对于导航,您还可以使用Windows DOS命令cd
来浏览文件夹结构。
cd临时
:将工作目录更改为名为temp的文件夹cd \
:带您到根目录。因为Ubuntu没有像Windows那样的驱动字母,所以根目录应该是顶层目录。cd . .
:将提示向上一级(即到父目录)cd ~
:带您到主目录
然而,cd
在PowerShell中,在Ubuntu的Bash中略有不同。在WSL环境中,您的Windows驱动器存储在/ mnt
文件夹,驱动器的名称用作子文件夹。当你使用cd
命令,您应该相应地更改路径。
显示命令
要检查目录的路径和内容,以下是一些示例:
松材线虫病
:将您所在的路径或目录打印到屏幕中ls
:显示目录中的文件
帮助的命令
如果要了解每个命令的功能和与之关联的参数,请使用男人。
可以使用命令。
类型人<命令>
它将显示命令的用途和相关参数的概要。这类似于PowerShell帮助
命令。
编辑命令
Bash的优点之一是使用纯文本。这意味着您不必修改注册表或程序设置。无论您想要更改启动顺序还是web服务器配置,只需编辑相应的文本文件即可。要有效地执行编辑任务,您需要一个好的文本编辑器。Bash提供了强大的编辑器来简化您的工作。Bash中有几个很好的文本编辑器示例纳米
和六世
。
Bash中的包管理
由于您实际上是在运行Linux,所以现在还可以使用包管理命令的形式apt-get
。几个例子:
sudo apt-get更新
:刷新要提取的存储库列表sudo apt-get升级
:将所有软件升级到最新版本apt-cache搜索app_name
:在存储库中搜索特定的应用程序sudo apt-get安装apt-name
:下载和安装特定的应用程序
sudo
是所有命令的前缀,允许您在不同的用户(超级用户(或管理员))下运行命令。它类似于Windows中的“以管理员身份运行”技术。
网络命令
要从服务器或URL通过HTTP下载文件,现在可以使用旋度
命令。这个命令类似于PowerShell的命令Invoke-WebRequest
cmdlet。
类似地,您可以连接到另一台远程Linux计算机并在其上运行命令。因为我们现在在Linux中,我们终于有了一个真正的SSH客户机。我们现在可以通过本机运行SSH,而不是使用Cygwin或当前的OpenSSH实现的beta版ssh
命令:
ssh用户名@abc.com
在讨论OpenSSH时,我们现在还可以使用内置的本机功能在SCP上安全地复制文件scp
命令:
scp localfile username@abc.com: remotedirectory / remotefile
有了Bash在Windows上,你现在有很多其他功能在你的指尖:
- 像Git、Python和Ruby这样的工具直接在Windows上运行
- 命令行编辑器,如emacs和vi
- 从Bash环境中访问Windows文件系统
- Linux用户支持
- 符号链接的支持
- 存储越来越多的通过
/ mnt
Windows上Bash的常见用例有哪些?
目前,许多开发人员使用Windows和Linux工具,这意味着他们必须在虚拟机中执行双引导或运行Linux才能获得CLI功能。当他们可以在Windows中运行这些工具时,Windows就成了他们的主要桌面。在这种情况下,他们不需要将Linux应用程序和服务移植到Windows系统。虽然有些人已经能够在Windows中运行Linux GUI应用程序,但是许多人获得了一个方便的Linux CLI来执行简单的任务,而不需要从Azure购买专用的Linux机器,或者为了简单的目的而迁移到Mac设备。由于Bash上的脚本编写很容易,您可以自动化开发任务,比如在Apache中备份网站。
例如,许多开发人员使用GitHub进行版本控制任务。要在Windows上访问GitHub,您必须为Windows安装GitHub,然后使用commit和push命令提交更改。另外,您必须下载Git实用程序,这是一个冗长乏味的过程。有了Windows上的Bash,您的工作变得简单:
apt-get安装git
git提交
git推
另外,在Bash中,您不需要任何第三方工具来处理传统的Linux文件类型,如GZIPed tarballs (tar.gz文件)。
在Windows上使用Bash的缺点是什么?
Windows上的Bash仍处于测试阶段,并包含一些粗糙的边缘。微软表示,Windows上的Bash目前可能无法完美地执行所有脚本。然而,微软正在密切监视性能和反馈,并积极地对该解决方案进行更改。
其次,Windows上的Bash是为开发社区带来的。它不是为管理Windows环境而设计的。虽然可以在WSL中运行服务器守护进程,但它不能提供完整Linux虚拟机的全部功能。如果您打算在Ubuntu的生产工作负载下运行服务器进程,那么您应该考虑使用其他替代方法来运行完整的Linux操作系统。
最后,Windows上的Bash为Windows带来了Linux功能。然而,Linux工具将无法与Windows工具和应用程序交互。这意味着由于其固有的架构差异,没有跨平台功能。例如,您将永远无法从Bash中调用Win32-native应用程序。
Windows上的Bash仍处于初级阶段。虽然这个解决方案有一些限制,但是微软正在努力增加更多的功能来消除这些差异,使Windows成为每种类型开发项目的首选平台。请密切关注微软的这个项目。随着微软在开放源码世界中的新姿态,随着时间的推移,Bash一定会成为Windows中的一等公民。
相关文章
- PowerShell的基本指南,适用于Windows、Windows Server和Exchange
- 10个基本的PowerShell安全脚本为Windows管理员
- 都是关于PowerShell提供程序和模块的
- Go pro: PowerShell的高级用户指南
这个故事,“发现Bash在Windows上的力量”最初是由信息世界 。