Если вы когда-нибудь работали и с Windows, и с Linux, вы знаете эту боль: скрипт отлично работает на сервере, но на локальной Windows-машине — ни в какую. Приходится ставить WSL (подсистему Windows для Linux), Git Bash или другие костыли.
Microsoft решила упростить жизнь. Компания выпустила Coreutils для Windows — набор популярных Linux-команд (ls, cp, mv, grep, find, xargs), которые работают нативно без WSL, прямо в CMD и PowerShell, без прослоек.
Рассказываю, что это за зверь, как установить и какие есть ограничения.
Что это такое и зачем нужно
Coreutils — это стандартный набор команд Linux: ls, cp, mv, rm, cat, grep, find, xargs и другие. Теперь они официально доступны в Windows.
Кому пригодится:
- разработчикам, которые пишут кроссплатформенные скрипты
- DevOps-инженерам, работающим с гибридной инфраструктурой (и Windows, и Linux)
- системным администраторам
- всем, кто привык к Linux-командам и не хочет учить PowerShell
Раньше для запуска
ls -la | grepприходилось использовать WSL (тяжёлый, ест память) или Git Bash (не всегда удобен). Теперь команды работают нативно.
Как это устроено технически (очень коротко)
В основе — проект uutils/coreutils на языке Rust. Вместо десятков отдельных файлов — один бинарник coreutils.exe. При установке создаются «жёсткие ссылки»: ls.exe, cp.exe, rm.exe — все они ведут на один и тот же файл.
Почему Rust: безопасная работа с памятью, меньше уязвимостей, чем в классических C-реализациях, и один код компилируется под Windows, Linux и macOS.
Что включено:
- базовые команды из coreutils (ls, cp, mv, rm, cat, echo и др.)
- find и xargs (из проекта uutils/findutils)
- GNU-совместимый grep
Что важно: старые Windows-команды (
sort,find) не сломали. Если в скрипте написаноfind /O, отработает встроенная Windows-утилита, а не новая Unix-версия. Microsoft сохранила совместимость.
Как установить (одна команда)
Откройте PowerShell 7.4+ (или обычную командную строку) и выполните:
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 |
вывести текст |
Все поддерживают привычные флаги:
ls -la,cp -r,grep -i.
Не работает (и не будет работать)
Из-за различий в устройстве Windows и Linux некоторые команды невозможно реализовать нормально:
| Команда | Почему не работает |
|---|---|
chmod, chown, chgrp |
Вместо прав POSIX в Windows используется система ACL. Принципиально по-другому |
kill, timeout |
Нет полноценной поддержки POSIX-сигналов |
mkfifo, mknod, chroot |
Специфичные для Unix инструменты, нет аналогов в Windows |
ln -s (символические ссылки) |
Формально работает, но поведение при cp -r или rm -rf может быть неожиданным (различия в устройстве NTFS и ext4) |
С концами строк тоже нужно быть аккуратным: в Windows — CR+LF, в Linux — LF.
grep,catиsortмогут выдать неожиданный результат. Разработчики советуют использовать флаг--binaryили следить за кодировкой.
Производительность
Поскольку утилиты работают напрямую с WinAPI (а не через слой совместимости), они быстрее, чем WSL, в большинстве сценариев.
Однако при работе с очень большим количеством файлов (миллионы) NTFS может уступать ext4. Но это специфический кейс, не для повседневных задач.
Что говорят в сообществе
Реакция в целом положительная. Особенно рады те, кто работает с Git, Docker, CI/CD и облачными SDK, где командная строка используется постоянно.
Плюсы, которые отмечают:
- можно писать кроссплатформенные скрипты без «на Windows нужно переписать»
- не надо разворачивать WSL ради простого
ls - один и тот же код работает и на локальной Windows-машине, и на Linux-сервере
Но: для сложных сценариев, где нужна вся мощь POSIX (сигналы, права доступа, inode), WSL всё ещё остаётся безальтернативным.
Что в итоге
Microsoft Coreutils для Windows — это шаг к уменьшению разрыва между платформами. Теперь можно использовать привычные ls, cp, grep и find прямо из командной строки Windows, без танцев с бубном.
Установка: winget install Microsoft.Coreutils
Главное ограничение: команды, связанные с правами доступа (
chmod) и сигналами (kill), не работают — и не будут.
Вердикт: для 80% повседневных задач (посмотреть файлы, скопировать, найти строку в тексте) — отличная замена WSL. Если нужен полноценный Linux-окружение — WSL идёт лесом. Но для быстрых скриптов и ad-hoc команд — самое то.








