- Как выполнять Linux-команды внутри Windows: официальный и сторонние способы
- WSL — официальная подсистема Linux внутри Windows
- CoreUtils — лёгкий инструмент для запуска базовых команд
- Cygwin — запуск команд и Bash-скриптов
- Ламповый Linux-like терминал в Windows
- Установка нужных программ
- Настройка
- Немного «свистелок»
- Заключение
- Лучшие бесплатные терминалы для Windows
- 1. Cmder
- 2. Hyper.is
- 4. Fluent Terminal
- 5. Alacritty
Как выполнять Linux-команды внутри Windows: официальный и сторонние способы
Под GNU/Linux-дистрибутивы создано огромное количество полезных и удобных инструментов и приложений для обычных пользователей и разработчиков. Далеко не всё из этого доступно на Windows, но, к счастью, для ОС от Microsoft есть решения, исправляющие эту проблему.
WSL — официальная подсистема Linux внутри Windows
В Windows 10 существует крайне полезная вещь под названием Windows Subsystem for Linux (WSL). Она позволяет использовать GNU/Linux-среду прямо в Windows и запускать не только команды, но и, например, Bash-скрипты. Для использования WSL необходимо следовать инструкции ниже.
Шаг 1. Проверьте, подходит ли текущая версия Windows требованиям. Для этого нажмите сочетание клавиш Win+R, затем введите winver. Найдите строку «Сборка ОС» — она должна быть свежее версии 14316.
Шаг 2. Запустите стандартную утилиту PowerShell от имени администратора и введите в ней команду для включения WSL:
Шаг 3. Если версия Windows, определённая в первом пункте, свежее 18362, вы можете установить WSL 2, который в разы быстрее первой версии и обладает доработанным ядром. Введите команду ниже, если нужно установить WSL 2:
После этого скачайте и установите пакет обновления с официального сайта.
Шаг 4. Перезагрузите компьютер. Если была произведена установка WSL 2, введите в PowerShell от имени администратора следующую команду:
Шаг 5. После перезагрузки откройте фирменный магазин приложений Microsoft Store и найдите подходящий GNU/Linux-дистрибутив. Самым популярным является Ubuntu — вы можете установить любую версию из представленных в Microsoft Store.
Шаг 6. Как только установка завершится, найдите дистрибутив в меню «Пуск» и запустите его.
Шаг 7. Пройдите этап первоначальной настройки, введя имя нового пользователя и придумав пароль.
Шаг 8. Теперь различные GNU/Linux-команды можно выполнять, запустив дистрибутив, либо введя в командной строке wsl . Например, для просмотра всех файлов в текущей директории достаточно в командной строке выполнить wsl ls -a.
Обращу внимание на то, что путь к дискам в WSL отличается от такового в Windows. Вместо привычного C:/ используйте /mnt/c/. Также не забывайте про экранирование пробелов с помощью символа \ — это также пригодится при вводе путей к файлам.
Помимо выполнения базовых команд, с помощью WSL можно даже запускать приложения с графическим интерфейсом. Правда, рассчитывать на большое количество поддерживаемых подобных программ не стоит.
Шаг 1. Загрузите X-сервер и установите его.
Шаг 2. Запустите его с помощью ярлыка на рабочем столе. В открывшемся окне выберите вариант Multiple windows, затем Start no client. Завершите настройку кнопкой Finish.
Шаг 3. Откройте дистрибутив через меню Пуск и выполните команду export DISPLAY=:0
Шаг 4. Запустив приложение с графическим интерфейсом в WSL, вы увидите новое окно прямо в Windows.
CoreUtils — лёгкий инструмент для запуска базовых команд
Плюс данной утилиты — возможность запуска не только на Windows 10, но и на более старых версиях ОС. Кроме того, она легка и не занимает много места. Не обошлось без недостатков — программа скудна на функционал и не обновлялась очень давно. Она не только не умеет запускать скрипты и приложения с GUI, но и поддерживает лишь самые базовые GNU/Linux-команды. Установка CoreUtils весьма проста.
Шаг 1. Скачайте утилиту с официального сайта.
Шаг 2. Следуйте инструкциям установщика.
Шаг 3. Откройте «Панель управления», в разделе «Система и безопасность» выберите пункт «Система». На панели слева откройте «Дополнительные параметры системы». Нажмите кнопку «Переменные среды» и в открывшемся окне найдите область с заголовком «Системные переменные». В случае, когда там есть переменная Path, выберите её, нажмите «Изменить» и далее создайте новую строку. Содержимым этой строки должен быть путь к папке, который был указан при установке. Если вы ничего не меняли, то введите следующее:
Переменной Path нет? Тогда для начала создайте её кнопкой «Создать», затем в поле имени введите Path, а в поле значения — строку выше.
Шаг 4. Запустите командную строку и выполняйте команды прямо там.
Cygwin — запуск команд и Bash-скриптов
Ещё одна утилита, схожая с CoreUtils, но обладающая более широким функционалом — в том числе и возможностью запуска скриптов. Из минусов — немалый вес и более сложная установка. Разумеется, не идёт ни в какое сравнение с максимально удобным WSL, но для базовых команд вполне подойдёт.
Шаг 1. Загрузите Cygwin и запустите установку.
Шаг 2. Выберите Install from Internet, укажите директории для установки и загрузки пакетов, а также любой подходящий сайт из списка для скачивания файлов.
Шаг 3. В процессе установки можете выбрать необходимые пакеты, либо сразу нажать «Далее», оставив базовый набор.
Шаг 4. Откройте «Панель управления», в разделе «Система и безопасность» выберите пункт «Система». На панели слева откройте «Дополнительные параметры системы». Нажмите кнопку «Переменные среды» и в открывшемся окне найдите область с заголовком «Системные переменные». В случае, когда там есть переменная Path, выберите её, нажмите «Изменить» и далее создайте новую строку. Содержимым этой строки должен быть путь к папке, который был указан при установке. Если вы ничего не меняли, то введите следующее:
Переменной Path нет? Тогда для начала создайте её кнопкой «Создать», затем в поле имени введите Path, а в поле значения — строку выше.
Шаг 5. Команды можно выполнять как через командную строку, так и через специальный терминал.
Шаг 6. Для удаления Cygwin достаточно удалить папку, в которую программа была установлена, а также (по желанию) значение из переменной Path по методу, обратному тому, что был описан в 4 шаге (не удаляйте саму переменную).
Ламповый Linux-like терминал в Windows
Для меня, автоматизатора-линуксоида, использвание Windows на основной рабочей станции первое время было просто болью и страданием. Но с этим я ничего поделать не мог: корпоративные стандарты и софт, кторый работает только на Windows. В попытке найти золотую середину, я прошёл три стадии. Сначала я только изредка переключался на винду по необходимости. Затем виртуалка на virtualbox-е с X-server-ом. После этого захотелось хоть чуть-чуть того консольного комфорта, который был на линуксе (я использовал Terminator в качестве основного терминала).
После яростного гугления и установки всех эмуляторов терминала под Windows, которые только удалось найти, оказалось, что нет ни одного хоть немного подходящего мне. А хотелось, чтобы вёл себя терминал максимально приближенно к линуксовым вариантам. Например, естественно нужны табы, сплит, выделение текста с прокруткой (когда нужно выделить больше чем один экран), копирование текста в буфер сразу при выделении и т.д.
В итоге я получил «комбайн» как на скриншоте ниже. О том, как это настроить, можно узнать, заглянув под кат.
До того, как получить результат, я даже всерьёз задумался о своём велосипеде (портирование, написание своего). Но лень и здравый смысл взяли свое…
В процессе поиска хорошего терминала, я наткнулся на хабра-топик: Альтернативный терминал для Windows. ConEmu — приложение действительно классное, но оно не для тех, кто долгое время использовал линукс-терминалы. Затем я наткнулся на Mintty (был установлен вместе с Cygwin). Программка отличная, ведёт себя максимально близко к таким терминалам как Gnome-terminal и Terminator, но нет табов.
Оказалось, что вышеупомянутый ConEmu умеет запускать GUI-приложения внутри своих табов! И тут искра надежды начала разгораться… Но хватит лирики, пора приступить к делу!
Установка нужных программ
ConEmu ставим отсюда: code.google.com/p/conemu-maximus5
Mintty я ставил вместе с Cygwin: cygwin.com/install.html
Настройка
В ConEmu идём в Settings->Tasks и, нажимая плюсик, добавляем нужные таски как на скриншоте:
В нашем случае это:
Имя таска | Команда |
cygwin | C:\Cygwin\bin\mintty.exe |
ssh_local | C:\Cygwin\bin\mintty.exe D:\Work\VMssh.bat |
cmd | cmd |
powershell | powershell |
Осторожно! Адский CMD!
@ECHO OFF SET VMNAME=xubuntu CALL D:\Work\VMstart.bat %VMNAME% ssh user@localhost
Вызывает скрипт старта виртуалки, VMNAME заменить на нужное.
@ECHO OFF SET VMNAME="%1" SET isVMRun= IF [%1] == [] ( echo Empty parameter VMNAME. Usage: %0 [name of vm] EXIT /B 1 ) FOR /F %%i IN ('VBoxManage list runningvms') DO SET isVMRun=%%i IF NOT "%isVMRun%" == "%VMNAME%" ( Vboxmanage startvm %VMNAME% --type headless )
Проверяет запущена ли виртуалка и если нет, то запускает её. Таким образом, мне не нужно помнить запущена ли виртуалка, запускать отдельно VirtualBox и делать дополнительные клики.
Немного «свистелок»
ForegroundColour=208,208,208 BackgroundColour=28,28,28 CursorColour=255,175,0 IMECursorColour=128,224,160 Black=12,12,12 BoldBlack=10,10,10 Red=215,135,135 BoldRed=223,135,135 Green=175,215,135 BoldGreen=175,223,135 Yellow=247,247,175 BoldYellow=255,255,175 Blue=135,175,215 BoldBlue=135,175,223 Magenta=215,175,215 BoldMagenta=223,175,223 Cyan=175,215,215 BoldCyan=175,223,223 White=230,230,230 BoldWhite=238,238,238 BoldAsFont=no Font=Consolas FontHeight=11 CursorType=block FontSmoothing=full Term=xterm-256color Scrollbar=none Locale= Charset=
Общая рабочая папка (файлы доступны на винде и на виртуалке) — нужно настроить в VirualBox-e следующим образом:
Также нужно прописать в fstab на виртуалке, чтобы автоматиечски монтировалось при старте.
Заключение
В результате я получил терминал, в котором хоть как-то можно жить. Я ни в коем случае не претендую на исключительность этого решения, но надеюсь кому-то пригодится. Отдельный плюс такого решения — общий текстовый буфер и общие папки. Таким образом, работаем с линукс-виртуалкой так же как и с остальными табами в терминале.
Для тех, кому не нужны GUI-табы и кто использует tmux, есть статья моего коллеги примерно на ту же больную тему: habrahabr.ru/post/196128.
Особая благодарность хабраюзеру Maximus5 за отличный Windows терминал ConEmu!
Лучшие бесплатные терминалы для Windows
На основе статьи «The Best Free Standalone Terminals for Windows (2019)».
Стандартная командная строка, предоставляемая Windows Powershell, далека от идеала. В этой статье вы найдете несколько лучших эмуляторов терминала, способных улучшить ваш рабочий процесс.
1. Cmder
Cmder это портативный эмулятор консоли,. Вы можете переносить свой эмулятор на флешке или при помощи облака, и ваши настройки, псевдонимы и история будут с вами на любой машине, где бы вы ни работали. А если вы решите использовать немного большую версию git-for-windows, у вас в PATH будут все Unix-команды, так что вы сможете немедленно на любой машине выполнять git init или cat.
Cmder построен на основе уже популярного Conemu. На ConEmu тоже стоит обратить внимание, поскольку он может служить в качестве альтернативы Cmder. Сайт, посвященный Cmder, прекрасно описывает свой продукт:
«Думайте о Cmder скорее как о программном пакете, чем об отдельном приложении. Вся магия происходит благодаря ConEmu, с улучшениями из Clink».
Несмотря на то что Cmder порой имеет проблемы со скоростью, это все равно отличный базовый эмулятор консоли, который поможет вам в достижении ваших целей.
2. Hyper.is
Hyper это блестящий терминал, который можно использовать как на PC, так и на MAC. Он полностью настраиваемый в том что касается тем, плагинов и оболочки. Хотя в плане разработки его создателям предстоит еще много работы. Например, у меня были ошибки при инсталляции zsh shell. Тем не менее, Hyper это отличный расширяемый терминал, на который стоит обратить внимание.
Слоган терминала Terminus — « Терминал более современной эпохи». Этот терминал кажется похожим на среду разработки: он поставляется с разделенными панелями, полностью настраиваемыми сочетаниями клавиш, вкладками и поддержкой всех основных оболочек. Терминал все еще новый, так что будет интересно посмотреть, что ждет его в будущем. На сайте представлен онлайн-вариант, с которым можно поиграться.
4. Fluent Terminal
Терминал для PowerShell, CMD, WSL или пользовательских оболочек. Среди его фич — встроенная поддержка соединений SSH и Mosh, возможность использовать вкладки и несколько окон, настройка внешнего вида, импорт/экспорт тем (плюс импорт тем iTerm), редактируемые сочетания клавиш, функция поиска, возможность быстрого переключения между оболочками.
5. Alacritty
Alacritty позиционируется как «самый быстрый из существующих эмуляторов терминала». Это, возможно, не совсем правда, многие пользователи сообщают как о высоких, так и низких скоростях при использовании Alacritty. Впрочем, как отмечают создатели, готовность терминала в настоящее время находится на стадии beta, так что все еще будет дорабатываться.
Alacritty поддерживает macOS, Linux, BSD и Windows. При создании этого терминала разработчики концентрировались на производительности и простоте. Дефолтные установки тщательно продуманы, так что Alacritty не требует дополнительной настройки, хотя многие вещи можно конфигурировать.