Технологии Microsoft добавила в Windows привычные команды Unix

weaver

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

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

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

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

Утилиты написаны на Для просмотра ссылки Войди или Зарегистрируйся и основаны на проекте Для просмотра ссылки Войди или Зарегистрируйся. Это переносимая реализация 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 и контейнерами, особенно для разработчиков, которые часто переносят сценарии и рабочие привычки между разными платформами.

Источник: securitylab.ru