Как выполнить Linux команду из Windows при помощи Cygwin
Как выполнить команду в Линукс? Вы можете выполнить Linux-команду через командную строку, также известную как терминал. Для этого откройте терминал, введите команду и нажмите клавишу Enter. Например, команда ls отображает список файлов и папок в текущей директории.
Если вы не знаете, какую команду нужно выполнить, можно использовать команду man, которая выводит страницу руководства для указанной команды. Например, введите man ls, чтобы посмотреть, как использовать команду ls. Но что делать, если нужно выполнить Linux команду из Window? Решение есть.
Как выполнить Cygwin

Чтобы использовать утилиты Linux в Windows, существует несколько решений. Один из них — это популярный инструмент Cygwin. Это программное обеспечение для Windows, которое позволяет создать среду Unix на вашем компьютере. Cygwin включает широкий спектр утилит командной строки, таких как bash, ls, cat, rm и др. Чтобы использовать Cygwin, нужно установить пакет утилит на ваш компьютер и запустить терминал Cygwin для выполнения команд.





Cygwin — это программное обеспечение для Windows, которое предоставляет среду Unix, включая интерпретатор командной строки и основные утилиты, такие как ls, cat, rm и многие другие. Чтобы выполнить команду Linux в Windows при помощи Cygwin, необходимо выполнить следующие шаги:
- Загрузите и установите Cygwin с официального сайта. Во время установки выберите пакеты, которые вы хотите использовать, например, bash и utils.
- Запустите Cygwin Terminal, чтобы открыть командную строку Cygwin.
- Введите команду, которую вы хотите выполнить. Например, если вы хотите просмотреть содержимое текущего каталога, введите «ls» и нажмите клавишу Enter.
- Как только вы введете команду, она будет выполнена в среде Unix, предоставляемой программой Cygwin, и результаты будут выведены в терминал.
- Вы также можете передать параметры команде, используя стандартный синтаксис Unix. Например, если вы хотите удалить файл «example.txt», введите «rm example.txt» и нажмите клавишу Enter.
С помощью программы Cygwin вы можете использовать команды Linux на системе Windows и работать в среде, которая вам знакома.
Другие решения
Еще один вариант — это Cash. Это новый инструмент, который обещает быть легче и быстрее, чем Cygwin. Cash позволяет запускать команды Linux напрямую из командной строки Windows, что делает использование утилит более простым и интуитивным. Cash также поддерживает потоковое редактирование и фильтрацию вывода, что делает его очень удобным для использования.
И наконец, в Windows 10 существует третье решение — подсистема Linux для Windows. Это новая функция, которая позволяет запускать нативные Linux-приложения и утилиты в Windows. Для использования этой функции нужно включить подсистему Linux и установить нужный дистрибутив в приложении Microsoft Store. Подсистема Linux для Windows поддерживает большинство инструментов и утилит Linux, что делает ее очень удобной для разработчиков и системных администраторов.
Cygwin или MinGW? Собираем программы для Windows без Windows

