coreutils Production ready
uutils coreutils is a cross-platform reimplementation of the GNU coreutils in Rust. While all programs have been implemented, some options might be missing or different behavior might be experienced.
Goals
This project aims to be a drop-in replacement for the GNU utils. Differences with GNU are treated as bugs.
uutils aims to work on as many platforms as possible, to be able to use the same utils on Linux, Mac, Windows and other platforms. This ensures, for example, that scripts can be easily transferred between platforms.
Beyond GNU
Being a drop-in replacement still leaves room to do better where nothing depends on the exact behavior. GNU reports every error as a single line on stderr, which says what went wrong but not where. When a parse error happens at a terminal - a bad sort key, a chmod mode, a tr set - uutils echoes the command line back and points a caret at the part that is at fault, the way a compiler does:
tr: range-endpoints of 'y-b' are in reverse collating sequence order ╭─[ tr:1:7 ] │ 1 │ tr qw[y-b] x │ ─┬─ │ ╰─── did you mean 'b-y'? │ │ Help: a range goes from the lower character to the higher one, as in a-z ───╯
Scripts, pipes and test harnesses still get the plain GNU one-line message, so nothing that reads stderr can tell the difference. See Pointing at the error for the utilities this covers and how to turn it on and off.
Contributing
To contribute to uutils coreutils, please see CONTRIBUTING.
License
uutils coreutils is licensed under the MIT License - see the LICENSE file for details.
GNU Coreutils is licensed under the GPL 3.0 or later.