Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)

Posted Python程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)相关的知识,希望对你有一定的参考价值。

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

Windows10年度升级版(AU)发布时,针对LinuxWindows子系统(WSL)还远未完成,并且已知具有许多不兼容性,特别是与流行的开发者工具,如node.jsJava等不兼容。然而,让这个令人兴奋的新功能掌握在真正的用户手中是具有重要意义的,我们可以方便地从中学习。WSL需要运行什么,做什么工作,不做什么工作等都取决于你。

 

这个版本是由你而建,也是为你而建的

我代表WSL&控制台工程团队,衷心感谢在过去12个多月里尝试过和使用过Bash/WSL的所有人,特别是对所有在GitHub上提出问题,或在Twitter上联系我,或在UserVoice上提交/投票,和在StackOverflowAskUbuntuRedditCommand-Line博客,WSL Team博客和其他地方进行问题询问的朋友。

我们在Windows 10 Creators Update中发布的大规模改进过的Bash/WSLWindows控制台应归功于所有人!

 

WSL的新特性

Windows10创作者更新(CU)的开发期间,WSL工程团队完成了数百个修复和改进,其中大部分在WSL版本说明中有记载。尽管在 Command-Line 博客中强调了一些的控制台和WSL的显著特点,但我们认为有一个最重要特性和功能的综合清单是很有益处的。

所以,请阅读Windows10创作者更新(CU)并找出Bash/WSL&控制台的新特性吧:

更高兼容性

对于Win10 CU的主要目标是大幅提高WSL的深度和与Linux系统调用接口(SCI)的兼容性的广度。通过扩大和改进我们的系统调用实现,我们增加了用户需要运行的工具,平台,运行时间等。

结果是,在Win10 CU中最主流的开发工具现在能够按预期工作,其中包括:

  • 核心工具:apt, sed, grep, awk, top, tmux, ssh, scp

  • ShellsBash, zsh, fish

  • 开发工具:vim, emacs, nano, git, gdb

  • 语言&平台:Node.js & npm, Ruby & Gems, Java & Maven, Python & Pip, C/C++, C# & .NET Core & Nuget, Go, Rust, Haskell, Elixir/Erlang

  • 系统&服务:sshd, Apache, lighttpd, nginx, mysql, PostgreSQL

  • 其他

注意事项:可能有人已经对运行X/GUI appsdesktops on WSL进行了探索。虽然我们没有明确支持WSL X / GUI应用/桌面,但我们没有做任何事情来阻止它们。所以,如果你希望让你喜欢的编辑器,桌面,浏览器等运行,这也是可以的。但要知道,我们仍然专注于提供一个非常坚实的命令行体验,运行的所有你需要命令行开发工具。

 

支持Ubuntu 16.04
虽然Win10年度升级版提供对Ubuntu14.04的支持,在Win10创作者更新版中,WSL现在支持Ubuntu16.04,安装在Win10 CU的任何新的Bash实例现在都安装Ubuntu16.04

如果您想了解您运行的是什么版本的Ubuntu,请在Windows控制台中Ubuntu上的Bash中输入:

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)

重要提示:现有的Ubuntu14.04实例不会自动升级到16.04,您必须按照下面两种方式之一手动将实例升级到Ubuntu16.04

  1.        移除或替换(推荐)

  2.        原地升级


移除或替换

如果你正在运行一个Ubuntu14.04的实例,建议您移除并用新的Ubuntu实例16.04取代现有的实例。

警告:。下面的操作会删除现有的版本和任何你存储在Linux文件系统中的文件。因此,一定要复制/移动任何您希望保留的Linux文件,例如,复制到Windows文件夹(例如:/mnt/c/temp/wslbackup/…),然后再拆卸和替换您的实例!

要删除并重新安装你的Ubuntu实例,请在CMD/ PowerShell控制台输入下面的命令:

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)

上面的lxrun /install命令会安装一个新的Ubuntu 16.04副本在你的电脑中。

 

原地升级

如果你的Ubuntu实例是特别复杂的配置,你可以选择就地升级,但这可能不是最佳的选择。
如果您选择就地升级您的实例,使用Ubuntu指令升级现有的实例:

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)


支持IFconfig与网络连接枚举

Win10 AU最大的缺点之一是它缺乏枚举网络连接的能力,这会阻止ifconfiggulpnpm等工具正常运行。

这在Win10 CU中已经解决了,您可以使用ifconfig来枚举和检查可用网络适配器的配置:

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)


支持Ping & ICMP网络

用户在Win10 AU中经常遇到的另一个问题是非管理员无法ping网络端点。 这已经在Win10 CU中修复了:

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)


支持文件更改通知(INOTIFY

另一个非常必要的改进就是使一个工具在更改文件时能够注册通知的能力。这是WebNode.jsRubyPython开发人员以及许多其他开发人员经常使用的基本功能。

例如,如果您正在完成一个node.js网站项目,在vimEmacsSublime TextVS Code等环境中编辑源代码,每当您保存代码时,您可能希望您的网站服务器重新加载新更改的页面来源,以便您可以刷新浏览器,并立即看到您的更改。

那么现在你可以!WSL支持inotify,允许应用程序注册文件系统更改通知,然后可以触发操作,如重建项目或重新启动本地Web服务器。这适用于DrvFS和内部LXF的定位。

重要的是,此支持文件更改通知特点还支持Windows文件系统中文件的文件更改通知。这意味着您可以使用Windows GUI编辑器(如VSCodeVisual StudioSublimeTextNotepad ++等)编辑存储在Windows文件系统上的项目源,并且在Bash / WSL中运行的node.js为您的网站提供服务,并获取您保存文件时的更改。

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)