Большая часть разработчиков свободного софта работает на Linux или Mac, а вот поддержка Windows обычно реализована по остаточному принципу. Заработало — хорошо, не заработало — пускай портирует тот, кому это нужно. Я покажу, как создавать нативные исполняемые файлы для Windows, не имея этой системы под рукой.
В общем-то, даже в Microsoft уже признали проблему и сделали WSL (Windows Subsystem for Linux), чтобы запускать те приложения, у которых нативных версий под Windows нет. Однако если ты хочешь сделать свою программу доступной для широкой аудитории, то WSL вовсе не панацея, поскольку у среднего пользователя эта система вряд ли установлена и у нативных приложений возможностей для интеграции с Windows все равно больше.
Во многих случаях камень преткновения — не сам код программы, а система сборки. Если ты используешь кросс-платформенные библиотеки и не вызываешь специфичные функции POSIX, портирование может вообще не требоваться. Главное — собрать исполняемые файлы.
Сборка-то обычно и зависит от окружения POSIX. Если ты используешь GNU autotools, то скрипт ./configure у тебя на Bourne shell. CMake и ряд других систем сборки умеют генерировать скрипты под целевую ОС, но остается последняя «маленькая» проблема — нужна проприетарная и не бесплатная ОС. Есть вариант переложить задачу ее развертывания и лицензирования на кого-то другого и обратиться к сервису вроде Appveyor. Но можно вместо этого воспользоваться способностью GCC к кросс-компиляции и собирать программы на хосте с Linux (или macOS).
GNU и Windows
Для сборки программ с помощью GNU toolchain на Windows часто используют два проекта: Cygwin и MinGW + MSYS. У них схожие цели, но разные детали реализации. Давай разбираться.
Cygwin
Cygwin — самая полная реализация окружения GNU для Windows. Он предоставляет большую часть POSIX API в виде библиотеки, что позволяет собирать программы из UNIX без портирования, если только им не требуется семантика UNIX. Яркий пример — демоны, им нужен fork() и сигналы, которых нет в Windows, да и службы Windows устроены совсем иначе.
Кроме библиотеки, дистрибутив содержит набор классических команд UNIX и терминал. Реализации команд используют эту библиотеку и поддерживают некоторые возможности UNIX, такие как регистрозависимые имена файлов.
Целевой способ использования: если нет желания или возможности портировать программу на Windows или использовать только платформенно независимые API, ее можно собрать «под Cygwin», ценой зависимости от cygwin1.dll и относительной изоляции от всей остальной системы.
Многие люди ставили и продолжают ставить окружение Cygwin, чтобы иметь возможность использовать классические команды UNIX на Windows. Некоторые разработчики также включают Cygwin в инструкции для сборки своих программ под Windows, хотя сама программа не связывается с cygwin1.dll . Для этой цели может быть более правильно использовать MSYS.
MinGW и MSYS
Если цель Cygwin — сделать возможной сборку немодифицированных приложений на Windows ценой внешней зависимости, то цель MinGW + MSYS — производить приложения без внешних зависимостей.
MinGW и MSYS — это независимые пакеты, но их часто путают и смешивают друг с другом (а часто путают и с Cygwin). Можно сказать, что MinGW — это эквивалент GCC и binutils, а MSYS — расширенный эквивалент coreutils.
Начнем с MSYS. MSYS — это более «нативная» и легковесная альтернатива Cygwin. Этот пакет включает библиотеку с реализациями функций POSIX, но она предназначена для внутреннего пользования, и авторы категорически не рекомендуют связывать с ней свои приложения.
Библиотека MSYS не реализует UNIX поверх Windows, а следует соглашениям Windows — к примеру, сознательно не учитывает регистр букв в путях к файлам. Главная цель MSYS — предоставить нужные для скриптов сборки программы вроде Bourne shell, make и прочее, что обычно требуется для autotools.
MinGW содержит версии GCC и binutils (ассемблер as, компоновщик ld и так далее), которые производят исполняемые файлы для Windows в формате PE/COFF. Здесь мы и подходим к ключевому моменту: MinGW, как и все остальные части GNU toolchain, такой же платформенно независимый проект.
Кросс-компиляция в GNU toolchain уже давно обычное дело, и в GCC целевая платформа и хост независимы друг от друга. Можно запускать GCC на Linux для x86 и собирать программы для Linux на ARM, или наоборот. Совпадать не обязаны не только рабочая и целевая архитектуры процессора. Точно так же не обязаны совпадать даже ОС и формат исполняемого файла.
Ставим MinGW
Авторы многих дистрибутивов GNU/Linux уже постарались за нас, так что многие кросс-версии GCC, включая MinGW, можно поставить из репозиториев.
Например, в Fedora:
$ sudo dnf install mingw32-gcc $ sudo dnf install mingw64-gcc
$ sudo apt-get install gcc-mingw-w64-i686 $ sudo apt-get install gcc-mingw-w64-x86-64
Если ты используешь macOS, то MinGW можно поставить из Homebrew: brew install mingw-w64 .
![]()
INFO
MinGW-w64, несмотря на название, поддерживает и Win32, и Win64. Это форк MinGW, который создали в первую очередь для реализации недостающей в оригинальном проекте поддержки Win64, отсюда и название.
В Fedora также присутствует ряд готовых кросс-версий популярных библиотек, например mingw32-qt .
Hello World
Для демонстрации соберем традиционный hello world. У кросс-версий GCC всегда есть префикс, для MinGW используются префиксы i686-w64-mingw32 и x86_64-w64-mingw32 .
$ cat ./hello.c #include int main(void) < printf("hello world\n"); >$ i686-w64-mingw32-gcc -o hello32 ./hello.c $ file ./hello32.exe ./hello32.exe: PE32 executable (console) Intel 80386, for MS Windows
Тестирование кросс-компилированных программ для других архитектур — непростая задача, но, поскольку наша целевая платформа — Windows на x86, мы легко можем протестировать их в Wine:
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Что такое Cygwin и как её установить на Windows
![]()
Cygwin — это Linux-подобная среда для систем на базе Windows. Он состоит из эмулятора и набора инструментов, которые обеспечивают возможность работы на Linux в среде Windows.
Cygwin состоит из DLL cygwin1.dll , которая действует как уровень эмуляции, обеспечивающий функциональность системного вызова POSIX через Windows. С Cygwin пользователи имеют доступ к стандартным утилитам UNIX, которые могут использоваться либо из предоставленной bash-оболочки, либо через командную строку Windows.
Кроме того, она предоставляет программистам поддержку в использовании Win32 API вместе с Cygwin API, позволяя переносить утилиты UNIX в Windows без особых изменений исходного кода.
Преимущества Cygwin по сравнению с командной строкой/WSL
Существует ряд преимуществ использования оболочки Cygwin по сравнению с командной строкой Windows. Ниже перечислены некоторые из основных:
- Предоставляет оболочку UNIX для Windows, обеспечивая доступ к целому ряду утилит от UNIX/Linux до Windows.
- Нет необходимости устанавливать полноценную ОС Linux или настраивать виртуальную машину, когда ресурсов, доступных через Cygwin, может быть достаточно.
- Оптимальное использование ресурсов и системные требования для работы в Windows, поскольку среда эмулируется и работает поверх Windows.
- Идеально подходит для тестирования/разработки, когда требуется использовать утилиты UNIX/Linux в Windows.
- Совместим со старыми ОС Windows, такими как Windows 7 и т.д., тогда как среда WSL, предлагаемая Windows, поддерживается только в более новых версиях.
Как скачать
Чтобы загрузить последнюю версию Cygwin, перейдите по этой ссылке на ее официальный сайт. Можно загрузить версию, под установленную версию Windows и архитектуры системы. 32-разрядную версию можно скачать тут, а 64-разрядную — тут.
Установка
Запустите скачанный файл с предыдущего шага. Подтвердите все запросы и предупреждения, отображаемые на экране компонентом UAC Windows. После прохождения этого квеста, будет запущена программа установки, как показано ниже.
Появится запрос на выбор источника загрузки. В большинстве случаев параметр по умолчанию «Install from Internet» (Установить из Интернета) подходит и ничего изменять не приходится. Если у вас есть локальный загруженный репозиторий или вы просто хотите загрузить и установить Cygwin позже, выберите один из других доступных вариантов. Для продолжения нажмите «Далее».
В следующем окне предлагается указать «Root Directory» для установки, а также указать, будет ли она установлена для всех пользователей «All Users» или только для вас «Just Me». Если довольны значениями по умолчанию, то нажмите кнопку «Далее», чтобы продолжить установку.
Чтобы загрузить файлы пакета, программа установки попросит вас указать «Локальный каталог пакетов». По умолчанию указывается папка «Загрузки». Если требуется указать другое расположение, укажите путь к нему и нажмите кнопку «Далее», чтобы продолжить настройку.
В большинстве случаев для загрузки пакетов следует использовать параметр «Using System Proxy Settings». Если вы не хотите использовать прокси-сервер и использовать прямое подключение к Интернету, выберите параметр «Direct Connection», также есть возможность указать пользовательские параметры прокси-сервера, если таковые существуют. Для продолжения установки нажмите «Далее».
Затем программа предложит выбрать зеркало, откуда Cygwin загрузит файлы пакета. Чтобы обеспечить более высокую скорость загрузки, лучше выбрать зеркало, которое географически расположено ближе. Если вы не знаете что выбрать, выберите любое зеркало из списка и нажмите «Далее», чтобы продолжить.
Cygwin предоставляет множество утилит на базе UNIX/Linux, работающих под управлением Windows. Не все пакеты устанавливаются по умолчанию. Устанавливается только минимальный набор важных пакетов. На этом шаге можно настроить Cygwin, выбрав/убрав различные категорий пакетов. Помните, что добавить или удалить пакеты в Cygwin можно и позже. Если у вас есть конкретный список важных пакетов для вашей работы, вы можете выбрать их сейчас и продолжить, нажав «Далее».
На следующем экране отображается список выбранных пакетов с запросом на просмотр и подтверждение. Нажмите «Далее» для подтверждения и продолжения.
Выбранные пакеты начнут загружаться, и это может занять некоторое время в зависимости от скорости выбранного зеркала загрузки и количества выбранных пакетов.
После загрузки всех пакетов программа продолжит установку пакетов.
После завершения установки появится возможность создания значков на рабочем столе и в меню «Пуск» для упрощения доступа. По завершении нажмите кнопку «Готово», чтобы закончить работу мастера установки.
Теперь можно запустить Cygwin, через поиск в меню «Пуск», как показано выше, или дважды щелкнув значок на рабочем столе (если он был создан во время установки).
Оболочка Cygwin поддерживает обычно используемые команды UNIX/Linux. Если какая-либо команда не работает, можно повторно запустить программу установки и выбрать отсутствующий пакет, если он доступен в репозитории Cygwin (пример — Ansible), и установить его. Установленная команда теперь должна стать доступной как обычная команда в CLI оболочки Cygwin.
Заключение
Cygwin — полезная утилита, обеспечивающая оболочку UNIX/Linux, эмулированную в среде Windows. Он облегчает перенос определенных приложений в Windows и позволяет разрабатывать и использовать скрипты на основе Linux в Windows для различных задач. Его установка так же проста, как и любая программа на базе Windows с настройкой на основе графического интерфейса пользователя.
Дополнительную информацию о Cygwin можно найти здесь. Подробные инструкции по использованию можно найти в разделе часто задаваемых вопросов и руководстве пользователя.
Cygwin
Cygwin — это UNIX-подобная среда для Windows. Это инструмент, который изнутри дает Windows доступ к консоли Linux и специфичным для этого семейства ОС программам. При этом среда не обособлена, а наоборот, интегрирована в Windows, позволяет работать с теми же файлами и папками.

