Extensions over GNU

Though the main goal of the project is compatibility, uutils supports a few features that are not supported by GNU coreutils. We take care not to introduce features that are incompatible with the GNU coreutils. Below is a list of uutils extensions.

General

GNU coreutils provides two ways to define short options taking an argument:

$ ls -w 80
$ ls -w80

We support a third way:

$ ls -w=80

env

env has an additional -f/--file flag that can parse .env files and set variables accordingly. This feature is adopted from dotenv style packages.

cp

cp can display a progress bar when the -g/--progress flag is set.

mv

mv can display a progress bar when the -g/--progress flag is set.

hashsum

This utility does not exist in GNU coreutils. hashsum is a utility that supports computing the checksums with several algorithms. The flags and options are identical to the *sum family of utils (sha1sum, sha256sum, b2sum, etc.).

b3sum

This utility does not exist in GNU coreutils. The behavior is modeled after both the b2sum utility of GNU and the b3sum utility by the BLAKE3 team and supports the --no-names option that does not appear in the GNU util.

more

We provide a simple implementation of more, which is not part of GNU coreutils. We do not aim for full compatibility with the more utility from util-linux. Features from more modern pagers (like less and bat) are therefore welcomed.

cut

cut can separate fields by whitespace (Space and Tab) with -w flag. This feature is adopted from FreeBSD.

fmt

fmt has additional flags for prefixes: -P/--skip-prefix, -x/--exact-prefix, and -X/--exact-skip-prefix. With -m/--preserve-headers, an attempt is made to detect and preserve mail headers in the input. -q/--quick breaks lines more quickly. And -T/--tab-width defines the number of spaces representing a tab when determining the line length.

seq

seq provides -t/--terminator to set the terminator character.

ls

GNU ls provides two ways to use a long listing format: -l and --format=long. We support a third way: --long.

GNU ls --sort=VALUE only supports special non-default sort orders. We support --sort=name, which makes it possible to override an earlier value.

du

du allows birth and creation as values for the --time argument to show the creation time. It also provides a -v/--verbose flag.

id

id has three additional flags:

  • -P displays the id as a password file entry
  • -p makes the output human-readable
  • -A displays the process audit user ID

uptime

Similar to the proc-ps implementation and unlike GNU/Coreutils, uptime provides -s/--since to show since when the system is up.