Microsoft brings coreutils to Windows
Microsoft has released coreutils for Windows, a set of Rust-based Unix-style command-line utilities that run natively on Windows, available through WinGet, aiming to ease cross-platform scripting.
Deep dive
- coreutils for Windows provides a set of UNIX-style command-line utilities (e.g., cat, grep, find) that run natively on Windows.
- It is a port of the Rust-based rewrite of GNU coreutils, findutils, and grep (known as uutils).
- The utilities ship as a single multi-call binary, exposing each utility under its standard name (e.g.,
cat.exe). - The goal is to make existing scripts and habits transfer seamlessly between Linux, macOS, WSL, containers, and Windows.
- Each command supports the standard
--helpflag for syntax and options. - Caveats include handling Windows path separators (it handles both but output may vary), differences in ACLs vs. POSIX permissions, and the absence of
/dev/null. - Some commands relying on POSIX-only concepts or deemed not useful on Windows are excluded.
- Conflicts with built-in
cmd.exeand PowerShell commands mean command execution depends on shell, PATH order, and PowerShell's alias table. - The project is in preview and installable through WinGet.
Decoder
- coreutils: A package of fundamental command-line utilities typically found on Unix-like operating systems (e.g.,
ls,cp,mv,grep,cat,find). - WinGet: The official package manager for Windows, used to install applications and tools from the command line.
Original article
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
--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.
About The Author
Thom Holwerda
Follow me on Mastodon @[email protected]
12 Comments
- 2026-06-03 8:18 pm xeoron
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.
- 2026-06-04 9:24 am franksands
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
- 2026-06-04 11:17 am Drumhellar
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?
- 2026-06-03 11:26 pm Alfman
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 🙂
- 2026-06-04 9:27 am franksands
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
- 2026-06-04 12:14 pm Alfman
franksands,
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
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.
- 2026-06-04 6:15 pm LeFantome
@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.
- 2026-06-04 2:42 am newbie_sysadmin
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.
- 2026-06-04 6:35 am Matriks404
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).
- 2026-06-04 6:23 pm LeFantome
> 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
- 2026-06-04 6:33 pm LeFantome
Sorry, “new tests created after each GNU coreutils release”.
- 2026-06-04 6:18 pm LeFantome
So Ubuntu and Windows ship some of the same utilities, both based on uutils. Crazy.
Leave a Reply Cancel reply
You must be logged in to post a comment.
Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi