Я использую Linux и Mac, и скоро научу некоторым вещам из командной строки.
Что я могу установить в Windows, чтобы получить окно терминала, наиболее похожее на базовую оболочку Mac / Linux Bash?
Я хотел бы иметь возможность определить .bash_aliases, если это возможно.
putty
для подключения к реальному серверу Linux. на окнах я всегда неохотно и соблазнительно использовалcygwin
, неохотно из-за моего неуклюжего опыта установки. Но лично я нашел, что это более удобно использовать, чем msys и быстрее, чем vm. После установки Cygwin оказывается каким-то портативным, достаточно просто скопировать его каталог, однако он создаст новое имя пользователя на каждом компьютере / пользователе на основе имени пользователя Windows (по крайней мере по умолчанию). Но имейте в виду, что поскольку cygwin / msys можно рассматривать как пользовательский «дистрибутив», некоторые [необязательные] переключатели команд могут отсутствовать. проверить их.Ответы:
Вы можете установить Cygwin или MSYS / MinGW или полный дистрибутив Linux на виртуальной машине (например, с помощью VirtualBox ).
источник
Теперь вы можете установить подсистему Windows для Linux, которая позволяет запускать встроенную оболочку и инструменты Linux в пользовательском режиме в Windows . Это позволяет вам запускать оболочку Bash непосредственно в Windows и на основе Ubuntu.
Это было введено в Windows 10 с Anniversary Update (2016) и не включено по умолчанию. Чтобы включить новую функцию на компьютере с летним обновлением Windows 10, выполните следующие действия.
Немного истории, еще в 2015 году был начат проект Astoria по доставке приложений Android в Windows, и для этой цели была создана подсистема Linux под названием Windows Subsystem for Linux (WSL). В конечном итоге проект Astoria был закрыт, поскольку он подорвал их стратегию UWP (универсальная платформа Windows), но некоторые его части были сохранены и составляют основу bash для Windows. В течение этого времени Microsoft сотрудничала с Canonical (создателями Ubuntu Linux), чтобы предоставить им собственный образ со всеми поддерживаемыми инструментами / двоичными файлами.
Дополнительную информацию можно найти здесь,
https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/
https://blogs.windows.com / buildingapps / 2016/03/30 / run-bash-on-ubuntu-on-windows /
https://sec.ch9.ms/sessions/build/2016/P488.mp4 (видео)
источник
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux"
и установить любое из следующего из хранилища Windows: Ubuntu, Debian, OpenSUSE, Kali LinuxНиже приведен список параметров, доступных по состоянию на 2018-05 гг., С несколькими обновлениями, относящимися к WSL в 2019-01 гг., А также немного подробностей по каждому из них.
Варианты, которые выделяются
Сигвин и Бабун
Cygwin обеспечивает следующее:
Cygwin стремится упростить перенос приложений Linux на Windows. Если какая-то программа на C была разработана для Unix и предполагает использовать такие функции, как каналы, доступ к файлам и каталогам в стиле Unix и т. Д., Вы можете скомпилировать ее для Cygwin, и Cygwin будет выступать в качестве слоя совместимости между кодом и сторонней ОС (Windows) , Это позволяет одной и той же программе на C работать в Linux и Windows практически без изменений. Таким образом, огромный список программ для Linux был составлен и может быть запущен при установке Cygwin. Однако вы, пользователь этих программ, вероятно, должны быть знакомы с Unix. Например, вам может потребоваться передать аргументы, такие как
/cygdrive/c/autoexec.bat
вместо,c:\autoexec.bat
и быть готовым иметь дело с выводом с завершением строки Unix (\n
) вместо завершения строки Windows (\r\n
).Коллекция всех программ Cygwin включает в себя репозиторий, и хотя Cygwin не имеет традиционного менеджера пакетов Linux, вы можете добавлять, удалять и обновлять программы из этого репозитория в любое время очень нелогичным способом (вы запускаете Cygwin setup.exe по адресу в любое время после завершения установки)
Babun - это Cygwin с полнофункциональным менеджером пакетов (pact), oh-my-zsh для своей оболочки, git, автоматических обновлений и архитектуры, ориентированной на плагины. Хотя оболочкой по умолчанию является zsh, вы можете легко переключиться на bash. Кажется, это хорошее обновление от ванильного Cygwin, если вы не возражаете против дополнительного веса.
Mingw-w64
Mingw-w64 обеспечивает следующее:
MinGW - это прежде всего дистрибутив программного обеспечения и платформа для Windows. В частности, это порт Windows для инструментов компилятора GNU, таких как GCC, make, bash и так далее. Он включает в себя достаточное количество инструментов GNU и минимальный уровень совместимости с Unix.
Основное различие между Mingw-w64 и Cygwin заключается в приоритетах: Cygwin стремится обеспечить полный уровень совместимости с POSIX, включающий полную реализацию всех основных системных вызовов и библиотек Unix; производительность является вторичной по отношению к совместимости. MinGW стремится к производительности, поэтому он не будет предоставлять определенные API POSIX, которые не могут быть реализованы легко и / или достаточно быстро под Windows. Также основной целью MinGW являются S / W разработчики. Тем не менее, обычные пользователи могут также наслаждаться его оболочкой и утилитами общего назначения.
MSYS2 и Git для Windows
MSYS2 обеспечивает следующее:
MSYS2 также является в первую очередь дистрибутивом программного обеспечения и платформой для Windows, такой как MinGW, но он сочетает в себе как путь Cygwin, так и путь MinGW. Вы можете использовать MSYS2 для создания «программ MinGW» или «программ MSYS2» . Более поздняя ссылка на уровень совместимости MSYS2 (msys-2.dll), который сам близко следует за развитием уровня совместимости Cygwin с несколькими дополнениями / модификациями . Однако хранилища двух проектов совершенно не связаны. Таким образом, хотя MSYS2 и Cygwin предоставляют,
grep.exe
они могут иметь совершенно другую версию.Git для Windows - это либо просто MSYS2 с установленным git, либо, по крайней мере, в значительной степени основанный на MSYS2 . Он предоставляет ту же оболочку (bash), терминал (Mintty) и менеджер пакетов (pacman). Похоже, это самый популярный способ запустить доминирующий Git в Windows, и вместе с этим вы получите отличную среду Unix.
Подсистема Windows для Linux (WSL)
WSL решает ту же проблему, используя совершенно другой метод. Вы запускаете точно такой же код, как и в системе Linux на WSL, которая перехватывает вызовы ядра и переводит их в вызовы ядра Windows (это противоположно Wine). Конечно, перевод не может быть идеальным, но Microsoft сняла бета-предупреждение . Поскольку WSL не был доступен на Windows Server до 2018 года, я не особо задумывался над этим. В любом случае вы получите отличную оболочку bash с большинством полезных свойств CLI, которую вы ожидаете найти в стандартной установке Ubuntu. Microsoft официально заявляет, что «WSL не стремится поддерживать десктопы или приложения с графическим интерфейсом»однако есть неофициальные инструкции о том, как это сделать. Кажется, что в настоящий момент (в начале 2018 года) основные недостатки WSL заключаются в следующем: а) рендеринг экрана и доступ к диску очень медленный; б) вы не должны редактировать файлы WSL (Linux) из Windows в) он работает только на 64-битной Windows. Вот старое, но приятное сравнение с Cygwin (обратите внимание, что Рич Тернер является членом команды WSL, и он опубликовал много полезной информации о WSL)
Точка соприкосновения
За исключением WSL, большинство вышеперечисленных инструментов используют много общих технологий (библиотеки, исполняемые файлы, концепции). Например, оболочка bash, поставляемая с MinGW, зависит от msys-2.dll, которая сама по себе является веткой cygwin.dll. Так что да, есть много места для путаницы :-)
Больше опций
Cmder предоставляет просто хороший терминал и оболочку, похожую на bash, для Windows. Его основным компонентом является Conemu (терминал). Кроме того, он добавляет Clink, который обеспечивает редактирование командной строки в стиле Powerful Bash , настраиваемый макет приглашения и цветовую схему Monokai. Он очень (или, возможно, полностью) совместим с консольными программами Windows.
Scoop предоставляет менеджер пакетов командной строки для многих известных кроссплатформенных программ, включая множество инструментов GNU. Он загружает предварительно скомпилированные пакеты. Он не предоставляет ни оболочки, ни терминала, а работает под управлением Windows cmd.exe (со всеми его ограничениями, а также с полной совместимостью с собственными консольными программами Windows). В него также не входит набор компиляторов (но, разумеется, компиляторы и инструменты разработки являются типичными пакетами, которые можно установить с помощью scoop). Многие программы, которые устанавливает Scoop, либо взяты непосредственно из проекта MinGW / MSYS, либо были созданы с использованием их инструментов.
Еще больше вариантов
Решения ниже не кажутся активными, и я никогда не проверял их, но они, кажется, делают работу для других:
Gow (Gnu On Windows) - это легкая альтернатива Cygwin без оболочки. Он использует удобный установщик Windows, который устанавливает около 130 чрезвычайно полезных приложений Linux с открытым исходным кодом, скомпилированных в виде собственных двоичных файлов win32 и доступных через windows cmd.exe. Он спроектирован как можно меньшего размера (около 10 МБ).
UnxUtils & GnuWin32 : UnxUtils - это набор портов общих утилит, похожих на Unix-подобные GNU, на собственный Win32, исполняемые файлы которых зависят только от Microsoft C-runtime msvcrt.dll. Вы должны скачать основную часть и несколько обновлений . GnuWin32 имеет более поздние версии, чем UnxUtils, но требует поддержки файлов (например, DLL)
MSYS и MinGW , кажется, уже был устарел по MSYS2 и MinGW-w64 , поэтому я никогда не смотрел на них.
Некоторые распространенные проблемы на Cygwin & MSYS2
По поводу терминала
Mintty - терминал, используемый в Cygwin, MSYS2 и их производных. Следует помнить, что если вы работаете с консольными программами Windows, это не является безболезненной заменой командной строки Windows. Хотя программы с простым выводом текста обычно работают нормально, интерактивные и полноэкранные программы часто имеют проблемы. Прочтите больше на домашней странице Mintty, а также прочитайте статью «Некоторые нативные консольные программы не работают при запуске из Git Bash» в Git для Windows FAQ . Эта запись содержит следующие рекомендации, которые могут возникнуть при возникновении таких проблем:
Другие вопросы
Две самые важные вещи, которые нужно иметь в виду, это:
есть компромисс между властью и трудными для устранения проблем. Чем более мощное решение, тем больше вещей может пойти не так, даже если это будет казаться изначально не связанным с вашим уровнем Linux.
если у вас недостаточно опыта работы с Linux, не используйте более мощные решения, такие как Cygwin / MSYS2 / MinGW
UnxUtils и GnuWin32 обладают наименьшей мощностью, но и наименьшим потенциалом причинения вам головной боли. Cygwin и подобные им будут лидировать как по силе, так и по головным болям. Cmder находится где-то посередине. Поэтому, когда вам нужны самые мощные решения, выспитесь и будьте полностью сосредоточены. Избегайте использования мощных решений при тестировании чего-то нового и, возможно, нестабильного. Также не забывайте, что решения средней сложности, такие как cmder, не безупречны.
Проблема команд Linux для теневого копирования Windows является распространенной причиной трудностей в отладке таких решений, как Cygwin / MSYS2 / MinGW. Вот пример: у меня был файл .bat, который использовал команду timeout. При запуске из-под Cygwin произойдет сбой, поскольку timeout также является командой Linux, но с другим синтаксисом. После того, как я обнаружил проблему, я обнаружил, что могу добавить PATH = ... вверху файла .bat, чтобы убедиться, что команда windows имеет приоритет. Но затем я получил еще более загадочную ошибку «Перенаправление ввода не поддерживается» и решил обходной путь, прежде чем найти причину.
Вот пример проблемы с cmder. Я запускал версию Unison для Windows под Cmder, и при некоторых особых условиях он зависал без каких-либо сообщений об ошибках . Одна и та же команда всегда отлично работала под cmd.exe. Самое смешное, что он также отлично работал под Cygwin (на самом деле, если у вас есть имена файлов Unicode, терминал Cygwin лучше, чем cmd.exe, потому что cmd.exe часто отображает Unicode-текст с искаженным текстом).
Об этом руководстве
В течение 2017-05 гг. Мне надоело не понимать различий вышеупомянутых инструментов, хотя некоторые из них я использовал уже давно (в основном CygWin и cmder, но никогда в целях разработки). Так что я потратил несколько часов, чтобы прогуляться по ландшафту. Это руководство является результатом заметок, которые я сохранил. Я не эксперт в этой области, но я изо всех сил старался найти всю необходимую информацию, внимательно ее прочитать и четко представить самые важные части. Пожалуйста, прокомментируйте, если что-то кажется неправильным, и я сделаю все возможное, чтобы исправить это.
Наконец, извинения за некоторые проблемы с терминологией: В этом тексте я иногда использую термин Linux вместо UNIX или POSIX. Я знаю, что они не одинаковы, но очень трудно различить их при подходе к теме с такого большого расстояния. Даже когда это не сложно, мне нужно время, которого у меня нет ;-)
источник
pacman
не такpackman
Я бы предложил вам скачать и установить минимальный набор MinGW, а также минимальный набор MSYS. Установщик MinGW предоставляет простой графический интерфейс для выбора пакетов, которые вы хотите установить. Если вам нужен только BASH, тогда установка займет не более нескольких мегабайт.
ОБНОВЛЕНИЕ: я перешел на MSYS2, который является гораздо более продвинутым и имеет порт ArchLinux pacman для управления пакетами. Установщик MSYS2 имеет все, что вам нужно, плюс он использует Mintty, что абсолютно идеально.
источник
Есть также Clink, доступный на GitHub . Он интегрируется в командную строку Windows, используя библиотеки подключений.
Из описания проекта:
(таким образом, он не предоставляет возможности языка bash-as-a-a-программирования или каких-либо других полезностей Unix)
Я использую Linux на работе и иногда сталкиваюсь с cmd, который не работает так, как я ожидаю от Bash. С Clink я могу преодолеть некоторые из этих недостатков.
В последнее время я также обнаружил многообещающий, но еще не готовый к работе проект под названием flinux, который эмулирует системные функции Linux и предоставляет какую-то систему поверх него (в настоящее время основанную на Arch Linux)
источник
cmd.exe
, как описано на сайте;)В дополнение к сказанному faffaffaff , Git для Windows включает в себя Bash и некоторые распространенные программы командной строки для Linux (например, Vim , sed и gawk ). Это основано на MSYS . Версия программ старая, хотя, например, Bash версии 3.1. У Cygwin были бы более свежие версии утилит.
Я также использую ConEmu в качестве эмулятора терминала (в основном для подсветки синтаксиса в Vim, вкладок и более простого копирования). console2 - еще один популярный эмулятор терминала, хотя я еще не пробовал.
источник
Это одна из первых вещей, которую я делаю, когда настраиваю новый компьютер с Windows:
Функциональная и изящная консоль в Windows
источник
Я только что попробовал с Бабуном , который интегрировал Cygwin внутри, и мне приятен на вкус :)
Файл для загрузки немного большой, около 250 МБ. Но установка проста; ничего настраивать не нужно и все работает!
источник