«IT-специалист с нуля» наш лучший курс для старта в IT
Cygwin создает «Linux внутри Windows» — не полный, но поддерживающий большинство возможностей полноценной ОС Linux. Среда устанавливается как обычное приложение, проста в освоении и нетребовательна к ресурсам — подходит и для слабых компьютеров. Она распространяется бесплатно по свободной лицензии GNU GPL, и у нее открытый исходный код — ей можно пользоваться практически для любых целей.
Для чего нужен Cygwin
Консоль Linux — удобная и функциональная: командная строка Windows не всегда дает пользователю те же возможности, иногда ее бывает недостаточно. Cygwin помогает добавить в Windows возможности Linux-консоли, чтобы легче решать задачи поиска и работы с файлами, быстрее запускать определенные утилиты и программы. Такое может быть нужно разработчику, начинающему системному администратору или простому пользователю, который стал изучать Linux, но пока не решился на него перейти.
Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

Какие еще есть способы эмулировать Linux на Windows
Cygwin — не единственное и не универсальное решение. Способов запустить оболочку одной ОС внутри другой много, но практически все заточены под конкретные задачи — надо уметь грамотно выбирать инструмент.
Виртуальные машины. Виртуальная машина — это способ полноценно создать «ОС внутри ОС». У «внутренней» системы будет своя обособленная память, она будет пользоваться мощностями компьютера напрямую и независимо от внешней. Это происходит на довольно низком, близком к «железу» уровне. Поэтому для нормальной работы виртуальной ОС нужно иметь компьютер с достаточными мощностями — такой, чтобы он мог выдержать две практически независимые системы, запущенные одновременно.
Для слабых компьютеров это решение не подойдет. А для некоторых задач виртуальная система оказывается излишней. Если вам просто нужен удобный инструмент для работы с консолью, виртуальная машина не лучший выбор — это слишком масштабная сущность. К тому же по умолчанию виртуальная система не умеет взаимодействовать и интегрироваться с внешней — ее понадобится отдельно настраивать, а это лишнее время и силы.
Докер-контейнеры. Контейнер со средой внутри — удобное и быстрое решение, которым часто пользуются разработчики и DevOps-инженеры, чтобы легко создавать инфраструктуру. Мы подробнее рассказывали про контейнеризацию и Docker в соответствующих статьях: вы можете прочитать их, чтобы подробнее познакомиться с этой технологией. Она отличается от виртуальной машины, но несколько ее напоминает.
У контейнеров другая сфера применения. Контейнеры нужны для развертывания определенных приложений и процессов. Это не аналог Cygwin — просто другой инструмент для иных задач.
WSL. Из всех разобранных инструментов WSL по характеру использования ближе всего к Cygwin. Аббревиатура расшифровывается как Windows Subsystem for Linux — подсистема Windows для Linux. Это особый слой в системе, который позволяет поддерживать Linux-команды и приложения. Благодаря нему поверх Windows можно установить Linux, пользоваться консолью и ее преимуществами.
WSL есть только для Windows 10. Для более ранних версий ОС Windows ее не существует и не появится — их уже не дорабатывают. Поэтому для Windows 7, 8 и более ранних полноценно работать с консолью без виртуальной машины можно только через Cygwin.
Для более ранних версий существовала Subsystem for UNIX-based Applications — старый аналог, похожий на WSL. Но ее перестали поддерживать еще в 2006 году, так что сейчас она серьезно устарела.
Cygwin существует дольше WSL, и она оптимальнее для некоторых задач. Например, Cygwin быстрее и эффективнее взаимодействует с файловой системой Windows, а также она удобнее при работе с дробными числами.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Ограничения Cygwin
Cygwin — среда для тех, кто хочет интегрировать возможности Linux в Windows и при этом не создавать слишком сложных конструкций. Она создается на более высоком, далеком от «железа» уровне, чем виртуальная машина, поэтому не дает глубокого доступа к системе. Для работы с «железом» потребуется виртуальная ОС.
Cygwin не полностью эмулирует все возможности Linux: получившееся решение будет менее функциональным, чем отдельная ОС. Например, нельзя полноценно работать с менеджерами пакетов. Такая возможность есть в WSL. При этом Cygwin существует для всех актуальных версий Windows, нетребовательна к ресурсам и способна решать большинство простых задач, для которых IT-специалисту нужна консоль.
Это бесплатное ПО, которое распространяется по свободной лицензии. Его можно скачать на официальном сайте, а потом установить как обычное приложение и запускать из-под Windows.
IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.
