Microsoft добавила команды Linux в Windows

Microsoft выпустила Coreutils для Windows — набор популярных Linux-команд (ls, cp, mv, grep, find, xargs), которые работают нативно без WSL. Установка одной командой через winget

Microsoft выпустила Coreutils для Windows

Если вы когда-нибудь работали и с Windows, и с Linux, вы знаете эту боль: скрипт отлично работает на сервере, но на локальной Windows-машине — ни в какую. Приходится ставить WSL (подсистему Windows для Linux), Git Bash или другие костыли.

Microsoft решила упростить жизнь. Компания выпустила Coreutils для Windows — набор популярных Linux-команд (ls, cp, mv, grep, find, xargs), которые работают нативно без WSL, прямо в CMD и PowerShell, без прослоек.

Рассказываю, что это за зверь, как установить и какие есть ограничения.


Что это такое и зачем нужно

Coreutils — это стандартный набор команд Linux: lscpmvrmcatgrepfindxargs и другие. Теперь они официально доступны в Windows.

Кому пригодится:

  • разработчикам, которые пишут кроссплатформенные скрипты
  • DevOps-инженерам, работающим с гибридной инфраструктурой (и Windows, и Linux)
  • системным администраторам
  • всем, кто привык к Linux-командам и не хочет учить PowerShell

Раньше для запуска ls -la | grep приходилось использовать WSL (тяжёлый, ест память) или Git Bash (не всегда удобен). Теперь команды работают нативно.


Как это устроено технически (очень коротко)

В основе — проект uutils/coreutils на языке Rust. Вместо десятков отдельных файлов — один бинарник coreutils.exe. При установке создаются «жёсткие ссылки»: ls.execp.exerm.exe — все они ведут на один и тот же файл.

Почему Rust: безопасная работа с памятью, меньше уязвимостей, чем в классических C-реализациях, и один код компилируется под Windows, Linux и macOS.

Что включено:

  • базовые команды из coreutils (ls, cp, mv, rm, cat, echo и др.)
  • find и xargs (из проекта uutils/findutils)
  • GNU-совместимый grep

Что важно: старые Windows-команды (sortfind) не сломали. Если в скрипте написано find /O, отработает встроенная Windows-утилита, а не новая Unix-версия. Microsoft сохранила совместимость.


Как установить (одна команда)

Откройте PowerShell 7.4+ (или обычную командную строку) и выполните:

powershell
winget install Microsoft.Coreutils

Бинарники попадут в Program Files, а пути добавятся в PATH. Команды станут доступны в CMD, PowerShell и Windows Terminal.

Важный нюанс: если стандартная Windows-команда стоит в PATH раньше, она перехватит вызов. Можно настроить алиасы в PowerShell или указать полный путь к ls.exe.


Что работает, а что нет

Работает (основной набор):

Команда Что делает
ls показать содержимое папки
cp скопировать файлы
mv переместить/переименовать
rm удалить
cat вывести содержимое файла
grep поиск по тексту
find поиск файлов
xargs передать аргументы другой команде
echo вывести текст
Читать ещё  Финансовые результаты Selectel за 1 полугодие 2025

Все поддерживают привычные флаги: ls -lacp -rgrep -i.

Не работает (и не будет работать)

Из-за различий в устройстве Windows и Linux некоторые команды невозможно реализовать нормально:

Команда Почему не работает
chmodchownchgrp Вместо прав POSIX в Windows используется система ACL. Принципиально по-другому
killtimeout Нет полноценной поддержки POSIX-сигналов
mkfifomknodchroot Специфичные для Unix инструменты, нет аналогов в Windows
ln -s (символические ссылки) Формально работает, но поведение при cp -r или rm -rf может быть неожиданным (различия в устройстве NTFS и ext4)

С концами строк тоже нужно быть аккуратным: в Windows — CR+LF, в Linux — LF. grepcat и sort могут выдать неожиданный результат. Разработчики советуют использовать флаг --binary или следить за кодировкой.


Производительность

Поскольку утилиты работают напрямую с WinAPI (а не через слой совместимости), они быстрее, чем WSL, в большинстве сценариев.

Однако при работе с очень большим количеством файлов (миллионы) NTFS может уступать ext4. Но это специфический кейс, не для повседневных задач.


Что говорят в сообществе

Реакция в целом положительная. Особенно рады те, кто работает с Git, Docker, CI/CD и облачными SDK, где командная строка используется постоянно.

Плюсы, которые отмечают:

  • можно писать кроссплатформенные скрипты без «на Windows нужно переписать»
  • не надо разворачивать WSL ради простого ls
  • один и тот же код работает и на локальной Windows-машине, и на Linux-сервере

Но: для сложных сценариев, где нужна вся мощь POSIX (сигналы, права доступа, inode), WSL всё ещё остаётся безальтернативным.


Что в итоге

Microsoft Coreutils для Windows — это шаг к уменьшению разрыва между платформами. Теперь можно использовать привычные lscpgrep и find прямо из командной строки Windows, без танцев с бубном.

Установка: winget install Microsoft.Coreutils

Главное ограничение: команды, связанные с правами доступа (chmod) и сигналами (kill), не работают — и не будут.

Вердикт: для 80% повседневных задач (посмотреть файлы, скопировать, найти строку в тексте) — отличная замена WSL. Если нужен полноценный Linux-окружение — WSL идёт лесом. Но для быстрых скриптов и ad-hoc команд — самое то.

Селектел- инфраструкткра для АИ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»

Получайте новости ПЕРВЫМИ!

X