Windows <-> Linux Interop

构建WSL的一个关键目标是减少Windows工具与Linux命令行工具和环境一起运行时遇到的“gaps”。当我们在Windows 10 AU中发送WSL时,我们将LinuxWindows并入,但是仍然存在很大的“gap”——而两个系统可以共享一些相同的文件,每个环境彼此相互隔离。

用户经常告诉我们,他们希望能够从Bash中调用Windows应用程序,并从Windows中调用Linux应用程序。所以,我们添加了这个功能!
Windows 10 Creators Update中,您现在可以从Bash中启动Windows应用程序和工具

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)

您可以从Windows中启动Linux二进制文件/命令/脚本:

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)

可以从我们的博客中了解更多相关内容。

 

UNIXNetlink Socket改进

Anniversary Update中不支持UNIX套接字和Netlink套接字的某些方面。
Creators Update中,UNIX数据报套接字和Netlink套接字,选项与属性已添加到WSL,支持各种形式的IPC,允许许多现代工具在WSL上运行。

更多内容请阅读WSL Release Notes

 

TCP socket & IPv6改进

Creators Update中,WSL团队和Windows核心网络团队合作,使WSL能够支持几个额外的IPv6TCP套接字选项和属性。这使得依赖各种网络套接字功能的广泛工具和技术能够实现,并增强了IPv6支持。

更多内容请阅读WSL Release Notes

 

其他WSL改进

上面列出的WSL改进只是一些最明显和值得注意的变化,但创作者更新(Creators Update)中包含了数百种其他WSL改进。以下是更多的内容,也可以详细了解发行说明。

  • 显示于Windows Process枚举基础设施的Linux进程,也显示在TaskManager等上。

  • 增加了特性以帮助使反恶意软件和防火墙工具能够了解Linux进程

  • 支持PostgreSQL和其他工具所需的共享内存。


Windows控制台&命令行改进

Windows控制台是整个操作系统中最基本的部分之一,几十年来一直是Windows的一部分。 大约2年前,组建了一个新的Windows控制台团队,让控制台得到在三十多年内最大的整改。

控制台检测的主要驱动因素之一是需要启用控制台来显示在WSL上运行的Linux命令行工具和应用程序的输出。 该团队还对控制台的基础和内部部件进行了一些非常需要的改进和现代化改造,这将有助于今后更加快速,更有前景的功能发展。

 

Win10 CU中控制台有哪些新特性呢?


VT序列的改进

因为Windows控制台最初不是为了支持*NIX而构建的,所以它无法处理由*NIX命令行工具和应用程序生成的不同行为和输出格式代码(ANSI Escape CodesVT序列)。
但是,这已经结束了:

Windows 10 Anniversary Update中,控制台具有处理大多数常见VT序列功能的功能,使其能够正确呈现大部分简单的文本格式。然而,它缺乏对几种高级场景的支持。

Windows 10 Creators Update中,进一步改进Windows控制台对VT序列的支持,以正确处理几个更高级的VT序列,使控制台能够实现vimemacsMidnight Commandertmuxhtop等中的许多丰富的文本UI功能。

Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)


支持24bit颜色

来自社区的另一个常见需求是控制台支持>16种颜色。当使用日益丰富和复杂的命令行工具和shell等时,支持256种颜色越来越重要。
Win10 Creators Update中,控制台已更新,以支持完整,绚丽的24位颜色!


支持鼠标

随着丰富的文本UI数量的不断增加,用户希望鼠标支持Midnight CommanderHtop等工具,所以我们在Win10 CU中添加了鼠标支持。


Windows中无管理员权限的Symlinks

Symlinks是在Linux中广泛使用的重要工具,但在Windows中,由于需要管理员权限才能创建符号链接,并且创建符号链接的控制台必须以管理员身份运——用户很少会这样做。

Windows 10 Creators Update中,已启用开发人员模式的用户取消了管理员权限限制,允许从没有升级的控制台创建符号链接。

 

下一步做什么?


那么,我们做完了吗?不!还离得很远!

WSLWindows控制台还有很多改进和新功能值得我们继续开展工作。

另外,虽然控制台和WSLCreators Update中得到了显着的改善,但是要注意,尽管我们削减一些粗略的边缘部分并改进一些核心功能,但WSLWin10 Creators Update中仍然是beta功能。


我们会继续推进许多计划中的改进和令人兴奋的新功能。继续关注Windows 10未来版本中更多令人兴奋的功能:如果您想成为第一个访问并体验下一个Windows 10改进版本,请务必注册Windows Insider程序并设置Windows内部更新!


而且,一如以往,请提出您的反馈意见:如果您在使用WSL时遇到问题,请随时在Twitter上提出,也可以在UserVoice上提出新功能,在RedditStackOverflowSuperUser等上面进行所有伟大的讨论,并保留Command-Line博客和WSL团队博客上的评论。



英文原文:https://blogs.msdn.microsoft.com/commandline/2017/04/11/windows-10-creators-update-whats-new-in-bashwsl-windows-console/
译者:精武英雄


以上是关于Bash / WSL和Windows控制台的新功能(Windows 10 Creators Update)的主要内容,如果未能解决你的问题,请参考以下文章

Windows XP上的VS Code + WSL应用程序上的CMake扩展

Windows 10 和 WSL - 在文件资源管理器中创建的目录未出现在 Bash 中

如何从 WSL (Ubuntu) Bash 运行 Windows 可执行文件

从 WSL 运行某些东西的 Windows bash 脚本

将 WSL(Windows 上的 Bash)根文件系统移动到另一个硬盘驱动器?

如何在 Ubuntu on Windows (WSL) 上为我的 VS Code 终端使用 Bash?