coreutils README

The project's README from github.com/microsoft/coreutils. As one markdown file: README.md.

Coreutils for Windows

UNIX-style core utilities for Windows. The same commands and pipelines you use on Linux, macOS, and WSL - natively.

Install · Shell conflicts · Windows caveats · Contributing


A Microsoft-maintained build of uutils/coreutils, findutils, and grep packaged as a single multi-call binary for Windows. The goal is to make moving between Linux, macOS, WSL, containers, and Windows frictionless: the same commands, flags, and pipelines work the same way, so existing scripts carry over without translation.

Each command supports the standard --help flag for full syntax and options.

This project is in preview.


Install

Install Coreutils for Windows with WinGet:

winget install Microsoft.Coreutils

Or grab the latest build from our Release Page.


Creating custom alias

[!WARNING] Using PowerShell aliases will cause binary stream compatibility. Some utilities will not work when piped (e.g. xargs, find, ...)

Shell conflicts

[!NOTE] Any command not mentioned is included in this suite. The following only lists conflicts.

[!NOTE] You can remove additional utilities using coreutils-manager disable <utility name>. See coreutils-manager --help for other management commands.

[!WARNING] PowerShell 7.4 or later is required. PowerShell 7.6 or later is recommended for ~ support.

Several commands share names with built-ins in CMD and PowerShell. Whether the Coreutils version runs depends on the shell, the PATH order, and (for PowerShell) the alias table.

Legend: ✅ ships and works · ⚠️ ships but conflicts with a built-in · 🛑 not shipped

Command CMD PowerShell 7.4+ Notes
cat ✅ ⚠️
cp ✅ ⚠️
date ⚠️ ⚠️
dir 🛑 🛑 Conflicts with the built-in DOS command
echo ⚠️ ⚠️
expand 🛑 🛑 Conflicts with the built-in DOS command
find ✅ ✅ Integrated port of the original DOS command
hostname ✅ ✅ Superset of the Windows built-in
kill 🛑 🛑 Unavailable due to lack of signals on Windows; Implementing a form of SIGTERM/SIGKILL may be possible in the future however
ls ✅ ⚠️
mkdir ⚠️ ⚠️
more 🛑 🛑 Conflicts with the built-in DOS command (consider edit as an alternative)
mv ✅ ⚠️
pwd ✅ ⚠️
rm ✅ ⚠️
rmdir ⚠️ ⚠️
sleep ✅ ⚠️
sort ✅ ⚠️ Integrated port of the original DOS command
tee ✅ ⚠️
timeout 🛑 🛑 Relies on kill's functionality
uptime ✅ ⚠️
whoami 🛑 🛑 Conflicts with the built-in Windows command

Windows caveats

Difference Detail
CRLF line endings Windows text files often use CRLF (\r\n). Most utilities handle this transparently, but byte-oriented behavior can still observe the \r; for example, uniq may treat the final line as different from a preceding duplicate if the input uses CRLF and the final line has no trailing newline.
No /dev/null Use NUL instead, for example find . -name "*.log" > NUL
No POSIX signals Signals such as SIGHUP, SIGPIPE, and SIGUSR aren't available. Ctrl+C (SIGINT) works as expected.
Path separators Both / and \ are accepted. Some utilities produce \-separated output, which can affect downstream piping.
File permissions Windows uses ACLs, not POSIX permission bits. Permission-based predicates (for example find -perm) may behave differently or be unavailable.
Symbolic links Reading existing symbolic links works without elevation. Creating new symbolic links requires Developer Mode (Settings > System > Advanced) or an elevated terminal.

PowerShell Command Parsing

The installer integrates itself with interactive PowerShell sessions via PSReadLine. It ensures that quoted expressions behave somewhat like they do under UNIX shells or CMD: echo *.txt will then print a number of file names, while echo '*.txt' will print "*.txt" literally.

There are two shortcomings, however:

Intentionally dropped

Commands that exist upstream but aren't shipped here because they rely on POSIX-only concepts, would break existing Windows scripts, or simply aren't useful on Windows.


Contributing

Bug reports and pull requests are welcome. See CONTRIBUTING.md for details on the repo layout and how changes flow between this repo and the upstream uutils projects.

coreutils (microsoft/coreutils)

Searching Database…

What is this?A Microsoft-maintained build of uutils/coreutils, findutils, and grep - the familiar Unix commands (ls, cp, cat, grep, find) packaged as a single native multi-call binary for Windows.
Does this run inside WSL, or is it native Windows?Fully native Windows tools - no WSL, VM, or Linux layer needed. The goal is that the same commands, flags, and pipelines work identically on Linux, macOS, WSL, containers, and Windows.
Do I need a specific PowerShell version for everything to work?PowerShell 7.4 or later is required, and 7.6+ is recommended for ~ (tilde) support. The suite itself is one self-contained Rust binary, so nothing else needs to be installed.
Do all the Unix commands I know actually ship here?Most do, but some are missing on purpose: kill and timeout are unavailable because Windows has no POSIX signals, and POSIX-only tools like chmod, chown, chroot, dd and uname were dropped as useless or script-breaking on Windows.
Do command names clash with built-in CMD or PowerShell commands?Yes. Several share names with built-ins (echo, mkdir, sort, ls...), and which version wins depends on the shell, the PATH order, and PowerShell's alias table. Hard conflicts like dir, more and whoami are not shipped at all.
What Windows quirks should I watch out for?Text files use CRLF, which byte-oriented tools like uniq can trip over; there is no /dev/null (use NUL instead), no POSIX signals although Ctrl+C works, and creating new symlinks requires Developer Mode or an elevated terminal.
Can I set up an ll alias for ls -la?Yes: in PowerShell use Set-Alias ll 'ls', or a function in your $PROFILE when it needs arguments; in CMD use doskey. Note that PowerShell aliases break binary streams, so piped utilities like xargs and find may not work.
Is it ready for daily use, or still experimental?The project is explicitly in preview, so expect rough edges - but it is Microsoft-maintained on top of the upstream uutils projects, and every command supports the standard --help flag.
Creator
microsoft
Size
0.1 MB
Stars
5.3K
Age
5mo
Commits · 90 Days