Microsoft выпустила Coreutils для Windows: Unix-утилиты без WSL

Microsoft выпустила Coreutils для Windows: Unix-утилиты без WSL

Компания Microsoft представила порт набора утилит Coreutils для операционной системы Windows. Проект написан на языке Rust и PowerShell и распространяется под лицензией MIT. Это позволяет разработчикам и системным администраторам использовать привычные Unix-команды напрямую в Windows без установки подсистемы WSL.

В состав набора вошли десятки утилит, включая sort, cat, chmod, chown, cp, find, sleep, tee, echo, uptime и ls. Реализация основана на коде проекта uutils (Rust Coreutils), который является вариантом GNU Coreutils на Rust. Также используются реализации find и grep на том же языке.

Утилиты собраны в виде единого исполняемого файла, расположенного по пути C:Program Filescoreutilscoreutils.exe. Отдельные команды привязаны к нему с помощью жёстких ссылок в файловой системе NTFS. Такой подход упрощает распространение и обновление инструментов.

Из поставки были исключены некоторые утилиты из-за конфликтов со штатными средствами Windows или зависимости от специфических возможностей. В частности, не вошли dd, dir, dircolors, shred, sync, uname, expand, kill, more, paste, timeout и whoami. Также исключены утилиты, завязанные на не поддерживаемые в Windows концепции POSIX, например chcon, chgrp, chmod, chown, chroot, groups и другие.

Работа нового набора имеет ряд особенностей. Вместо /dev/null необходимо использовать NUL. Отсутствует поддержка сигналов SIGHUP, SIGPIPE, SIGUSR. Создание символических ссылок возможно только после включения режима для разработчика. Некоторые операции с правами доступа могут быть недоступны. При этом в путях допускается как прямой, так и обратный слеш.

Основная цель проекта — упростить переход между Unix-подобными системами, WSL, контейнерами и Windows. Разработчики стремятся предоставить единый набор команд, флагов и методов, позволяющий переносить существующие скрипты из других операционных систем без переписывания.