Я глубоко погружен в WSL (Windows Subsystem для Linux), и теперь, когда WSL2 доступен в Windows Insiders, это отличное время, чтобы по-настоящему изучить доступные опции. Очень интересная фича, которую я нашел в WSL, — возможность «чисто» перемещать данные между мирами. Это не тот опыт, который вы легко можете получить с полноценными виртуальными машинами, и он говорит о тесной интеграции Linux и Windows.

Под катом подробнее о некоторых интересных вещах, которые вы можете делать, смешивая арахисовое масло и шоколад!



Запустите Windows Explorer из Linux и получите доступ к файлам вашего дистрибутива


Когда вы находитесь в командной строке WSL / bash и хотите получить визуальный доступ к своим файлам, вы можете запустить «explorer.exe .», где находится текущий каталог, и вы получите окно проводника Windows, в котором ваши файлы Linux будут доставлены вам через сервер локальной сети plan9.



Используйте настоящие команды Linux (не CGYWIN) из Windows


Я уже писал об этом раньше, но теперь есть алиасы для функций PowerShell, которые позволяют вам использовать настоящие команды Linux изнутри Windows.

Вы можете вызвать любую команду Linux напрямую из DOS/Windows/чего угодно, просто поместив ее после WSL.exe, вот так.

C:\temp> wsl ls -la | findstr "foo"
-rwxrwxrwx 1 root root     14 Sep 27 14:26 foo.bat

C:\temp> dir | wsl grep foo
09/27/2016  02:26 PM                14 foo.bat

C:\temp> wsl ls -la > out.txt

C:\temp> wsl ls -la /proc/cpuinfo
-r--r--r-- 1 root root 0 Sep 28 11:28 /proc/cpuinfo

C:\temp> wsl ls -la "/mnt/c/Program Files"
...contents of C:\Program Files...

Исполняемые файлы Windows можно вызывать/запускать из WSL/Linux, поскольку путь к Windows находится в $PATH до Windows. Все, что вам нужно сделать, это явно вызвать его с .exe в конце. Вот как работает «Explorer.exe.». Вы также можете сделать notepad.exe или любой другой файл.

Запустите Visual Studio Code и получите доступ к вашим приложениям Linux нативно на Windows


Вы можете запустить «code.», находясь в папке в WSL, и вам будет предложено установить расширения VS Remote.. Это эффективно разделяет Visual Studio Code пополам и запускает «headless» VS Code Server в Linux с клиентом VS Code в мире Windows.

Вам также необходимо установить Visual Studio Code и расширение Remote — WSL. При желании, установите бета-версию Windows Terminal для лучшего опыта работы с терминалом в Windows.

Вот отличная подборка статей из блога Windows Command Line.


Вот преимущества WSL 2

  • Виртуальные машины являются ресурсоемкими и создают очень независимый опыт.
  • Исходный WSL был очень «подключенным», но имел довольно низкую производительность по сравнению с VM.
  • WSL 2 предлагает гибридный подход с облегченными VM, полностью подключенным интерфейсом и высокой производительностью.

Запуск нескольких Linux в считанные секунды


Здесь я использую «wsl --list --all», и в моей системе уже есть три Linux.

C:\Users\scott>wsl --list --all
Windows Subsystem for Linux Distributions:
Ubuntu-18.04 (Default)
Ubuntu-16.04
Pengwin

Я могу легко запустить их, а также назначить профили, чтобы они появлялись в моем Windows Terminal.

Запустите X Windows Server под Windows с Pengwin


Pengwin -- это специальный Linux-дистрибутив WSL, который очень крут. Вы можете получить его в Windows Store. Объедините Pengwin с X Server, например X410, и вы получите очень классную интегрированную систему.

Простое перемещение дистрибутивов WSL между системами Windows.


Ana Betts отмечает эту замечательную технику, с помощью которой вы можете легко перенести свой идеальный дистрибутив WSL2 с одной машины на n машин.

