Microsoft Brings Native Linux Coreutils to Windows – No WSL Required
Microsoft released Coreutils for Windows, a native Rust‑based implementation of common Linux commands like ls, cp, and grep that installs with a single winget command, eliminates the need for WSL, and uses a clever single‑binary hard‑link design to reduce disk usage and maintenance overhead.
At Build 2026 Microsoft announced Coreutils for Windows , a native Windows port of common GNU Coreutils commands (ls, cp, grep, find, etc.) built on the Rust‑rewritten uutils project and distributed under the MIT license. Installation is a single winget install Microsoft.Coreutils command or a GitHub release download.
Why Coreutils?
Cross‑platform developers often maintain separate scripts for Linux/WSL and Windows CMD, leading to duplicated CI/CD pipelines, documentation, and onboarding friction. Coreutils solves this by providing the same commands and arguments on Windows, allowing identical scripts to run unchanged.
What Coreutils Is
Instead of directly porting GNU Coreutils C code, Microsoft integrated three upstream uutils crates ( uutils/coreutils, uutils/findutils, uutils/grep) written in Rust, which offers cross‑platform binaries, memory safety, and high compatibility with GNU behavior.
Design: One Binary, Many Commands
Traditional approaches ship a separate .exe for each command. Microsoft’s solution creates a single coreutils.exe file and uses NTFS hard links (e.g., ls.exe, cp.exe) that point to it. At runtime the program reads argv[0] to determine which command to execute, achieving zero redundancy, minimal disk footprint, and simple updates (only coreutils.exe needs replacement).
Installation & Usage
winget install Microsoft.CoreutilsAfter installation commands behave like their Linux counterparts:
# List files with colors
ls -la --color=auto
# Search logs
grep ERROR app.log
# Recursive find
find . -name "*.js" -type f
# Pipe example
find . -name "*.log" | grep ERROR | sort
# Delay
sleep 5 && echo "done"A helper tool coreutils-manager can enable/disable individual commands or show help.
Supported and Missing Commands
Supported (partial list): ls, cp, mv, rm, cat, mkdir, rmdir, pwd, echo, date, sort, tee, sleep, hostname, uptime, etc.
Intentionally omitted because they clash with Windows built‑ins or rely on POSIX signals, permissions, or devices: dir, more, whoami, kill, timeout, chmod, chown, chgrp, chroot, groups, id, users, who, tty, stty, mkfifo, mknod, etc.
Microsoft may add Windows‑specific alternatives for some omitted commands in the future.
Shell Compatibility
CMD: most commands work out of the box.
PowerShell 7.4+: some commands conflict with built‑in aliases (e.g., ls maps to Get-ChildItem). Resolve by using the full path ( coreutils.exe ls), adjusting PATH, or removing the alias ( Remove-Item Alias:ls -Force).
PowerShell 7.6+: supports tilde expansion (~) and is the recommended version.
Windows‑Specific Pitfalls
Line endings: Windows uses CRLF, which can affect tools like uniq.
No /dev/null: use > NUL instead.
No POSIX signals: Ctrl+C works but SIGTERM/SIGHUP are unavailable.
Path separators: both / and \ are accepted, but some output may use backslashes.
File permissions: Windows ACLs replace POSIX chmod and related options.
Symlinks: creation requires Developer Mode to be enabled.
WSL vs. Coreutils Comparison
Principle : WSL runs a full Linux VM; Coreutils is a native Windows binary.
Compatibility : WSL provides 100 % Linux commands; Coreutils covers common commands but lacks some POSIX features.
Performance : Coreutils has no virtualization overhead, while WSL incurs VM communication cost.
Memory usage : WSL 2 consumes ~200 MB+, Coreutils is almost negligible.
Use case : Use WSL for a complete Linux environment; use Coreutils for lightweight scripts and familiar commands on Windows.
Installation complexity : WSL requires enabling the subsystem and installing a distro; Coreutils installs with a single winget command.
One‑sentence conclusion : Choose WSL when you need a full Linux system; choose Coreutils when you just want familiar Linux commands directly in Windows.
Implications for Ubuntu Users
Pure Linux users: no need for Coreutils, but Windows colleagues can now run the same scripts.
Dual‑boot users: no longer need to remember separate Windows commands ( dir, copy, findstr) when switching to Windows.
WSL users: lightweight scripts can run directly in the Windows terminal without launching WSL.
Strategic Context
Coreutils for Windows is the latest milestone in Microsoft’s “Windows as a first‑class development platform” roadmap, following milestones such as WSL, Windows Terminal, WinGet, and sudo‑for‑Windows. It demonstrates a shift from forcing developers to adapt to Windows toward making Windows adapt to developers.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Ubuntu
Focused on Ubuntu/Linux tech sharing, offering the latest news, practical tools, beginner tutorials, and problem solutions. Connecting open-source enthusiasts to build a Linux learning community. Join our QQ group or channel for discussion!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
