Конец эпохи «а в Linux это делается иначе». Microsoft добавила в Windows привычные команды Unix

leer en español

5798
Конец эпохи «а в Linux это делается иначе». Microsoft добавила в Windows привычные команды Unix

Microsoft привезла Unix прямо в Windows.

image

Microsoft выпустила Coreutils for Windows – набор привычных команд из Linux и macOS, которые теперь работают в Windows без дополнительных прослоек и без необходимости переводить синтаксис. Разработчикам больше не нужно перестраиваться при переходе между системами: команды вроде cat, grep, find, ls, cp и rm можно запускать прямо в Windows почти так же, как в терминале Linux, macOS, WSL или внутри контейнеров.

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

Coreutils for Windows пока доступен в предварительной версии. Пакет устанавливается через диспетчер WinGet командой winget install Microsoft.Coreutils. Также сборку можно скачать со страницы выпусков проекта.

Технически набор поставляется как один исполняемый файл, который работает по принципу многоцелевой программы. Каждая утилита доступна под своим обычным именем, например cat.exe, grep.exe или find.exe. Такой подход сохраняет привычный вид команд и позволяет проще распространять пакет.

Утилиты написаны на Rust и основаны на проекте uutils/coreutils. Это переносимая реализация GNU coreutils, которую уже используют в современных дистрибутивах Linux. Microsoft поддерживает отдельную сборку, ориентированную на Windows, и объединяет в ней coreutils, findutils с командами find и xargs, а также совместимый с GNU вариант grep.

Компания учла, что часть названий пересекается со встроенными командами Windows и PowerShell. Например, cat, cp, ls, mv, pwd, rm, sleep, tee и uptime в PowerShell 7.4 и новее могут конфликтовать с псевдонимами или встроенными командами. Команды dir, expand, more, paste и whoami в пакет не включили, чтобы не ломать привычное поведение Windows. Команда kill также отсутствует, потому что в Windows нет обычной для POSIX-систем модели сигналов.

Для старых сценариев командной строки Microsoft добавила встроенные версии классических DOS-команд find и sort. Благодаря этому CMD-сценарии с параметрами в стиле /switch продолжают работать рядом с UNIX-подобными командами. Разработчики отдельно предупреждают, что для нормальной работы нужен PowerShell 7.4 или новее, старые версии PowerShell не поддерживаются.

Полного совпадения с Linux ждать не стоит из-за особенностей самой Windows. В текстовых файлах часто используются окончания строк CRLF, поэтому поиск по шаблонам может давать другой результат, а байты считаются иначе. Вместо /dev/null нужно использовать NUL. В путях принимаются и прямые, и обратные слэши, но некоторые утилиты выводят пути с обратным слэшем, что может влиять на последующую обработку в цепочках команд.

Есть и другие системные отличия. Windows использует списки контроля доступа, а не права POSIX, поэтому проверять права файлов бывает иначе или вовсе не получится. Чтение существующих символических ссылок не требует повышенных прав, но чтобы создавать новые ссылки, нужен режим разработчика или терминал с правами администратора. Сигналы вроде SIGHUP, SIGPIPE и SIGUSR в Windows отсутствуют, хотя Ctrl+C работает как обычно.

Часть команд из исходного проекта Microsoft намеренно не поставляет. В список не вошли, например, chmod, chown, chroot, groups, id, mkfifo, mknod, nice, nohup, stty, tty, users и who, потому что такие команды завязаны на POSIX-модель и плохо ложатся на Windows. Команды dircolors, shred, sync и uname сочли малополезными для Windows, а dd пока оставили как возможное направление на будущее.

Каждая команда поддерживает стандартный параметр --help, через который можно посмотреть синтаксис и доступные опции. Microsoft рассчитывает, что Coreutils for Windows снизит трение при работе между Windows, Linux, macOS, WSL и контейнерами, особенно для разработчиков, которые часто переносят сценарии и рабочие привычки между разными платформами.

Рекламодатель
АО «Позитив Текнолоджиз»
ИНН: 7718668887
ptsecurity.com↗
АО «Позитив Текнолоджиз»