wsl --export MyDistro ./distro.tar

# разместите его где-нибудь, Dropbox, Onedrive, где-то еще

mkdir ~/AppData/Local/MyDistro
wsl --import MyDistro ~/AppData/Local/MyDistro ./distro.tar --version 2 

Вот и все. Получите идеальную настройку Linux, синхронизированную на всех ваших системах.

Используйте провайдер учетных данных Windows Git внутри WSL


Все перечисленные фичи переткают в кульминацию в этом крутом посте от Ana Betts, где она интегрирует Windows Git Credential Provider в WSL, превращая /usr/bin/git-credential-manager в сценарий оболочки, который вызывает диспетчер git creds Windows. Гениально. Это было бы возможно только при условии чистой и тесной интеграции.

Пробуйте, устанавливайте WSL, Windows Terminal, и создавайте блестящую среду Linux на Windows..

Комментарии (30)


  1. antoo
    21.11.2019 10:24
    +16

    С таким переводом знакомиться со статьей лучше в оригинале. При всем уважении к автору — вообще никакой адаптации под язык, машинный перевод буквально в каждом абзаце.


    хотите получить визуальный доступ к своим файлам

    вы получите окно проводника

    Вы также можете сделать notepad.exe

    создают очень независимый опыт

    Исходный WSL был очень «подключенным»

    Статья, как пользователю Linux, мне интересна, но абсолютно пропадает желание читать.


  1. tumbler
    21.11.2019 10:57
    +1

    Круто. А зачем?


    1. xkondorx
      21.11.2019 11:27
      +1

      Чтобы постепенно стереть границу между Windows и Linux. Например при необходимости работы с специфическим софтом который есть только под одну ОС. Но выглядит пока не «user friendly»


      1. nikitasius
        22.11.2019 15:57
        -2

        Границу между Windows и Linux?
        Полноте. Сравнили ж… закрытый код и открытый код. Это надо стирать, открывая для всех.


        А так — простая симуляция и эмуляция опенсорсного и известного в проприетарном и неизвестном.


        Я бы в одном лесу на Windows работать не стал, и печеньки бы свои ей (=им, Microsoft) не отдал. Поэтому не стоит так сильно радоваться новостям маркетологов, на то они и маркетологи, им важно продать продукт, показав лишь вершину. Обычным юзерам этого хватит, но им и не нужен линукс.
        А профессионалы своего дела (разработки или безопасности) выберут обычный, открытый и безопасный линукс. А не то, WSL в мешке.


    1. tangro
      21.11.2019 12:02
      +4

      Некоторые задачи значительно удобнее делать в командной строке Linux. При этом есть куча программистов, которые могут делать свою основную работу только под Windows (специфика сферы). Теперь разницы почти нет. Работаешь себе в Windows, нужен тебе какой-нибудь grep или awk — запустил в один клик WSL и юзаешь.


    1. Abdus
      21.11.2019 12:56

      Чтоб работать с linux серверами с windows машины.


    1. AndyKorg
      21.11.2019 12:57

      На Delphi например удобно отлаживать backend и под win и под Linux


    1. worldmind
      21.11.2019 14:48

      иногда копроративная политика требует юзания винды, такие вещи могут спасти, но первый WSL был не годен, второй пока не пробовал.


    1. Balling
      21.11.2019 19:36

      «А зачем?» Вы хоть в курсе, сколь людей этим уже пользуются? Даже я постоянно пользую vmware с ssd диском физическим, подключенным к ней. (Ну чтобы можно было грузить и как boot, и через vmware.) Но многим прикольнее из коробки пользовать. Кстати, кто в курсе, что можно грузиться с usb-c в видекартах Turing? Sata--usb-c и вперед))) очень удобно, там ведь уже usb 10 gbit))


  1. Warrangie
    21.11.2019 13:14
    +1

    Что же такого особенного в Pengwin, что не умеют другие WSL-дистры?


  1. Mako_357
    21.11.2019 16:59
    -1

    Еще бы был нормальный терминал под винду с поддержкой wsl


    1. gabaruga
      22.11.2019 10:56
      +1

      В качестве «нормального терминала под винду» можно посмотреть на Windows Terminal.


      1. Mako_357
        22.11.2019 11:01

        Он ничего кроме вкладок не умеет. Было бы неплохо, если бы майки на него прикрутили ssh connection manager и больше кастомизации.


        1. mayorovp
          22.11.2019 11:07

          Для ssh никакого нового терминала не требуется, достаточно putty и стандартных возможностей Проводника.


          1. Mako_357
            22.11.2019 11:10

            Putty застрял в прошлом веке, у него лишь в скорости преимущество, и я не хочу под него генерировать отдельные серты.


            1. mayorovp
              22.11.2019 11:17

              А зачем их генерировать-то?



              1. Mako_357
                22.11.2019 11:53

                Ок не знал, но все равно putty и superputty мне не подходят)


      1. Mako_357
        28.11.2019 11:37
        -1

        Поставил, поюзал. Он классный, быстрый. Но у него нет встроенного менеджера ssh соединений. Я уже думаю самому что ли на баше написать что ли.


    1. Alekcander
      22.11.2019 10:56

      попробуйте github.com/Eugeny/terminus

      Далеко не идеален но с wsl справляется неплохо


      1. Mako_357
        22.11.2019 10:59

        Я его и юзаю. Не нравится то, что он на электроне.


    1. Deissh
      22.11.2019 10:56

      Их куча, как только появился wsl первой версии. Например Cmder или новый Windows Terminal.


    1. overmind88
      22.11.2019 13:15
      +1

      C нормальными терминалами действительно сложно, я пока для себя ничего лучше mobaxterm не нашёл


  1. gsaw
    21.11.2019 20:32
    +2

    Я даже из-за подсистемы линукс решил таки после 18 лет использования линуксов на домашнем компе пересесть на windows10. Подсистема конечно слишком медленна из за высокой степени абстракции (я про первую версию) но работать можно. Я более менее успешно переехал с реактом + nodejs. В итоге конечно вернулся на линукс где то месяца через три, но по другим причинам. Не умею я в винду. Но подсистема линукс норм. Докер тоже помогает.


    А перевод да, трудночитаем


  1. yleo
    21.11.2019 20:45
    +1

    Самый крутой лайфхак — это просто полностью перейти на Linux.


    1. ReDev1L
      23.11.2019 00:13

      Я перешёл с Linux на wsl2. И жду только phpstorm + goland. После этого, линукс можно деинсталлить.


      1. Yeah
        01.12.2019 20:19

        Так phpstorm давно поддерживает wsl, как для php, так и для node js


  1. mm3
    22.11.2019 09:38

    А WSL разве уже доступен для всех редакций Windows 10 в том числе и Home?
    И для своей установки WSL перестал требовать LiveID и доступ к Windows Store?


    1. ahnyava
      22.11.2019 11:32

      LiveID не нужен. Store работает без него.

      Чтобы скачать и установить предпочтительные дистрибутивы, у вас есть три варианта:
      1. Скачайте и установите их из Microsoft Store (см. ниже).
      2. Скачайте и установите их с помощью командной строки или сценария (ознакомьтесь с инструкциями по установке вручную).
      3. Скачайте их, а затем вручную распакуйте и установите (инструкции для Windows Server доступны здесь).


      Про WSL и Home писали тут.


  1. ReDev1L
    23.11.2019 00:12
    +1

    advertka когда уже? Jetbrains, мы не хотим юзать vscode, нам нужен goland и phpstorm с wsl2


  1. morgot
    23.11.2019 06:11

    Подскажите, совместим ли WSL2 с виртуалбокс?