At its Build conference, Microsoft announced coreutils for Windows.
Coreutils for Windows is a Microsoft-maintained set of UNIX-style command-line utilities that run natively on Windows — the same commands and pipelines you use on Linux, macOS, and WSL. It ships as a single multi-call binary that exposes each utility under its standard name (
cat.exe,grep.exe,find.exe, and so on), giving you the everyday tools developers already use on other platforms to script, automate, and process text. For the full list, see Commands.The goal is to remove friction when moving between Linux, macOS, WSL, containers, and Windows. The same commands, flags, and pipelines work the same way, so existing scripts and habits carry over without translation. Each command supports the standard
↫ Windows Developer Tools website--helpflag for full syntax and options.
It’s a port of the Rust-based rewrite of the GNU coreutils, findutils, and grep. There are a few caveats though, since these ports have to deal with a number of Windows-isms. The first thing that comes to mind for most of us are path separators; these ports will handle both the correct and incorrect Windows/DOS one, but since some tools may output only the incorrect one this may affect piping. You should also take into account things like Windows’ ACLs vs. POSIX permission bits, the lack of /dev/null, and a few other oddities.
Furthermore, there are a bunch of commands that rely on POSIX-only concepts, so those aren’t included, and a few other commands that aren’t useful on Windows are excluded as well. Since a number of commands conflict with built-in commands from cmd.exe and PowerShell, which commands run will depend on the shell, the PATH order, and PowerShell’s alias table.
Everything’s in preview, and installable through WinGet.

If they want to do things right, just release Windows 12 as a Linux distro and Windows Server, as well with a explorer shell as the UX and wine making old Window apps run on Linux with porting tools in Visual Studio.
Yeah, I thought this over the years. I think it would benefit everyone. Just go full linux distro and use a VM or something similar to legacy apps
That is a terrible idea. Porting Windows to the Linux kernel any benefit to Windows, and would break a huge amount of software in the process.
What would be the point?
Looking at the list of commands supported by this project, it’s such a small subset of unix that I think switching between windows and unix command sets would be more frustrating than useful. I’d prefer going all windows or all unix, not blending them together.
Incidentally the Mingw and Cygwin projects did this decades ago and provided a fairly comprehensive unix environment running on windows with tons of unix packages. It was even possible to build & run *nix software on windows. These unix tools are what I used to build native windows software. I even used unix tools to build windows kernel drivers, fun times 🙂
I had problems when I needed mingw or cygwin to interact with the “outside world”. So native windows versions are always welcome. Or go full linux like xeoron suggested
franksands,
It’s probably too late, but I’d genuinely offer to help if you have a current need.
Cygwin and mingw worked differently. Cygwin was about porting unix APIs to windows. Software built for cygwin was kind of a hybrid unix/windows application. However mingw did not take this approach and actually builds native windows software without trying to make the software think it’s in a unix environment. You didn’t have to use any of the unix APIs, you could (and I did) build pure win32 software. This made mingw my go to choice for building proper native win32 software. I also tried LCC for a time but preferred mingw.
@Alfman
This is just Microsoft releasing uutils stuff under their own banner. As they are Rust based, they pretty much already worked on Windows already and that is one of the uutils design goals. As uutils adds more of the full Linux suite, MS may add more.
MS lists the utils they dropped. I am not sure why they decided not to include dd.
because dd is still broken and did not pass testing recently. Personally for this reason I’m not trusting this set of utilities yet.
As a sysadmin in a Windows-centric company and a Linux fan at home, I think the best shell for Windows administration is PowerShell.
A lot of the great things about unix-style commands simply cannot be ported to Windows because it’s an API-centric system while UNIXes are text-centric.
If you want to make an extremely quick and small script, then it’s faster to search or use an LLM or whatever and write in the native language of your OS rather than install a new tool THEN figure out implementation drift from the system you’re used to seeing it in…
And if you want something solid that will be re-used often you will always have a better experience with the native tool as well, I just don’t get these porting efforts.
Same way that when I moved from Windows to Linux at home I used PowerShell on Linux because bash felt too foreign, and yeah PS on Linux is just NOT that and that’s exactly because PowerShell is really made for an API-centric OS.
I prefer WSL and writing scipts in Bash.
That’s odd, but overall probably a good thing for these people who use Linux/macOS/Other Unix* everyday, but need to deal with Windows machines at work, and have no WSL installed (because otherwise you would want probably use actual full-featured GNU core utililities, along with other useful commands standard Linux distributions come pre-installed with).
> you would want probably use actual full-featured GNU core utililities
uutils are meant to have identical behaviour to the GNU utilities. If they are different, it is a bug. Unless Microsoft has crippled them, these will give you the same functionality as the GNU equivalents.
uutils uses the GNU test suite as a benchmark for functionality. When differences are found that the tests did not catch, uutils contributes new tests to the GNU suite to catch them in the future. You can see the size of the test suite growing as more people start using uutils (eg. in Ubuntu). There tend to be a bunch of new tests created after each uutils release.
https://raw.githubusercontent.com/uutils/coreutils-tracking/refs/heads/main/gnu-results.svg
Sorry, “new tests created after each GNU coreutils release”.
So Ubuntu and Windows ship some of the same utilities, both based on uutils. Crazy.