Microsoft integra Unix directamente en Windows.

Microsoft lanzó Coreutils for Windows: un conjunto de comandos habituales de Linux y macOS que ahora funcionan en Windows sin capas adicionales y sin necesidad de adaptar la sintaxis. Los desarrolladores ya no tienen que ajustarse al cambiar entre sistemas: comandos como cat, grep, find, ls, cp y rm se pueden ejecutar directamente en Windows casi del mismo modo que en el terminal de Linux, macOS, WSL o dentro de contenedores.
El nuevo conjunto de utilidades admite las cadenas habituales de comandos, los parámetros y los scripts de automatización. La idea es simple: la persona que cada día trabaja con la línea de comandos en distintos entornos debe poder usar las mismas herramientas y no perder tiempo adaptando los comandos a cada sistema.
Coreutils for Windows está por ahora disponible en versión preliminar. El paquete se instala a través del gestor WinGet con el comando winget install Microsoft.Coreutils. También se puede descargar la compilación desde la página de lanzamientos del proyecto.
Técnicamente, el paquete se distribuye como un único ejecutable que funciona como un programa polivalente. Cada utilidad está disponible bajo su nombre habitual, por ejemplo cat.exe, grep.exe o find.exe. Ese enfoque mantiene la apariencia familiar de los comandos y facilita la distribución del paquete.
Las utilidades están escritas en Rust y se basan en el proyecto uutils/coreutils. Es una implementación portátil de GNU coreutils que ya usan las distribuciones modernas de Linux. Microsoft mantiene una compilación separada orientada a Windows y combina en ella coreutils, findutils con los comandos find y xargs, además de una versión compatible con GNU de grep.
La compañía ha tenido en cuenta que algunos nombres coinciden con comandos integrados de Windows y de PowerShell. Por ejemplo, cat, cp, ls, mv, pwd, rm, sleep, tee y uptime en PowerShell 7.4 y posteriores pueden entrar en conflicto con alias o comandos integrados. Los comandos dir, expand, more, paste y whoami no se incluyeron en el paquete para no alterar el comportamiento habitual de Windows. Tampoco se incorporó el comando kill, porque en Windows no existe el modelo de señales típico de los sistemas POSIX.
Para escenarios antiguos de la línea de comandos, Microsoft añadió versiones integradas de los comandos clásicos de DOS find y sort. Gracias a ello, los scripts de CMD con parámetros del estilo /switch continúan funcionando junto a los comandos tipo UNIX. Los desarrolladores advierten por separado que se requiere PowerShell 7.4 o posterior para un funcionamiento normal; las versiones antiguas de PowerShell no son compatibles.
No conviene esperar una coincidencia completa con Linux debido a las particularidades de Windows. En archivos de texto se usan a menudo finales de línea CRLF, por lo que la búsqueda por patrones puede dar resultados distintos y los bytes se interpretan de otra manera. En lugar de /dev/null hay que usar NUL. En las rutas se aceptan tanto barras normales como invertidas, pero algunas utilidades muestran rutas con barra invertida, lo que puede afectar el procesamiento posterior en cadenas de comandos.
También hay otras diferencias del sistema. Windows usa listas de control de acceso en lugar de permisos POSIX, por lo que comprobar los permisos de archivos puede ser diferente o directamente imposible. Leer enlaces simbólicos existentes no requiere privilegios elevados, pero para crear nuevos enlaces se necesita el modo de desarrollador o un terminal con privilegios de administrador. Señales como SIGHUP, SIGPIPE y SIGUSR no existen en Windows, aunque Ctrl+C funciona como de costumbre.
Microsoft decide no distribuir deliberadamente parte de los comandos del proyecto origen. En la lista no figuran, por ejemplo, chmod, chown, chroot, groups, id, mkfifo, mknod, nice, nohup, stty, tty, users y who, porque esos comandos dependen del modelo POSIX y no encajan bien en Windows. Los comandos dircolors, shred, sync y uname se consideraron poco útiles para Windows, y dd por ahora se dejó como posible dirección futura.
Cada comando admite el parámetro estándar --help, con el que se puede consultar la sintaxis y las opciones disponibles. Microsoft espera que Coreutils for Windows reduzca la fricción al trabajar entre Windows, Linux, macOS, WSL y contenedores, especialmente para los desarrolladores que con frecuencia trasladan scripts y hábitos de trabajo entre distintas plataformas.