Новости

Секретное оружие Windows: как запустить полный набор консольных утилит Linux за одну команду

Операционная система Windows 11 теперь поддерживает пакет Coreutils, который включает набор утилит командной строки, давно знакомый пользователям Linux.

Этот пакет ориентирован на разработчиков и, по задумке, должен обеспечивать корректную работу скриптов и других инструментов для программирования при их миграции между разными операционными системами.

«Программисты часто переходят с одной платформы на другую, однако знакомые команды работают по-разному, что вынуждает искать обходные решения, замедляет процесс и требует переключения контекста», — отмечается в заявлении Microsoft.

Версия Coreutils для Windows 11 основана на коде проекта uutils (доступном бесплатно на Github). Этот проект создает новую кроссплатформенную версию вспомогательных программ из GNU Coreutils, написанную на безопасном языке программирования Rust.

Использование исходного кода, вероятно, могло бы создать для Microsoft юридические сложности, так как он распространяется под строгой лицензией «копилефт» GPLv3.

Coreutils для Windows поддерживает множество команд, активно применяемых в современных ОС на ядре Linux, включая cat, cp, find, hostname, ls, mv, pwd, rm, tee и uptime — всего 77 штук.

Все 77 утилит Microsoft объединила в один нативный бинарный файл Windows под названием “coreutils.exe”, который занимает на диске чуть более 9 МБ.

Чтобы выполнить любую команду Coreutils, достаточно запустить эту программу через командную строку, указав в качестве первого аргумента имя нужной команды. Кроме того, при установке пакета в целевой папке автоматически создается подкаталог “bin”, где находятся 77 жестких ссылок NTFS на “coreutils.exe” — по одной для каждой доступной команды (“cat.exe”, “cp.exe” и т.д.). Такой подход позволяет запускать любую команду, просто вводя ее в командной строке — точно так же, как в Linux. Главное — не забыть добавить путь к каталогу установки Coreutils в локальную переменную среды Path.

Любой желающий может установить пакет через командную строку из официального магазина приложений Microsoft (требуются права администратора). Для этого нужно выполнить всего одну команду: “winget install Microsoft.Coreutils”.

В состав Coreutils вошли не все утилиты из оригинального пакета, разработанного в рамках проекта GNU. Например, команды dir, more, paste и whoami пришлось исключить, чтобы избежать конфликта с одноименными программами, встроенными в Windows.

Кроме того, были опущены некоторые популярные Unix-утилиты, для работы которых требуется POSIX-совместимая операционная система. Windows, в отличие от GNU/Linux и macOS, таковой не является. Поэтому пользователям Coreutils в Windows недоступны такие команды, как chmod, chown, chroot, nohup, tty и who.

Корпорация Microsoft решила не включать поддержку команд kill и timeout (предназначенных для управления процессами в операционной системе), так как Windows не поддерживает POSIX-сигналы. Однако в будущем эта проблема может быть решена, и данные утилиты всё же появятся в составе Microsoft Coreutils.

На протяжении примерно десяти лет Microsoft стремится облегчить жизнь разработчикам кроссплатформенного программного обеспечения, которые также являются пользователями Windows.

В 2016 году была представлена подсистема Linux для Windows (WSL) — слой совместимости, который транслировал системные вызовы Linux и обеспечивал взаимодействие с ядром Windows NT.

В 2019 году вышла WSL2, построенная на полноценном ядре Linux, специально модифицированном Microsoft, и основанная на технологиях виртуализации.

В апреле 2021 года Microsoft начала публичное тестирование WSLg — компонента подсистемы Windows для Linux, отвечающего за вывод графического интерфейса Linux-программ. В мае 2025 года исходный код WSL2 был сделан открытым.

В 2019 году пользователи Windows получили доступ к многофункциональному эмулятору терминала Windows Terminal. Такие эмуляторы широко распространены в среде Linux. Например, в Ubuntu по умолчанию предустановлен GNOME Terminal.

В 2021 году для Windows стал доступен полноценный менеджер пакетов winget с консольным интерфейсом, устроенный по аналогии с популярными Linux-утилитами, такими как apt или yum, которые являются «надстройками» над dpkg и rpm.

Наконец, в 2024 году Microsoft решила, что пользователям Windows может пригодиться аналог Linux-утилиты sudo. Она позволяет выполнять различные команды с правами другого пользователя, имеющегося в системе, без необходимости переключаться на другую учётную запись.

Дмитрий Степанов

Поделиться:

0 Комментариев

Оставить комментарий

Обязательные поля помечены *
Ваш комментарий *
Категории
Популярные новости