# GNU Coreutils Parity Audit This page tracks the WinuxCmd compatibility ledger for GNU options. It is a living summary, not a verbatim copy of the GNU manual; each row keeps only the compatibility-relevant options and links back to the official page. ## Dependency stance Do not add a third-party dependency for this batch. Prefer small internal helpers built from the C++ standard library and Win32 APIs. Revisit dependencies only when a tiny, well-maintained library clearly reduces parser/date/path complexity without increasing release size materially. ## Documentation rules - Every GNU reference points to the official manual page. - Inline options keep only compatibility-relevant short and long forms. - Shared `--help` / `--version` options are omitted from the rows. - `commands_implementation` carries implementation-side status; this page is the GNU-facing compatibility overview. - High-frequency commands are written more densely so the page doubles as an AI-facing option ledger. ## Wildcard expansion policy - Only commands wired to `contains_wildcard` / `glob_expand` expand wildcards. - WinuxCmd receives arguments after shell parsing; wildcard-aware commands expand file-like operands according to their own command policy. - Expansion still prefers the literal path first for ordinary `*` / `?` patterns, but `[]` character-class patterns now try glob expansion first even when a same-spelling literal path exists; if no `[]` matches are found, the original literal path is kept. - Character-class matching supports literal sets, ranges, GNU-style negation with both `[!...]` and `[^...]`, and a leading literal `]` inside bracket expressions such as `[]]` and `[!]]`. - Wildcard matching in parent directory segments now also works for `*`, `?`, and `[]`, not just the final basename, so patterns like `dir*\*.txt`, `dir?\*.txt`, and `dir[12]\*.txt` expand across matching subdirectories too. - This applies only to file-like positional arguments such as `ls *.txt`, `cat *.log`, and `wc *.txt`; it does not apply to expressions, scripts, or regex parameters such as `grep` patterns, `find -name`, `sed` scripts, or `sort` keys. - If a parameter treats wildcard characters as data rather than a path pattern, it must stay literal. - Output destinations and syntax-sensitive operands stay literal. - Multi-operand commands may expand each file-like input independently, but they must not silently reassign operand roles after expansion. - Fixed-arity commands such as `diff`, `diff3`, `split`, and `csplit` must reject ambiguous wildcard expansion and require the final operand count to match the command contract exactly. | Command | GNU reference | Current state | Next gap | |---|---|---|---| | `cat` | [cat invocation](https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html) | `-A`, `-b`, `-E`, `-n`, `-s`, `-T`, and `-v` are implemented; file operands use the shared wildcard policy, including GNU-style `[]` character classes in parent directory segments and preferring `[]` glob expansion over a same-spelling literal path when the class matches, `-u` is only a compatibility placeholder, and missing-file plus directory diagnostics now use the closer unquoted GNU shape such as `cat: FILE: No such file or directory` and `cat: DIR: Is a directory` instead of collapsing directory failures into missing-file errors | GNU edge cases for `-A` / `-v`, plus binary and legacy buffering behavior | | `grep` | [grep invocation](https://www.gnu.org/software/grep/manual/html_node/grep.html) | common flags such as `-E`, `-F`, `-G`, repeatable `-e/--regexp`, repeatable `-f/--file`, `-i`, `-w`, `-x`, `-v`, `-m`, `-b`, `-n`, `-c`, `-l`, `-L`, `-r`, `-R`, `-A`, `-B`, `-C`, `-o`, `-q`, `-z`, `-H/-h`, `--label`, `--line-buffered`, repeatable `--include`, repeatable `--exclude`, repeatable `--exclude-from`, repeatable `--exclude-dir`, `--binary-files`, `-a/--text`, `-I`, `-D/--devices`, `--group-separator`, and `--color[=WHEN]` / `--colour[=WHEN]` are already in the implementation; bare `--color` defaults to `auto`, `always|auto|never` are accepted, and invalid color modes fail; zero-byte `-f/--file` pattern files provide zero patterns and match nothing, while pattern files containing an empty line still match every line; default `--binary-files=binary` detects NUL data when `-z` is not active, suppresses detailed binary match output, emits the GNU-shaped binary-match diagnostic unless `-q` is active, and leaves `-s` from suppressing that diagnostic; newline-delimited text matching now trims a trailing `\r` from each CRLF record before applying anchors, whole-line matching, and normal line output, while `-z` remains byte-oriented; include/exclude file rules preserve command-line order and the last matching rule wins, with command-line file operands matched by name suffix; `--exclude-dir` also skips matching command-line directories and ignores trailing slashes in directory globs; file operands now also consume the shared `[]` wildcard policy in deeper path segments and prefer `[]` glob expansion over a same-spelling literal path when the class matches; conflicting mode/case/prefix/context options follow last-occurrence precedence; `--label` supplies the stdin filename when a filename prefix is shown; context ranges merge without duplicate lines, match prefixes use `:`, context prefixes use `-`, separated groups use the GNU-style group separator, and `-o` warns while ignoring context options; patterns stay literal while file operands expand | locale/word-boundary edge cases, Windows special-file edge cases, GREP_COLORS details, and Perl-compatible regex | | `sed` | [sed invocation](https://www.gnu.org/software/sed/manual/html_node/sed-invocation.html) | repeatable `-e/--expression` and `-f/--file` are applied in command-line order; when neither is present, only the first non-option operand is the script; `-n/--quiet/--silent`, `-E/-r`, `-s`, `-z/--null-data/--zero-terminated`, `-u/--unbuffered`, `-b/--binary`, `-l/--line-length`, and `-i[SUFFIX]` / `--in-place[=SUFFIX]` are wired in; in-place editing creates no backup when suffix is omitted, appends suffix when it has no `*`, and replaces each `*` with the current filename otherwise; `s///` replacements handle `&`, `\1`-`\9`, numeric occurrence flags, `g`, `p`, and `I/i`; address negation with `!`, `first~step`, `0~step`, and `/regex/I` are supported; `=` prints input line numbers and `l` lists pattern space with visible escapes and line-length wrapping; scripts stay literal while file operands expand | deeper address ranges, NUL-data edge cases, true unbuffered streaming, and script corner cases | | `echo` | [echo invocation](https://www.gnu.org/software/coreutils/manual/html_node/echo-invocation.html) | `-n`, `-e`, and `-E` are implemented alongside local `-u/--upper` and `-r/--repeat`; bare `echo` now succeeds with the GNU/uutils single trailing newline instead of failing on an empty argument list, common backslash escapes such as `\n`, `\t`, `\c`, `\xHH`, `\uHHHH`, and `\UHHHHHHHH` are already handled, GNU old-style octal escapes such as `\43`, `\101`, and `\777` now work, `\c` now also suppresses the trailing newline in the GNU/Coreutils shape, `-e` / `-E` now use GNU/uutils last-occurrence precedence, unknown/incomplete escapes such as `\ `, `\x` without hex digits, and bare `\u` / `\U` now preserve their leading backslash, `\xFF` non-UTF-8 output bytes plus multibyte UTF-8 byte sequences are now covered by tests, and `POSIXLY_CORRECT` now enables escape processing by default while keeping `-n` active, ignoring `-E`, and treating non-leading-`-n` option-like arguments as literal text | fuller escape coverage and remaining GNU-versus-shell portability edge cases | | `cp` | [cp invocation](https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html) | `-a/--archive` now implies recursive copy and preserves Windows timestamps/attributes; `-p`, `-i`, `-r/-R`, `-t`, `-v`, `-f`, `-n`, `-u`, `-T`, `-b/--backup`, `-S/--suffix`, and `--strip-trailing-slashes` are aligned for common cases; `--strip-trailing-slashes` now strips trailing `/` or `\` from each source operand before lookup, so file operands like `src.txt/` work in the GNU/Microsoft style while destination operands remain unchanged; `-t` requires an existing directory, `-t` and `-T` conflict, self-copy is refused except the `--force --backup` self-backup case, and plain file copies no longer create missing destination parents; GNU also commonly uses `-d`, `-l`, `-x`, `-Z`, `-H/-L/-P` | Unix owner/mode preservation beyond Windows attributes, `--attributes-only`, `--reflink`, `--sparse`, `--remove-destination`, `--parents`, `--preserve` submodes, and full `--update=WHICH` semantics | | `mv` | [mv invocation](https://www.gnu.org/software/coreutils/manual/html_node/mv-invocation.html) | `-t`, `-T`, `-f`, `-i`, `-I`, `--interactive[=never|once|always]`, `-n`, `-u`, `-b`, `-S`, and `--strip-trailing-slashes` are aligned for the first batch; `-t` and ordinary multi-source moves require an existing target directory, including after wildcard expansion, and `-t` conflicts with `-T`; the overwrite-mode family uses GNU-style last-occurrence precedence, and bare `--interactive` behaves like `--interactive=always`; GNU also commonly uses `-Z` | `--exchange`, `--no-copy`, and `--context` | | `rm` | [rm invocation](https://www.gnu.org/software/coreutils/manual/html_node/rm-invocation.html) | `-f` ignores missing operands including no-operand invocation, ordinary no-operand invocation now emits the GNU-style `missing file operand` help hint, `-d/--dir` removes empty directories, `-I`, `-i`, `--interactive[=never|once|always]`, recursive removal, root preservation, and Windows volume-based `--one-file-system` are tracked; `-f`, `-i`, `-I`, and `--interactive=WHEN` use GNU-style last-option precedence for prompting/force behavior | `--preserve-root=all` and remaining POSIX/GNU diagnostic wording | | `install` | [install invocation](https://www.gnu.org/software/coreutils/manual/html_node/install-invocation.html) | `-d`, `-b`, `-C/--compare`, `-g`, `-m`, `-o`, `-p`, `-s`, `-t`, `-T`, `-D`, `--debug`, `--strip-program`, `--preserve-context`, `-Z` are parsed; source operands expand, but destination and directory operands stay literal; `-t` conflicts with `-T`, multi-source installs require an existing directory after wildcard expansion, `-D -t` creates the target directory, and `-d` creates parent directories | real ownership/mode/strip/SELinux effects on Windows | | `chmod` | [chmod invocation](https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html) | `-c`, `-f`, `-v`, `-R`, `--reference`, `--preserve-root`, and `--no-preserve-root` exist; `chmod -R --preserve-root /` now stops before traversal with the GNU/uutils-style two-line failsafe; `chmod --reference=RFILE FILE...` now validates the reference file first, emits GNU-shaped `failed to get attributes of 'RFILE': No such file or directory` diagnostics for missing references, and copies the reference file's Windows read-only approximation to each target; malformed modes such as `u+gr` now fail before file access with the GNU/uutils-style `invalid mode` help hint; GNU-style negative symbolic modes such as `-w`, `file -w`, `-w -- file`, and repeated `-w -w` are now accepted; GNU also commonly uses `-H`, `-L`, `-P`, `--dereference` | recursive symlink policy and deeper Unix mode semantics on Windows | | `mkdir` | [mkdir invocation](https://www.gnu.org/software/coreutils/manual/html_node/mkdir-invocation.html) | `-p/--parents`, `-v/--verbose`, `-m/--mode`, and `-Z/--context` exist; missing operands now emit the GNU-style help hint; on Windows, `-m` maps the command-line directory's write bits to the read-only attribute and `-p -m` applies only to the final named directory, not auto-created parents; `-Z/--context` is accepted as a no-op compatibility placeholder | fuller chmod-style symbolic mode coverage and true Unix mode bits | | `mktemp` | [mktemp invocation](https://www.gnu.org/software/coreutils/manual/html_node/mktemp-invocation.html) | common temporary-name generation is present via `-d`, `-u`, `-q`, `-p/--tmpdir`, and `-t`; explicit `--suffix=SUFFIX` now appends the suffix after template substitution, so calls such as `mktemp --suffix=.txt file-XXXX` produce names like `file-abcd.txt`, suffixes containing `/` or `\` are rejected with the closer GNU/Microsoft-shaped `invalid suffix 'SUFFIX', contains directory separator` diagnostic, and generated names now print their created path instead of collapsing to a basename when `-p/--tmpdir` is used or the template itself names a directory component | remaining GNU `mktemp` details around full default tempdir behavior and template grammar edge cases | | `rmdir` | [rmdir invocation](https://www.gnu.org/software/coreutils/manual/html_node/rmdir-invocation.html) | `--ignore-fail-on-non-empty`, `-p/--parents`, and `-v/--verbose` exist; missing operands now emit the GNU-style help hint, file operands now report `Not a directory` instead of a bare removal failure, verbose mode now prints the GNU/uutils-shaped `removing directory, 'DIR'` line before every attempted removal including failed parent-cleanup attempts, and `-p` now exits non-zero when ancestor cleanup stops on a non-empty parent | exact GNU diagnostic wording and remaining parent-removal edge cases | | `touch` | [touch invocation](https://www.gnu.org/software/coreutils/manual/html_node/touch-invocation.html) | `-a`, `-c`, `-d`, `-h`, `-m`, `-r`, `-t`, and `--time` are aligned for common GNU usage; `-t [[CC]YY]MMDDhhmm[.ss]`, ISO-like `-d`, compact pure-number `-d` timestamps like `YYYYMMDDhhmm` and `YYYYMMDDhhmmss`, UTC/GMT/Z/offset suffixes, `@epoch`, common relative forms, and `-r` as the base for relative `-d` are covered; invalid `--time` values fail | BSD compatibility `-f` placeholder and deeper GNU date grammar edge cases | | `ln` | [ln invocation](https://www.gnu.org/software/coreutils/manual/html_node/ln-invocation.html) | `-s`, `-f`, `-i`, `-v`, `-n`, `-T`, `-t`, `-b`, `-S`, `-r`, `-L`, `-P`, `--dereference`, and `-d/-F` are available; bare `ln TARGET` now creates the link in the current directory using the target basename, two-operand `ln SOURCE DIR` now treats an existing second-operand directory as the target directory unless `-T` is active, and missing-source, existing-target, plus forced-remove failures now report GNU-shaped text instead of raw Win32/local wording; `-t` requires an existing directory, `-t` and `-T` conflict, and ordinary multi-source invocations now follow GNU `TARGET... DIRECTORY` semantics by requiring the final operand to be an existing directory | exact backup naming details, symbolic-link privilege handling, and remaining GNU directory/symlink edge cases | | `ls` | [ls invocation](https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html), [listed information](https://www.gnu.org/software/coreutils/manual/html_node/What-information-is-listed.html), [formatting file names](https://www.gnu.org/software/coreutils/manual/html_node/Formatting-the-file-names.html) | common display/sorting flags are much closer now; `-i`, `-s`, `-S`, `-u`, `-h/--human-readable`, `--si`, `--block-size=SIZE`, `--sort=WORD`, `--format`, `--time`, GNU `--full-time`, GNU `--long`, GNU `--author`, `--time-style=locale|full-iso|long-iso|iso|+FORMAT`, `--indicator-style=WORD`, `--file-type`, `-Q/--quote-name`, `-b/--escape`, `-q/--hide-control-chars`, `-N/--literal`, `--show-control-chars`, `--hide=PATTERN`, common `--quoting-style=WORD` values, and `--zero` are wired in; GNU `--format` aliases such as `vertical|columns`, `across|horizontal`, `commas`, `single-column|single|one`, and `long|verbose` are accepted, dot-prefixed names are now hidden by default again, while `-A` still shows dotfiles but suppresses `.` and `..`; directory listings now print GNU-style `total` not only in long mode but also for `-s/--size` layouts, and that `total` line also follows `--zero`; `-m` now follows GNU/coreutils line-breaking more closely by ending a full line with `,` before wrapping the next entry instead of greedily keeping one more entry on the previous line; `-h` humanizes long sizes plus `-s`/`total`, `--si` now uses decimal powers of 1000 for those humanized sizes, and on Windows `--block-size=SIZE` / `-k` now rescale only the long-format size column while `-s` and directory `total` keep the Microsoft/Coreutils allocated-byte convention unless a human-readable mode is selected; invalid `--sort` / `--time` / `--format` / `--quoting-style` words fail, sort/time/format/quoting-affecting options use last-occurrence precedence, GNU `--full-time` now behaves as `-l --time-style=full-iso`, GNU `--long` now behaves as a direct `-l` alias, GNU `--author` is accepted and now inserts an author column in long format using the same Windows owner-name approximation that Microsoft/Coreutils exposes on this platform, the Windows permission column now matches Microsoft Coreutils' `rwxrwxrwx` versus `r-xr-xr-x` read-only approximation instead of guessing Unix execute bits from extensions, GNU `-g` / `-o` / `--no-group` now also suppress the corresponding owner/group columns instead of only entering long mode, `--hide=PATTERN` now hides matching names only in default mode while `-a` / `-A` override it and `--ignore=PATTERN` still filters even in all-mode listings, quoting modes in long format now also apply to the displayed symlink target instead of leaving `-> target` raw, and long-format-only symlink display/follow decisions now also honor that final winning format instead of an earlier overridden `-l`; default output now also follows GNU's TTY split by falling back from implicit column mode to single-column records when stdout is not a terminal, while explicit format requests such as `-C` still win and no longer leave trailing padding spaces at end of line, boundary-width `-x` / column layouts now pack the same extra column that GNU/Microsoft-style output does when it still fits, and wider `-C/-x` layouts now honor tab stops for inter-column padding closer to GNU/Microsoft output, including non-default `-T/--tabsize` values and last-occurrence precedence across those two aliases; the symlink dereference family now also follows last-occurrence precedence across `-H`, `-L`, `--dereference-command-line-symlink-to-dir`, and `--dereference-command-line-symlinks-to-dir`, so metadata lookup, long-format display, and recursive traversal stay aligned; `--group-directories-first` now groups directories ahead of files except when `--sort=none` / `-U` is active, `--zero` emits NUL-terminated records and falls back to single-column output outside long mode, `--time-style` now formats recent/old timestamps in the common GNU/Coreutils `locale`, `full-iso`, `long-iso`, and `iso` shapes and accepts `+FORMAT` custom patterns including `%s` plus the GNU split `+OLD\nRECENT` form, indicators are appended outside C-quoted names, long-format symbolic links now show `name -> target`, true non-dereferenced symbolic links still report the displayed target text length in the long-format size column, and Windows directory junctions now keep a zero size there to match Microsoft/Coreutils-style Windows behavior instead of leaking the displayed target-path length; long-format `-a` entries for `.` and `..` now also re-probe the real directory metadata instead of reusing synthetic zero-sized enumeration records, so parent-directory size and `total` output line up more closely with Microsoft/Coreutils on Windows, and dereferenced `-L` directory-symlink or junction content listings now also keep the synthetic `.` entry on the target-directory view instead of slipping back to a link; dangling command-line symlink operands now stay listable in long format instead of being misreported as missing, missing-path `cannot access` diagnostics now go to stderr and return GNU/Microsoft-style exit status `2`, Windows directory junctions now keep their stored absolute reparse target in that `name -> target` display instead of being collapsed to a same-directory relative name while trimming raw namespace prefixes such as `\??\` and `\\?\`, command-line directory and junction operands now also accept trailing separators such as `dir/` and `junc/` while preserving the original operand spelling in output, long-format colored `name -> target` output now also splits the link-name color from the target color instead of painting the entire span as one link-colored block, and recursive directory headers generated by `ls -R` now normalize Win32 `\` joins back to GNU-style `/` separators such as `./subdir:`; in long format `-F` / `--classify` / `--file-type` now decorate the symlink or junction name itself and leave the displayed target undecorated, matching GNU/Microsoft behavior such as `link@ -> target`; command-line directory symlink operands under `-d -H` and `-d -L` now also suppress `name -> target` and show dereferenced directory metadata closer to GNU; command-line file and `-d` directory operands now preserve the operand spelling instead of collapsing to a basename, so `ls -dR .` prints `.` like GNU/Microsoft; directory symlinks are displayed as links instead of plain directories, command-line directory symlinks now follow GNU's common split by defaulting to directory contents in ordinary mode while staying links in long mode unless `--dereference-command-line-symlinks-to-dir` is used, command-line symlink operands now also let `-H` / `-L` switch long-format metadata to the referenced target while keeping the operand name, plain directory entries now keep `-H` limited to command-line symlink operands while `-L` also dereferences the displayed metadata for symlinks encountered during directory listing, and recursive `-L` traversal now descends into directory symlinks encountered during recursion; `[]` wildcard operands now also prefer character-class glob expansion over a same-spelling literal path, so `ls [ab].txt` behaves closer to GNU shell-expanded calls on Windows while still falling back to the literal operand when the class matches nothing; hard-link counts use Windows file metadata; default `-s` output plus directory `total` lines now also follow the closer Microsoft/Coreutils Windows convention by reporting allocated-byte counts instead of pre-dividing by 1K blocks, while `-h` / `--si` still humanize that byte-based view; multi-file operands no longer get per-file headers, but directory/junction operands still keep their GNU-style `dir:` headers when some sibling operands fail; wildcard matches that are directories list directory contents unless `-d` is active | exact GNU terminal-default quoting, context columns, remaining `-H`/`-L` symlink-details parity, and broader `date`-format token parity edge cases | | `tee` | [tee invocation](https://www.gnu.org/software/coreutils/manual/html_node/tee-invocation.html) | `-a`, `-i`, and `-p` exist; `-a` now appends instead of truncating, `-i` now ignores `SIGINT` for the current process, `-p/--diagnose` now selects the GNU-style `warn-nopipe` write-error mode, invalid `--output-error=MODE` values now fail instead of being treated as `warn`, output file operands stay literal because they are destinations, not inputs, a `-` file operand now mirrors GNU by writing an extra copy to standard output instead of naming a file, open failures on one output now still let standard output and other successfully opened outputs continue before returning nonzero, and the main copy path now preserves raw byte streams so CRLF input and unterminated final lines are forwarded unchanged | remaining pipe-specific `--output-error` behavior and stdout/stderr edge cases | | `head` | [head invocation](https://www.gnu.org/software/coreutils/manual/html_node/head-invocation.html) | `-c`, `-n`, `-q`, `-v`, `-z` exist; count suffixes include GNU decimal `KB`/`MB`/`GB`/`TB`/`PB`/`EB`/`ZB`/`YB`/`RB`/`QB`, binary `K`/`M`/`G`/`T`/`P`/`E`/`Z`/`Y`/`R`/`Q`, and IEC `KiB` through `QiB`, with overflow rejected; legacy `-NUM` shorthand and the first-argument obsolete form `-[num][bkm][cqv]` are also supported, misplaced obsolete `-NUM` counts after later options now fail with a closer GNU-style `option used in invalid context` diagnostic, missing-file opens now report GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostics, multi-file output now skips headers for operands that fail to open and only prints headers for successfully opened files, and directory operands now report GNU-shaped `error reading 'DIR': Is a directory` errors | remaining GNU mixed-option diagnostics, non-directory open-failure wording edge cases, and rare size-suffix edge cases | | `tail` | [tail invocation](https://www.gnu.org/software/coreutils/manual/html_node/tail-invocation.html) | `-c`, `-n`, `-q`, `-v`, `-z`, `-f`, `-F`, `--follow=name`, `--sleep-interval`, `--max-unchanged-stats`, repeatable `--pid`, `--debug`, `--retry`, and GNU `--use-polling` exist; follow mode polls all followed files in each iteration and exits after all supplied PIDs are gone, the `-F` / `--follow=descriptor|name` family now follows last-occurrence precedence, `--use-polling` is accepted explicitly and maps to the current polling-based follow implementation, `--pid` without follow now emits the GNU-shaped ignored-warning, explicit `--retry` now matches GNU warning behavior by warning when used without follow or with descriptor-follow, misplaced obsolete `-NUM` tail counts after later options now fail with a closer GNU-style `option used in invalid context` diagnostic instead of a generic unrecognized-option error, and bare `tail +NUM FILE` now stays on the modern GNU path by treating `+NUM` as a file operand rather than an old count shorthand; count suffixes include GNU decimal `KB`/`MB`/`GB`/`TB`/`PB`/`EB`/`ZB`/`YB`/`RB`/`QB`, binary `K`/`M`/`G`/`T`/`P`/`E`/`Z`/`Y`/`R`/`Q`, and IEC `KiB` through `QiB`, with overflow rejected; legacy `-NUM` shorthand plus obsolete compact `-[num][bcl][f]` and `+[num][bcl]` forms are also supported across ordinary multi-file operands when they do not conflict with normal parsing, missing-file opens now report GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostics, multi-file output now skips headers for operands that fail to open and only prints headers for successfully opened files, and directory operands now report GNU-shaped `error reading 'DIR': Is a directory` errors | exact GNU follow edge cases, remaining `+NUM` traditional ambiguity modes, POSIX-version-sensitive diagnostics, and non-directory open-failure wording edge cases | | `sort` | [sort invocation](https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html) | `-b`, `-d`, `-f`, `-g`, `-h`, `-i`, repeatable `-k/--key` with `F[.C][OPTS][,F[.C][OPTS]]`, `-M`, `-n`, `-o`, `-R`, `--random-source`, `-S/--buffer-size`, `--parallel=N`, `--batch-size=N`, `--compress-program=PROG`, `-T/--temporary-directory=DIR`, `--sort=WORD`, `-s`, `-t`, `-u`, `-V`, `-z`, and GNU `--check-silent` are aligned for common AI workloads; newline-delimited input now trims the trailing `\r` from CRLF records before sorting/output so Windows-authored text files no longer produce blank spacer lines, while `-z` still keeps byte-exact NUL records; `--parallel` is now accepted as a validated concurrency hint while the current Windows implementation still executes the actual sort in a single thread, `--batch-size` is likewise accepted as a validated merge hint without yet changing the current merge strategy, `--compress-program` is now accepted as a validated non-empty compression hint without yet changing the current temporary-file pipeline, `-T/--temporary-directory` is accepted as a validated existing-directory hint without yet changing the current temporary-file strategy, `-t \0` / `--field-separator=\0` selects NUL as the field separator, global ordering modes follow last-occurrence precedence, `-n` uses GNU-style numeric prefixes without accepting leading `+` or exponent notation, `-h` compares sign then SI suffix then value, `-u` uses sort-key equality and disables last-resort whole-line ordering, `-c/-C/--check-silent -u` rejects adjacent equal keys, `-b` affects `-k F.C` character counts, end position `.0` means the field end, missing input files now report the GNU-shaped `cannot read: FILE: No such file or directory` diagnostic, and non-check errors return status 2 | stronger `-m` merge semantics, exact per-key inheritance rules, `--debug`, actual compressed temporary-file plumbing, and locale-sensitive collation edge cases | | `uniq` | [uniq invocation](https://www.gnu.org/software/coreutils/manual/html_node/uniq-invocation.html) | `-c`, `-d`, `-D`, `-f`, `-i`, `-s`, `-u`, `-w`, `-z`, and the `--group` / `--all-repeated` family are aligned for the common cases; newline-delimited input now trims trailing `\r` from CRLF records before adjacent-line comparison/output so Windows text files no longer emit blank spacer lines, while `-z` still keeps byte-exact NUL records; missing input files now report the closer GNU-shaped `missing.txt: No such file or directory` diagnostic, and directory operands now report `Is a directory` instead of pretending the path is missing | exact GNU grouping separators, separator placement edge cases, and locale-sensitive comparison details | | `wc` | [wc invocation](https://www.gnu.org/software/coreutils/manual/html_node/wc-invocation.html) | `-c`, `-m`, `-l`, `-L`, `-w`, `--debug`, `--files0-from`, and `--total` are already implemented; `--debug` reports the active portable counting path on stderr without changing stdout, `-m` counts UTF-8 code points separately from bytes, `-L` expands tabs to 8-column stops and applies simple wide-character widths, file operands use the shared wildcard policy, and both ordinary input files plus `--files0-from` list files now report closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostics while directory operands report `Is a directory`; `--files0-from` no longer drops empty NUL-delimited names, now fails on zero-length file names, rejects `-` as a listed file name when the list itself is being read from stdin, and now also treats an empty `--files0-from` list as an error instead of a silent success; GNU-style `total` output now also stays tied to the requested input count, so mixed success/failure multi-file batches still print `total` while returning nonzero | exact locale-dependent word and display-width semantics, plus GNU spacing edge cases | | `find` | [find invocation](https://www.gnu.org/software/findutils/manual/html_node/find_html/Invoking-find.html), [operators](https://www.gnu.org/software/findutils/manual/html_node/find_html/Combining-Primaries-With-Operators.html), [`-exec ... ;`](https://www.gnu.org/software/findutils/manual/html_node/find_html/Single-File.html), [`-exec ... {} +`](https://www.gnu.org/software/findutils/manual/html_node/find_html/Multiple-Files.html) | common path predicates and actions such as `-L`, `-H`, `-name`, `-iname`, `-path`, `-ipath`, `-regex`, `-iregex`, `-type`, `-size`, `-empty`, `-mtime`, `-mmin`, `-newer`, `-mindepth`, `-maxdepth`, `-depth`, `-print`, `-print0`, `-printf` (`%p`, `%f`, `%h`, `%H`, `%P`, `%d`, `%D`, `%F`, `%g`, `%G`, `%l`, `%o`, `%u`, `%U`, `%S`, `%y`, `%Y`, `%s`, `%b`, `%k`, `%m`, `%M`, `%n`, `%i`, `%A@`, `%B@`, `%C@`, `%T@`, plus the zero-padded local component subset `%A{Y,m,d,H,M,S,j}`, `%B{Y,m,d,H,M,S,j}`, `%C{Y,m,d,H,M,S,j}`, `%T{Y,m,d,H,M,S,j}`, `%%`, GNU-style `\c`, octal `\NNN`, and warnings for unrecognized escapes / format directives), `-prune`, `-quit`, `-delete`, `-exec COMMAND {} ;`, `-exec COMMAND {} +`, `-ok COMMAND {} ;`, and `-ok COMMAND {} +` are in place; predicate expressions now support `-true`, `-false`, `!`, `-not`, implicit AND, `-a/-and`, `-o/-or`, comma expressions, and parentheses with GNU precedence; the `-L/-H/-P` symlink-mode family now follows GNU-style last-occurrence precedence, so `-H` follows only command-line symlink roots while traversal-time symlinks stay at `-P` semantics unless a later `-L` wins; printed paths already use GNU-style `/`, and missing-root diagnostics now normalize command-line root operands through that same display path instead of leaking raw Windows `\`; current-directory-rooted default `-print` / `-print0` output now uses a Microsoft-style `.\` prefix while keeping the remaining relative path rendering stable; `-print`, `-print0`, `-printf`, `-exec`, `-ok`, `-delete`, `-prune`, and `-quit` are evaluated in expression scope with short-circuit behavior; `-type l` now also treats junction-style directory reparse points as link-like entries instead of plain directories, so those entries no longer satisfy `-type d`; `-printf %l` now also reports the stored target text for symlink-like entries such as Windows directory junctions, `-printf %y` now reports junction-style directory reparse points as link type `l`, `-printf %Y` now reports the referent type for symlink-like entries while still collapsing back to the current entry type for ordinary non-links, `-printf %s` now uses the displayed link-target text length for symlink-like entries instead of collapsing them to zero, `-printf %b` and `%k` now use Win32 allocation size as the closest Windows analogue and keep GNU-style minimum non-empty file floors of 512-byte-blocks=`2` and 1K-blocks=`1`, `-printf %D` now reports the Win32 volume serial number as the closest device-number analogue, `-printf %F` now reports the Windows volume filesystem name as the closest filesystem-type analogue, `-printf %o` now reports the Windows volume cluster/block size as the closest optimal-I/O-block-size analogue, `-printf %u/%g` now report owner/group names derived from file security SIDs, `-printf %U/%G` now report the final owner/group SID RID components as the closest numeric-id analogue, `-printf %S` now reports the Win32 allocated-size to logical-size ratio as the closest local sparseness analogue for regular files, `-printf %A@` now uses Windows last-access time as the closest local analogue to GNU access time, `-printf %B@` now uses Windows creation time as the closest local analogue to GNU birth time, `-printf %C@` now uses Windows creation time as the closest local analogue to GNU status-change time, and the `%A/%B/%C/%T` component subset now exposes zero-padded local time parts for a deterministic GNU-style time surface beyond the `@` epoch forms; `-printf %M` now emits GNU-shaped symbolic mode strings for regular files, directories, and junction-style links, `-printf %n` now reports Win32 hard-link counts for common file and directory cases, and `-printf %i` now reports Win32 file indexes so hard-linked files share the same printed inode-like identifier | full `-printf` and full GNU regex dialect details | | `xargs` | [xargs invocation](https://www.gnu.org/software/findutils/manual/html_node/find_html/Invoking-xargs.html), [conflicting options](https://www.gnu.org/software/findutils/manual/html_node/find_html/Conflicting-xargs-options.html) | `-0`, `-a`, `-d`, `-E`, `-e`, `-I`, `-i`, `-L`, `-l`, `-n`, `-P`, `-p/--interactive`, `-r`, `-s`, `-t`, `-x`, `--process-slot-var`, and `--show-limits` are wired for common command construction; `-p` prompts before each generated command line and runs only on a `y`/`Y` response; `-r/--no-run-if-empty` now matches GNU by skipping execution only when stdin is completely empty rather than merely whitespace-only; mutually exclusive `-I/-i`, `-L/-l`, and `-n` families keep the last conflicting family and now emit the closer GNU-shaped pairwise warning that names the ignored previous family, with GNU's silent `-I ... -n1` exception; GNU's split `-L`/`--max-lines[=N]` behavior is now mirrored more closely too: short `-L` still requires an argument, while bare `--max-lines` defaults to one logical input line without consuming the command name that follows; stdin items are passed literally and are not wildcard-expanded by `xargs`, while command-template arguments now consume the shared wildcard policy so `xargs cmd ... *.txt` behaves closer to a shell-expanded GNU call on Windows and still falls back to the literal token when a wildcard matches nothing; parent-directory wildcard segments now expand there too, so templates such as `dir*\*.txt` and `dir?\*.txt` no longer stay spuriously literal; `-a/--arg-file` open failures now use the closer GNU-shaped `Cannot open input file 'FILE': ...` diagnostic for common missing-input cases; logical EOF markers now stay limited to the GNU default parsing paths and are ignored under explicit `-d` / `-0` item separators; the default blank-splitting parser now also keeps a trailing backslash at EOF as a literal `\` instead of failing, matching GNU's common default-parser behavior more closely, and unmatched single versus double quotes now produce the closer GNU-shaped parser diagnostics with the `unless you use the -0 option` hint instead of a generic quote error; implicit newline replacement mode now skips standalone blank or whitespace-only input lines closer to GNU `-I`/`--replace` behavior, keeps one input line per command in the default no-command `echo` fallback, and now also preserves GNU-style logical line continuation when a replacement input line ends with blanks; explicit delimiter mode now preserves zero-length items between consecutive separators in both `-d` and `-0` paths instead of silently dropping them, an explicitly empty `-d`/`--delimiter` value now fails instead of silently falling back to blank splitting, and malformed short escapes such as `-d '\x'` or `-d '\q'` now fail with delimiter-escape diagnostics instead of the older generic `single character` error; the default no-command fallback to `echo` now also honors `-s/--max-chars` batching and GNU-shaped `-x/--exit` failures instead of bypassing command-line length limits, while oversized `-s` values are clamped to the Windows command-line ceiling and undersized `-s` values are raised to the command floor with GNU-shaped warnings closer to `--show-limits` behavior; child exit statuses now follow the common GNU split between launched-command failures and command-start failures: ordinary child exits `1..127` map to `123`, common signal-shaped `>127` child exits now map to `125` as a Windows approximation, child `255` maps to `124`, while launch failures still keep `127` for not found and `126` for found-but-not-executable; child `255` also stops further launches but now waits for already-running `-P` children to finish first, and the current `-P` pool reuses whichever child slot finishes first instead of waiting in FIFO launch order | true signal-death detection on Windows, very large `-P` pool edge cases, and console/TTY prompt parity | | `cut` | [cut invocation](https://www.gnu.org/software/coreutils/manual/html_node/cut-invocation.html) | `-b/--bytes`, `-c/--characters`, `-d/--delimiter`, Microsoft/FreeBSD `-w` whitespace field mode, `-f/--fields`, `-s/--only-delimited`, `--complement`, `-n/--no-partial`, `-O/--output-delimiter`, and `-z/--zero-terminated` exist; undelimited lines are printed by default in field mode, `-s` skips them, empty `-d ''` means NUL, multicharacter delimiters now fail with the closer GNU-shaped `the delimiter must be a single character` help-hint diagnostic, `-w` now treats runs of spaces/tabs as one field separator while preserving leading/trailing empty fields, defaults to TAB-separated output, and rejects `-d` in the same Microsoft-shaped way, invalid zero or empty field-list positions now distinguish GNU-style `fields are numbered from 1` versus `byte/character positions are numbered from 1` diagnostics instead of collapsing to a generic range error, ordinary newline-delimited mode now trims a trailing `\r` from CRLF records before field/byte/character selection while `-z` remains byte-oriented, file operands use the shared wildcard policy, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory` | full locale-aware character semantics beyond UTF-8 boundary preservation | | `tr` | [tr invocation](https://www.gnu.org/software/coreutils/manual/html_node/tr-invocation.html), [character arrays](https://www.gnu.org/software/coreutils/manual/html_node/Character-arrays.html) | `-c/-C`, `-d`, `-s`, and `-t` are wired for byte-oriented input; sets support escapes, ascending byte ranges, and ASCII `[:CLASS:]` names (`alnum`, `alpha`, `blank`, `cntrl`, `digit`, `graph`, `lower`, `print`, `punct`, `space`, `upper`, `xdigit`); delete+squeeze now deletes from SET1 then squeezes repeated bytes from the last specified set; operand-count diagnostics now distinguish bare missing operands, translation missing `SET2`, `-d -s` missing the squeeze set, and delete-without-squeeze extra operands with GNU/uutils-style help hints; reverse ranges such as `z-a` now also report the closer GNU-shaped `range-endpoints of 'z-a' are in reverse collating sequence order` diagnostic instead of a generic range-order error | locale/multibyte classes, equivalence classes, repeated-output arrays, and deeper sequence-parsing diagnostics | | `df` | [df invocation](https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html) | `-a/--all`, `-B/--block-size=SIZE`, `-h/--human-readable`, `-H/--si`, `-i/--inodes`, `-k`, `-T/--print-type`, `-t/--type`, `-x/--exclude-type`, `--sync`, `--no-sync`, and `--total` are implemented or accepted for Windows-compatible output; file operands use the shared wildcard policy, filtered zero-match output keeps the GNU-style header, and Windows inode output uses GNU-shaped placeholder columns | `--direct` and true filesystem inode counts | | `du` | [du invocation](https://www.gnu.org/software/coreutils/manual/html_node/du-invocation.html) | `-a/--all`, `-A/--apparent-size`, `-B/--block-size=SIZE`, `-b/--bytes`, `-c/--total`, `-d/--max-depth=N`, `-h/--human-readable`, `--si`, `-k`, `-m`, `-0/--null`, `-S/--separate-dirs`, `-s/--summarize`, `-t/--threshold=SIZE`, `--time[=WORD]`, repeatable `--exclude=PATTERN`, `-X/--exclude-from=FILE`, and `--files0-from=FILE` are implemented; default output uses 1024-byte blocks, later size-display options override earlier ones, `-m` behaves like `--block-size=1M`, `-0/--null` terminates output records with NUL, `-S/--separate-dirs` excludes subdirectory totals from each parent directory's reported size while still reporting subdirectories separately, `--block-size=human-readable|si` is accepted, `--max-depth=0` prints only the root total, bare `--time` now shows the latest selected timestamp in the directory tree and `--time=atime|access|use|ctime|status|mtime` follows GNU-style last-occurrence precedence, `-H/--dereference-args` is accepted as a symlink-mode placeholder rather than SI output, `--exclude` and `--exclude-from` patterns remain literal option patterns and are not workspace-expanded, `--files0-from` reads NUL-delimited paths and rejects extra command-line path operands, and file operands otherwise use the shared wildcard policy; Windows currently uses file length as the size source so allocated-size and apparent-size modes are the same approximation, and `ctime`/`status` currently use creation time as the closest Windows analogue | full symlink and filesystem boundaries (`-L`, `-P`, `-x`), block-size environment defaults, `--inodes`, `--time-style`, and exact allocated-block semantics | | `readlink` | [readlink invocation](https://www.gnu.org/software/coreutils/manual/html_node/readlink-invocation.html) | `-f/--canonicalize`, `-e/--canonicalize-existing`, `-m/--canonicalize-missing`, `-n/--no-newline`, `-q/-s/--quiet/--silent`, `-v/--verbose`, and `-z/--zero` are implemented; bare mode reads Windows symlink/junction reparse targets, canonical modes normalize Windows paths and now follow GNU-style last-occurrence precedence, missing operands now emit the GNU-style help hint, default diagnostics are quiet, the `-q/-s/-v` diagnostics family now also follows GNU/uutils-style last-occurrence precedence, and under `POSIXLY_CORRECT` bare regular-file failures now emit diagnostics while `-q/-s` are ignored like GNU/uutils | exact GNU symlink-loop, relative-target, and Windows reparse-point edge cases | | `realpath` | [realpath invocation](https://www.gnu.org/software/coreutils/manual/html_node/realpath-invocation.html) | `-e/--canonicalize-existing`, `-m/--canonicalize-missing`, `-E/--canonicalize`, `-q/--quiet`, `-s/--strip`, `-z/--zero`, `--relative-to=DIR`, and `--relative-base=DIR` are implemented; at least one path operand is now required, missing operands now emit the GNU-style help hint, default canonicalization requires existing parents, `-m` permits missing path components, the canonicalization-mode family now follows GNU-style last-occurrence precedence, empty path / `--relative-to=` / `--relative-base=` operands now fail with a GNU/uutils-shaped invalid-empty-operand diagnostic, and under `-e` the `--relative-to` / `--relative-base` operands are now required to resolve to directories | full GNU symlink ordering semantics for `-L` versus `-P`, and remaining edge cases around nonexistent drive roots | | `truncate` | [truncate invocation](https://www.gnu.org/software/coreutils/manual/html_node/truncate-invocation.html) | `-c/--no-create`, `-s/--size`, `-r/--reference`, and `-o/--io-blocks` are implemented; GNU size prefixes `+`, `-`, `<`, `>`, `/`, and `%` plus decimal, binary, and IEC suffixes are accepted; explicit `--size` overrides `--reference`, option operands stay literal, and only file operands expand wildcards | sparse-file allocation details and exact filesystem block-size edge cases | | `basename` | [basename invocation](https://www.gnu.org/software/coreutils/manual/html_node/basename-invocation.html) | `-a/--multiple`, `--mul`, `-s/--suffix`, `--suf`, `-z/--zero`, and `--ze` are implemented; `-s` implies multi-name mode even when the suffix argument is empty, `-z` emits NUL delimiters, slash-only roots such as `/`, `//`, and `///` now normalize to a single root separator, a suffix identical to the full remaining basename is preserved instead of being stripped to empty, non-multiple mode now rejects a third operand with a GNU-shaped `extra operand` diagnostic plus help hint, and the uutils-covered long-option abbreviations are accepted | deeper path-encoding edge cases beyond the current Windows scope | | `dirname` | [dirname invocation](https://www.gnu.org/software/coreutils/manual/html_node/dirname-invocation.html) | multi-name operation and `-z/--zero` are implemented, with Windows and slash separators accepted; missing operands now emit the GNU-style help hint, slash-only roots such as `/`, `//`, and `///` now normalize to a single root separator, and absolute top-level paths such as `/usr/` now correctly keep `/` as the parent directory | deeper path-encoding edge cases beyond the current Windows scope | | `stat` | [stat invocation](https://www.gnu.org/software/coreutils/manual/html_node/stat-invocation.html) | `-c`, `--format`, `--printf`, `-f/--file-system`, `-L`, and `-t` are wired; common file fields include `%n`, `%N`, `%s`, `%b`, `%B`, `%F`, `%A`, `%a`, `%h`, `%i`, `%d`, `%D`, `%o`, `%u/%U`, `%g/%G`, `%x/%X`, `%y/%Y`, `%z/%Z`, and `%w/%W`; common filesystem fields and `--printf` backslash escapes are covered for AI workflows, missing operands now print the GNU-style help hint, and the `-t` / `-c` / `--format` / `--printf` output-selection family now follows last-occurrence precedence | obscure GNU format directives, exact symlink dereference behavior, nanosecond timestamps, and true owner/group identity on Windows | ## More GNU Coreutils - `base64` — [base64 invocation](https://www.gnu.org/software/coreutils/manual/html_node/base64-invocation.html); `base64 [option]... [FILE]`; `-d/--decode`, `-i/--ignore-garbage`, `-w/--wrap=COLS`; key note: default wrap is 76 columns, `--wrap=0` disables wrapping, decode accepts wrapped input, invalid input reports diagnostics unless `--ignore-garbage` recovers a payload, `-` reads stdin, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, directory operands now report `Is a directory`, and extra file operands now fail with GNU-shaped `extra operand 'FILE'` diagnostics plus the standard help hint. - `b2sum` — [b2sum invocation](https://www.gnu.org/software/coreutils/manual/html_node/b2sum-invocation.html); `b2sum [option]... [FILE]...`; `-l/--length`, `-b/--binary`, `-c/--check`, `--ignore-missing`, `-t/--text`, `-q/--quiet`, `-s/--status`, `-w/--warn`, `-z/--zero`, `--strict`, `--tag`; key note: ordinary digest output, BSD `--tag`, wildcard file operands, short `-z` plus long `--zero` NUL-terminated output, GNU-style `-l/--length` values for any positive multiple of 8 up to 512 bits, and common `-c/--check` verification for the normal GNU hash-line forms now work, including the usual `HASH FILE` and `HASH *FILE` records; `--ignore-missing` now skips listed missing files during check mode without reporting them or failing the run, `--quiet` suppresses per-file `OK` lines while still surfacing `FAILED` results in check mode, `--status` suppresses normal check-mode output while preserving exit status, `--warn` now reports malformed lines with `FILE:LINE` locations plus the GNU-shaped summary, checksum files with no valid lines now fail with GNU-shaped `no properly formatted checksum lines found`, unreadable listed files now also emit the GNU-shaped `WARNING: N listed file(s) could not be read` summary, direct hashing and `-c` check-file mode now both distinguish missing paths from directory operands in GNU-shaped open diagnostics, and plain digest mode keeps GNU-style filename output even when `-q/--quiet` is present; remaining gaps are narrower GNU checksum-file parsing details plus the current Windows fallback still hashing with SHA-512 rather than true BLAKE2. - `base32` — [base32 invocation](https://www.gnu.org/software/coreutils/manual/html_node/base32-invocation.html); `base32 [option]... [FILE]`; `-d/--decode`, `-i/--ignore-garbage`, `-w/--wrap=COLS`; key note: RFC4648 padding/wrapping now matches the GNU shape, including stdin `-`, empty input, invalid decode diagnostics, file operands now following the shared wildcard-expansion policy, missing input files now reporting the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, directory operands now reporting `Is a directory`, and GNU-shaped extra-operand rejection with the standard help hint. - `basenc` — [basenc invocation](https://www.gnu.org/software/coreutils/manual/html_node/basenc-invocation.html); `basenc [option]... [FILE]`; `-d/--decode`, `-w/--wrap=COLS`, `-i/--ignore-garbage`, `--base64`, `--base64url`, `--base32`, `--base32hex`, `--base16`, `--base2msbf`, `--base2lsbf`, `--base58`, `--z85`; key note: exactly one selector is required, common selectors encode/decode, file operands now follow the shared wildcard policy like `base32` / `base64`, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, directory operands now report `Is a directory`, extra file operands now fail with GNU-shaped `extra operand 'FILE'` diagnostics plus the standard help hint, and `--base58` / `--z85` are recognized with explicit not-implemented diagnostics. - `date` — [date invocation](https://www.gnu.org/software/coreutils/manual/html_node/date-invocation.html); `date [option]... [+FORMAT]`; `-d/--date`, `-u/--utc`, `-R/--rfc-email`, `--rfc-2822`, `-I/--iso-8601[=TIMESPEC]`, `--rfc-3339=TIMESPEC`; key note: ISO-like fixed dates, UTC/GMT/Z/offset suffixes, `@epoch`, common format escapes, ISO-8601, RFC 3339, and RFC email output are covered for common AI workflows. - `cksum` — [cksum invocation](https://www.gnu.org/software/coreutils/manual/html_node/cksum-invocation.html); `cksum [option]... [FILE]...`; `-a/--algorithm`, `-c/--check`, `--ignore-missing`, `-q/--quiet`, `-s/--status`, `-w/--warn`, `--strict`, `--tag`, `--untagged`, `--zero`, `--raw`, `-l/--length`; key note: modern GNU `cksum` covers more than the legacy CRC path, the default CRC output now stays in the GNU untagged `CHECKSUM SIZE FILE` form while `--tag` remains opt-in for BSD-style `CRC32 (FILE) = DIGEST`, ordinary multi-file runs now continue past unreadable operands instead of stopping at the first error, missing input files and directory operands now report the closer GNU-shaped `No such file or directory` / `Is a directory` diagnostics in both ordinary and `-c` check-file open paths, `--ignore-missing` now skips listed missing files during `-c` verification without reporting them or failing the run, `--quiet` now suppresses successful per-file `OK` lines while still surfacing `FAILED` results and summaries, `--status` now suppresses normal check-mode output while preserving exit status, `--warn` now reports malformed checksum lines with `FILE:LINE` locations plus the GNU-shaped summary, malformed records mixed with valid ones are now ignored by default unless `--strict` is present, `--strict` now exits non-zero when malformed checksum lines are encountered, `-l` now aliases `--length`, `-c` still fails with a GNU-shaped `no properly formatted checksum lines found` diagnostic when a check file has no valid records at all, unreadable listed files now also emit the GNU-shaped `WARNING: N listed file(s) could not be read` summary, mismatch summaries now count only records whose checksums were actually computed, and untagged `CHECKSUM SIZE FILE` records now verify the size field instead of ignoring it. - `md5sum` — [md5sum invocation](https://www.gnu.org/software/coreutils/manual/html_node/md5sum-invocation.html); `md5sum [option]... [FILE]...`; `-b/--binary`, `-c/--check`, `--ignore-missing`, `-t/--text`, `-q/--quiet`, `-s/--status`, `-w/--warn`, `-z/--zero`, `--strict`, `--tag`; key note: ordinary digest output, BSD `--tag`, wildcard file operands, short `-z` plus long `--zero` NUL-terminated output, and common `-c/--check` verification now work for the normal GNU hash-line forms including `HASH FILE` and `HASH *FILE`, ordinary input files plus `-c` check files now distinguish missing paths from directory operands with the closer GNU-shaped `No such file or directory` / `Is a directory` diagnostics, `--ignore-missing` now skips listed missing files without reporting them or failing the check run, `--quiet` suppresses per-file `OK` lines in check mode, `--status` suppresses normal output while preserving exit status, malformed `--check` lines now report `FILE:LINE` locations under `--warn` and emit a GNU-shaped malformed-line summary, `--strict` now fails when malformed check lines are present, unreadable listed files now also emit the GNU-shaped `WARNING: N listed file(s) could not be read` summary, and checksum files with no valid lines now fail with `no properly formatted checksum lines found`; remaining gaps are narrower GNU check-file parsing edge cases and filename escaping details. - `sha1sum` — [sha1sum invocation](https://www.gnu.org/software/coreutils/manual/html_node/sha1sum-invocation.html); `sha1sum [option]... [FILE]...`; `-b/--binary`, `-c/--check`, `--ignore-missing`, `-t/--text`, `-q/--quiet`, `-s/--status`, `-w/--warn`, `-z/--zero`, `--strict`, `--tag`; key note: ordinary SHA-1 digest output, BSD `--tag`, wildcard file operands, short `-z` plus long `--zero` NUL-terminated output, common `-c/--check` verification for the normal GNU hash-line forms including `HASH FILE` and `HASH *FILE`, ordinary input files plus `-c` check files now distinguish missing paths from directory operands with the closer GNU-shaped `No such file or directory` / `Is a directory` diagnostics, `--ignore-missing` now skips listed missing files without reporting them or failing the check run, `--quiet` now suppresses per-file `OK` lines while still surfacing `FAILED` results in check mode, `--status` now suppresses normal check-mode output while preserving exit status, malformed check lines now report `FILE:LINE` locations under `--warn` and emit the GNU-shaped malformed-line summary, `--strict` now fails when malformed check lines are present, checksum files with no valid lines now fail with `no properly formatted checksum lines found`, and the GNU-shaped `WARNING: N listed file(s) could not be read` summary for unreadable listed files now work; remaining gaps are narrower GNU check-file parsing edge cases and filename escaping details. - `sha224sum` — [sha224sum invocation](https://www.gnu.org/software/coreutils/manual/html_node/sha2-utilities.html); `sha224sum [option]... [FILE]...`; `-b/--binary`, `-c/--check`, `--ignore-missing`, `-t/--text`, `-q/--quiet`, `-s/--status`, `-w/--warn`, `-z/--zero`, `--strict`, `--tag`; key note: ordinary SHA-224 digest output, BSD `--tag`, wildcard file operands, short `-z` plus long `--zero` NUL-terminated output, common `-c/--check` verification for the normal GNU hash-line forms including `HASH FILE` and `HASH *FILE`, ordinary input files plus `-c` check files now distinguish missing paths from directory operands with the closer GNU-shaped `No such file or directory` / `Is a directory` diagnostics, `--ignore-missing` now skips listed missing files without reporting them or failing the check run, `--quiet` suppresses per-file `OK` lines while still surfacing `FAILED` results in check mode, `--status` suppresses normal check-mode output while preserving exit status, malformed check lines now report `FILE:LINE` locations under `--warn` and emit the GNU-shaped malformed-line summary, `--strict` now fails when malformed check lines are present, checksum files with no valid lines now fail with `no properly formatted checksum lines found`, and the GNU-shaped `WARNING: N listed file(s) could not be read` summary for unreadable listed files now work; remaining gaps are narrower GNU check-file parsing edge cases and filename escaping details. - `sha256sum` — [sha256sum invocation](https://www.gnu.org/software/coreutils/manual/html_node/sha2-utilities.html); `sha256sum [option]... [FILE]...`; `-b/--binary`, `-c/--check`, `--ignore-missing`, `-t/--text`, `-q/--quiet`, `-s/--status`, `-w/--warn`, `-z/--zero`, `--strict`, `--tag`; key note: ordinary SHA-256 digest output, BSD `--tag`, wildcard file operands, short `-z` plus long `--zero` NUL-terminated output, common `-c/--check` verification for the normal GNU hash-line forms including `HASH FILE` and `HASH *FILE`, GNU-shaped open diagnostics that distinguish missing paths from directory operands in both direct hashing and `-c` check-file mode, `--ignore-missing` now skips listed missing files without reporting them or failing the check run, `--quiet` suppresses per-file `OK` lines while still surfacing `FAILED` results in check mode, `--status` suppresses normal check-mode output while preserving exit status, malformed check lines that report `FILE:LINE` locations under `--warn` plus the GNU-shaped malformed-line summary, `--strict` now fails when malformed check lines are present, checksum files with no valid lines that fail with `no properly formatted checksum lines found`, and the GNU-shaped `WARNING: N listed file(s) could not be read` summary for unreadable listed files now work; remaining gaps are narrower GNU check-file parsing edge cases and filename escaping details. - `sha384sum` — [sha384sum invocation](https://www.gnu.org/software/coreutils/manual/html_node/sha2-utilities.html); `sha384sum [option]... [FILE]...`; `-b/--binary`, `-c/--check`, `--ignore-missing`, `-t/--text`, `-q/--quiet`, `-s/--status`, `-w/--warn`, `-z/--zero`, `--strict`, `--tag`; key note: ordinary SHA-384 digest output, BSD `--tag`, wildcard file operands, short `-z` plus long `--zero` NUL-terminated output, common `-c/--check` verification for the normal GNU hash-line forms including `HASH FILE` and `HASH *FILE`, `--ignore-missing` now skips listed missing files without reporting them or failing the check run, `--quiet` suppresses per-file `OK` lines while still surfacing `FAILED` results in check mode, `--status` suppresses normal check-mode output while preserving exit status, `--warn` now reports malformed check lines as `FILE:LINE` and emits the GNU-shaped malformed-line summary, `--strict` now fails when malformed check lines are present, checksum files with no valid lines now fail with GNU-shaped `no properly formatted checksum lines found`, the GNU-shaped `WARNING: N listed file(s) could not be read` summary for unreadable listed files is in place, and GNU-shaped open diagnostics now distinguish missing paths from directory operands in both direct hashing and `-c` check-file mode; remaining gaps are narrower GNU checksum-file parsing and filename-escaping details. - `sha512sum` — [sha512sum invocation](https://www.gnu.org/software/coreutils/manual/html_node/sha2-utilities.html); `sha512sum [option]... [FILE]...`; `-b/--binary`, `-c/--check`, `--ignore-missing`, `-t/--text`, `-q/--quiet`, `-s/--status`, `-w/--warn`, `-z/--zero`, `--strict`, `--tag`; key note: ordinary SHA-512 digest output, BSD `--tag`, wildcard file operands, short `-z` plus long `--zero` NUL-terminated output, common `-c/--check` verification for the normal GNU hash-line forms including `HASH FILE` and `HASH *FILE`, `--ignore-missing` now skips listed missing files without reporting them or failing the check run, `--quiet` suppresses per-file `OK` lines while still surfacing `FAILED` results in check mode, `--status` suppresses normal check-mode output while preserving exit status, `--warn` now reports malformed check lines as `FILE:LINE` and emits the GNU-shaped malformed-line summary, `--strict` now fails when malformed check lines are present, checksum files with no valid lines now fail with GNU-shaped `no properly formatted checksum lines found`, the GNU-shaped `WARNING: N listed file(s) could not be read` summary for unreadable listed files is in place, and GNU-shaped open diagnostics now distinguish missing paths from directory operands in both direct hashing and `-c` check-file mode; remaining gaps are narrower GNU checksum-file parsing and filename-escaping details. - `dd` — [dd invocation](https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html); `dd [operand]...`; `if=FILE`, `of=FILE`, `bs=BYTES`, `ibs=BYTES`, `obs=BYTES`, `cbs=BYTES`, `count=N`, `skip=N`, `seek=N`, `conv=CONVS`; key note: block copying and conversion keywords are the compatibility surface, and `conv=sync` now pads short input blocks. - `printf` — [printf invocation](https://www.gnu.org/software/coreutils/manual/html_node/printf-invocation.html); `printf FORMAT [ARGUMENT]...`; key note: format reuse, GNU defaults for missing arguments, `%b`, width/precision, C-style numeric parsing, `\c`, and common backslash escapes are covered. - `seq` — [seq invocation](https://www.gnu.org/software/coreutils/manual/html_node/seq-invocation.html); `seq [option]... LAST` / `FIRST LAST` / `FIRST INCREMENT LAST`; `-f/--format`, `-s/--separator`, `-t/--terminator`, `-w/--equal-width`; key note: zero increments are rejected with the closer GNU/uutils `invalid Zero increment value: 'ARG'` diagnostic, negative/decreasing ranges are handled, `-f` validates a single floating conversion, missing or extra operands now emit GNU-style help hints, `-t/--terminator` now replaces only the final output separator while keeping intermediate separators intact, and `-w` now rejects an explicit `-f/--format` string with the GNU/uutils-style conflict diagnostic. - `sleep` — [sleep invocation](https://www.gnu.org/software/coreutils/manual/html_node/sleep-invocation.html); `sleep NUMBER[SUFFIX]...`; no regular options; key note: floating-point durations and common `s`/`m`/`h`/`d` suffixes are accepted, missing operands now emit the GNU-style help hint, malformed or negative durations now fail with GNU-shaped `invalid time interval 'ARG'` diagnostics plus the standard help hint, multiple invalid operands are now all reported before that final help hint, leading whitespace remains accepted, and trailing whitespace is now rejected like GNU/uutils. - `yes` — [yes invocation](https://www.gnu.org/software/coreutils/manual/html_node/yes-invocation.html); `yes [STRING]...`; no regular options; key note: bare `yes` repeats `y`, multi-operand invocations now match GNU/uutils by joining all operands with single spaces before repeating each line, and `-V/--version` now succeeds while `-- --version` still keeps the operand literal. - `sync` — [sync invocation](https://www.gnu.org/software/coreutils/manual/html_node/sync-invocation.html); `sync [OPTION] [FILE]...`; `-d/--data`, `-f/--file-system`; key note: WinuxCmd now accepts the GNU option surface, existing directory operands now succeed for plain `sync` and `--data`, `--data` without file operands now fails with the uutils-shaped `--data needs at least one argument` diagnostic, `--data` and `--file-system` now fail together as mutually exclusive options, `--file-system` now accepts existing file and directory operands as filesystem references, invalid options fail with explicit `unrecognized option` help hints, and missing-file operands are now all reported with GNU/uutils-shaped `error opening 'FILE': No such file or directory` diagnostics instead of stopping after the first failure; Windows still only approximates GNU `sync` semantics. - `pathchk` — [pathchk invocation](https://www.gnu.org/software/coreutils/manual/html_node/pathchk-invocation.html); `pathchk [option]... NAME...`; `-p`, `-P`, `--portability`; key note: default GNU-style `-P` checks are active unless `POSIXLY_CORRECT` is set, `--portability` implies `-p -P`, `-p` checks portable filename characters plus POSIX 14-byte component and 256-byte path limits, normal Windows drive-letter absolute paths such as `C:\foo\bar` are accepted for current-filesystem checks, Windows reserved names are rejected, repeated or trailing path separators no longer trigger a false `empty file name` failure under the `-P`-style checks, the default empty-path diagnostic now uses the closer GNU/uutils `pathchk: '': No such file or directory` shape with one line per invalid operand, and the missing-operand help hint now stays on stderr. - `sum` — [sum invocation](https://www.gnu.org/software/coreutils/manual/html_node/sum-invocation.html); `sum [option]... [FILE]...`; `-r/--bsd`, `-s/--sysv`; key note: BSD is the default and uses 1024-byte block counts, now zero-pads the BSD checksum field to 5 digits and right-aligns the BSD block-count column to width 5 like GNU, System V uses byte-sum checksums and 512-byte block counts, the last algorithm option wins, implicit stdin stays unnamed while an explicit `-` operand now prints `-` as the file name like GNU, unreadable operands in multi-file runs now report GNU-shaped errors while later readable files are still processed before the command returns non-zero, and missing input files / directory operands report the closer `No such file or directory` / `Is a directory` diagnostics. - `factor` — [factor invocation](https://www.gnu.org/software/coreutils/manual/html_node/factor-invocation.html); `factor [NUMBER]...`; no options; key note: reads integers and prints prime factors. - `expr` — [expr invocation](https://www.gnu.org/software/coreutils/manual/html_node/expr-invocation.html); `expr EXPRESSION`; no options; key note: expression parsing is the surface, not flags. - `test` / `[` — [test invocation](https://www.gnu.org/software/coreutils/manual/html_node/test-invocation.html); `test EXPRESSION`; no options; key note: shell test syntax and the `[` alias share the same grammar. - `true` / `false` — [true invocation](https://www.gnu.org/software/coreutils/manual/html_node/true-invocation.html), [false invocation](https://www.gnu.org/software/coreutils/manual/html_node/false-invocation.html); no options; key note: normal execution still differs only by exit status, and `-V/--version` now succeeds for both commands instead of being misparsed as an unknown option. - `tsort` — [tsort invocation](https://www.gnu.org/software/coreutils/manual/html_node/tsort-invocation.html); `tsort [FILE]`; no options; key note: topological sorting of pair lists is the behavior to preserve. ## Additional GNU Tools - `expand` — [expand invocation](https://www.gnu.org/software/coreutils/manual/html_node/expand-invocation.html); `expand [option]... [file]...`; `-t/--tabs=tab1[,tab2]...`, `-i/--initial`; key note: default expands all tabs, `-t` supports GNU comma/blank lists plus `/N` and `+N`, backspace affects columns, ordinary newline-delimited mode now trims a trailing `\r` from CRLF records before expansion, tab-list option arguments stay literal rather than glob-expanded, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`. - `unexpand` — [unexpand invocation](https://www.gnu.org/software/coreutils/manual/html_node/unexpand-invocation.html); `unexpand [option]... [file]...`; `-t/--tabs=tab1[,tab2]...`, `-a/--all`, `-f/--first-only`, `-U/--no-utf8`; key note: default only handles leading blanks, `-t` implies `-a`, `-f/--first-only` overrides it, `/N` and `+N` tab syntax are accepted, option arguments stay literal, default file reads strip a UTF-8 BOM, `-U/--no-utf8` preserves those leading bytes as raw input, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`. - `fold` — [fold invocation](https://www.gnu.org/software/coreutils/manual/html_node/fold-invocation.html); `fold [option]... [file]...`; `-b/--bytes`, `-c/--characters`, `-s/--spaces`, `-w/--width=width`; key note: wrap by columns by default, width values are strictly parsed, final unterminated lines are preserved, tab/backspace/carriage-return columns are handled, `-c/--characters` now counts UTF-8 code points without splitting multibyte sequences, and the default column mode now keeps common UTF-8 wide characters intact while treating them as two display columns; ordinary newline-delimited mode now trims a trailing `\r` from CRLF records before folding/output; missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`. - `fmt` — [fmt invocation](https://www.gnu.org/software/coreutils/manual/html_node/fmt-invocation.html); `fmt [option]... [file]...`; `-c/--crown-margin`, `-m/--preserve-headers`, `-t/--tagged-paragraph`, `-s/--split-only`, `-u/--uniform-spacing`, `-T/--tab-width=tabwidth`, `-w/--width=width`, `-g/--goal=goal`, `-p/--prefix=prefix`, `-P/--skip-prefix=prefix`, `-x/--exact-prefix`, `-X/--exact-skip-prefix`; key note: default width is 75 columns, numeric width/goal values are strictly parsed, empty lines and indentation are preserved, split-only avoids refilling, prefix mode formats only matching lines while now preserving the matched prefix attachment (`>` versus `> `), `-x` now keeps indented lines out of `-p` matching, `-P` leaves matching lines verbatim, and `-X` keeps indented lines out of skip-prefix matching for the common Microsoft/Coreutils cases we probed; `-m` now detects simple `Header: value` mail headers, merges indented continuation lines, and reformats them with a preserved header label plus two-space continuations while using the wider wrap behavior we observed from Microsoft on both headers and body text; tab-indented paragraphs now also follow Microsoft/Coreutils by measuring indentation with default 8-column tab stops unless `-T` overrides the measurement width, while preserving literal tabs in output; uniform spacing keeps sentence gaps, crown/tagged indentation is covered for common cases, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`. - `nl` — [nl invocation](https://www.gnu.org/software/coreutils/manual/html_node/nl-invocation.html); `nl [option]... [file]...`; `-b`, `-d`, `-f`, `-h`, `-i`, `-l`, `-n`, `-p`, `-s`, `-v`, `-w`; key note: long option names, section delimiters, section-specific numbering styles including `pBRE`, `--no-renumber`, blank-line grouping, empty separators, and negative start/increment values are covered; ordinary newline-delimited mode now trims a trailing `\r` from CRLF records before delimiter detection and numbered output; missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`. - `paste` — [paste invocation](https://www.gnu.org/software/coreutils/manual/html_node/paste-invocation.html); `paste [option]... [file]...`; `-s/--serial`, `-d/--delimiters=delim-list`, `-z/--zero-terminated`; key note: delimiter lists cycle, GNU escapes include `\\0`, `\\t`, `\\n`, `\\b`, `\\f`, `\\r`, `\\v`, and `\\\\`, empty delimiters insert no separator, repeated `-` stdin operands are consumed sequentially in parallel mode, ordinary newline-delimited mode now trims a trailing `\r` from CRLF records while `-z` remains byte-oriented, and file open failures now distinguish missing inputs from directory operands with GNU-shaped `No such file or directory` / `Is a directory` text. - `join` — [join invocation](https://www.gnu.org/software/coreutils/manual/html_node/join-invocation.html); `join [option]... file1 file2`; `-a`, `--check-order`, `--nocheck-order`, `-e`, `--header`, `-i`, `-1`, `-2`, `-j`, `-o`, `-t`, `-v`, `-z`; key note: default blank field parsing, explicit `-t`, empty/NUL separators, unpaired output, `-o FIELD-LIST`, `-o auto`, header inference, `-e`, `-i`, order-check options, and NUL records are covered; newline-delimited input now trims a trailing `\r` from CRLF records before key extraction and matching, while `-z` remains byte-oriented; missing input files now report the closer GNU-shaped `missing.txt: No such file or directory` diagnostic, directory operands now report `Is a directory`, and operand-count failures now use GNU-shaped `missing operand` / `extra operand` help-hint diagnostics; inputs must already be sorted on the join key. - `comm` — [comm invocation](https://www.gnu.org/software/coreutils/manual/html_node/comm-invocation.html); `comm [option]... file1 file2`; `-1`, `-2`, `-3`, `--check-order`, `--nocheck-order`, `--output-delimiter=str`, `--total`, `-z`; key note: NUL records, totals, order-check options, and empty output delimiters as NUL are covered; ordinary newline-delimited mode now trims a trailing `\r` from CRLF records before comparison and output, while `-z` remains byte-oriented; missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, directory operands now report `Is a directory`, and operand-count failures now use GNU-shaped `missing operand` / `extra operand` help-hint diagnostics; inputs must be sorted under `LC_COLLATE`. - `tac` — [tac invocation](https://www.gnu.org/software/coreutils/manual/html_node/tac-invocation.html); `tac [option]... [file]...`; `-b/--before`, `-r/--regex`, `-s/--separator=separator`; key note: records reverse independently per file, empty `-s ''` uses NUL, `-b` attaches separators before records, and `-r -s` treats the separator as a regex; ordinary newline-delimited mode now trims a trailing `\r` from CRLF records before reversal while custom/regex separators stay byte-oriented; missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`. - `diff` — GNU diffutils command; `diff [OPTION]... FILE1 FILE2`; `-q`, `-u`, `-y`, `-w`, `-B`; key note: current WinuxCmd coverage handles basic comparisons, unified output, side-by-side output, `-q`, and `-w`, file operands follow the shared wildcard policy, operand-count failures now distinguish bare `missing operand`, `missing operand after 'FILE'`, and `extra operand` with GNU-style help hints, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`; wider GNU diffutils edit/report options remain future work. - `shuf` — [shuf invocation](https://www.gnu.org/software/coreutils/manual/html_node/shuf-invocation.html); `shuf [option]... [file]` / `shuf -e ...` / `shuf -i lo-hi ...`; `-e/--echo`, `-i/--input-range`, `-n/--head-count`, `-o/--output`, `--random-seed`, `--random-source`, `-r/--repeat`, `-z/--zero-terminated`; key note: `--random-seed=STRING` now follows the closer Microsoft/uutils seeded path by hashing the UTF-8 seed with SHA3-256 and feeding a ChaCha12-based reproducible stream, so fixed-seed shuffles and repeat-mode sampling now match those seeded outputs in the common probes; `--random-source=FILE` now follows the closer GNU/Microsoft entropy-recycling adapter rather than the old `mt19937` path, so the current file `-n`, repeat `-i`, and plain `-i` probes match Microsoft output exactly; repeated `-n/--head-count` occurrences now also follow GNU/uutils/Microsoft behavior by taking the lowest supplied count instead of the last one; `--random-seed` remains mutually exclusive with `--random-source`; `-r` samples with replacement, ordinary newline-delimited mode now trims trailing `\r` from CRLF records before shuffling/output while `-z` stays byte-oriented and reads/writes NUL records, `-o` opens output after input is read so `shuf -o FILE FILE` is usable, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`. - `diff3` — GNU diffutils command; `diff3 [OPTION]... MINE OLDER YOURS`; `-e`, `-E`, `-m`, `-A`, `-a`; key note: file operands follow the shared wildcard policy, must resolve to exactly three files, missing operands now distinguish bare `missing operand` from `missing operand after 'FILE'`, and extra operands fail with a GNU/uutils-shaped diagnostic plus `Try 'diff3 --help' for more information.`. - `sdiff` — GNU diffutils command; `sdiff [OPTION]... FILE1 FILE2`; `-o`, `-w`, `-l`, `-s`, `-E`, `-b`, `-W`, `-B`; key note: current WinuxCmd coverage handles the common side-by-side output path, accepts empty files, resolves file-like wildcards before the fixed two-file arity check, and operand-count failures now distinguish bare `missing operand`, `missing operand after 'FILE'`, and `extra operand` with GNU-style help hints; wider GNU merge/edit options remain future work. - `cmp` — GNU diffutils command; `cmp [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]`; `-b`, `-i/--ignore-initial=SKIP` / `SKIP1:SKIP2`, `-l`, `-n`, `-s`; key note: WinuxCmd now accepts GNU positional `SKIP1`/`SKIP2` operands as well as `-i SKIP1:SKIP2`, skip counts accept GNU-style decimal/octal/hex prefixes plus common byte suffixes, default difference output now includes both byte and line numbers, `-l` now lists every differing byte with GNU-style octal values relative to the comparison start, conflicting `-l/-s` output modes use last-occurrence precedence, skipping past the shorter input now reports EOF cleanly instead of underflowing the comparison range, and operand-count failures now use GNU-shaped missing/extra-operand help-hint diagnostics. - `split` — [split invocation](https://www.gnu.org/software/coreutils/manual/html_node/split-invocation.html); `split [option]... [input [prefix]]`; `-l`, `-b`, `-C`, `-n N`, `-n l/N`, `-a`, `-d/--numeric-suffixes[=FROM]`, `-x/--hex-suffixes[=FROM]`, `--additional-suffix`, `-e`, `--verbose`, `-t/--separator`, `--filter`; key note: line, byte, line-byte, plain numeric chunk splitting, GNU `-n l/N` line-preserving chunk splitting, `-t/--separator`, `--filter`, and `-e` empty-file elision are covered, including preserving whole CRLF-terminated records instead of splitting them across outputs in `-n l/N` mode, preserving custom record separators in output, exporting `FILE` to each filter command while also keeping the current Windows-friendly `$FILE` textual substitution path, rejecting an explicit empty separator instead of silently falling back to newline semantics, and keeping output suffixes dense when empty `-n` chunks are elided; `--verbose` now emits GNU-shaped `creating file 'PREFIX..'` diagnostics before each output file is opened; suffix starts and numeric/hex suffixes work, ambiguous wildcard input is rejected, missing input files now report the closer GNU-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, directory operands now report `Is a directory`, and a third positional operand now fails with a GNU-style `extra operand` help hint; unsupported `-n` submodes such as `K/N`, `l/K/N`, and `r/N` now fail explicitly instead of being silently misparsed; `-u` remains a gap. - `csplit` — [csplit invocation](https://www.gnu.org/software/coreutils/manual/html_node/csplit-invocation.html); `csplit [option]... input pattern...`; `-f`, `-b`, `-n`, `-k`, `--suppress-matched`, `-z`, `-s/-q`; key note: line-number and regex patterns, regex repeats with offsets, skipped patterns, suppress-matched output, quiet output, empty-file elision, and ambiguous wildcard rejection are covered; missing input/pattern diagnostics now also carry the GNU-style help hint, and integer patterns with `--suppress-matched` now keep the GNU/uutils empty-tail split behavior. - `pr` — [pr invocation](https://www.gnu.org/software/coreutils/manual/html_node/pr-invocation.html); `pr [option]... [file]...`; `+FIRST[:LAST]`, `-COLUMN`, `-a`, `-c`, `-d`, `-D`, `-e`, `-f/-F`, `-h`, `-i`, `-J`, `-l`, `-m`, `-n`, `-N`, `-o`, `-r`, `-s`, `-S`, `-t`, `-T`, `-v`, `-w`, `-W`; key note: page layout and pagination behavior are the compatibility center; GNU's old-style `-COLUMN` form such as `pr -2 FILE` is now accepted, and ordinary newline-delimited input now trims a trailing `\r` from CRLF records before pagination, numbering, and column formatting. - `rev` — repository-local command; GNU Coreutils has no corresponding invocation page, so do not document it as GNU parity. ## Additional GNU Commands - `chown` — [chown invocation](https://www.gnu.org/software/coreutils/manual/html_node/chown-invocation.html); `chown [option]... [OWNER][:[GROUP]] FILE...`; `-c/--changes`, `-f/--silent/--quiet`, `-h/--no-dereference`, `-H`, `-L`, `-P`, `--dereference`, `--from=CURRENT_OWNER:CURRENT_GROUP`, `--preserve-root[=all]`, `--reference=RFILE`, `-R/--recursive`, `-v/--verbose`; key note: current WinuxCmd coverage is still limited on Windows, but explicit owner/group names plus the current owner/group names supplied to `--from` now fail early with GNU-shaped `invalid user` / `invalid group` diagnostics, malformed specs such as `::`, `..`, `1001:`, and `1001.` now fail with closer GNU/uutils-shaped `invalid group` / `invalid spec` errors, dot-separated forms such as `OWNER.` and `OWNER.GROUP` now emit the GNU/uutils-style `warning: '.' should be ':'` warning before proceeding, `--from` now filters existing targets by their current Windows owner/group before applying `--reference` or continuing with a direct change attempt, mismatching filters keep the target unchanged and `-v` reports retained ownership, matching filters no longer emit the old Windows-placeholder `not supported` diagnostic, direct no-op specs such as `:` and `CURRENT_OWNER:` now also report retained ownership instead of a fake change line, missing reference files now report `failed to get attributes of 'RFILE': No such file or directory`, `--reference=RFILE FILE...` keeps the GNU operand form, `-v --reference=RFILE FILE...` now emits a retained-ownership diagnostic on stderr, and `--preserve-root -R /` now stops before traversal with the GNU/uutils-style two-line failsafe while recursive traversal and actual ownership changes remain Windows-limited. - `chgrp` — [chgrp invocation](https://www.gnu.org/software/coreutils/manual/html_node/chgrp-invocation.html); `chgrp [OPTION]... GROUP FILE...` / `chgrp [OPTION]... --reference=RFILE FILE...`; `-c/--changes`, `-f/--silent/--quiet`, `-h/--no-dereference`, `-H`, `-L`, `-P`, `--dereference`, `--from=GROUP`, `--preserve-root`, `--no-preserve-root`, `--reference=RFILE`, `-R/--recursive`, `-v/--verbose`; key note: invalid group operands now fail early with the GNU/uutils-shaped `invalid group: 'GROUP'` diagnostic plus the help hint, invalid `--from=GROUP` operands now fail with the matching uutils-shaped `invalid user: 'GROUP'` diagnostic, `--from=GROUP` now filters existing targets by their current Windows group name before applying `--reference` or a direct change attempt, numeric `--from=gid` and `--from=:gid` are now accepted and matched against the target group SID's final RID as a Windows approximation, missing reference files now report `failed to get attributes of 'RFILE': No such file or directory`, `--reference=RFILE FILE...` accepts the GNU operand form and validates the reference file before processing targets, `-v --reference=RFILE FILE...` emits a retained-group diagnostic only when the `--from` filter matches, `--preserve-root -R /` now stops before traversal with the GNU/uutils-style two-line failsafe diagnostic, and actual group changes remain Windows-limited behavior. - `chcon` — [chcon invocation](https://www.gnu.org/software/coreutils/manual/html_node/chcon-invocation.html); `chcon [OPTION]... CONTEXT FILE...` / `chcon [OPTION]... --reference=RFILE FILE...`; `--reference=RFILE`, `-u/--user`, `-r/--role`, `-t/--type`, `-l/--range`, `-R/--recursive`, `-H`, `-L`, `-P`, `-h/--no-dereference`, `--dereference`, `--preserve-root`, `--no-preserve-root`, `-v/--verbose`; key note: WinuxCmd now accepts the GNU-shaped option surface and validates existing file operands, but always exits with a clear Windows limitation because SELinux file contexts do not exist on Windows. - `chroot` — [chroot invocation](https://www.gnu.org/software/coreutils/manual/html_node/chroot-invocation.html); `chroot [OPTION] NEWROOT [COMMAND [ARG]...]`; `--groups=GROUP1,GROUP2...`, `--userspec=USER:GROUP`, `--skip-chdir`; key note: WinuxCmd now accepts the GNU-shaped option surface, validates that `NEWROOT` exists as a directory, and always exits with a clear Windows limitation because Windows does not provide a safe equivalent to POSIX `chroot`. - `mkfifo` — [mkfifo invocation](https://www.gnu.org/software/coreutils/manual/html_node/mkfifo-invocation.html); `mkfifo [OPTION]... NAME...`; `-m/--mode=MODE`, `-Z`, `--context[=CTX]`; key note: WinuxCmd now accepts the GNU-shaped option surface, preserves GNU-shaped `missing operand`, `invalid mode`, and `File exists` diagnostics for common cases, and always exits with a clear Windows limitation because filesystem FIFOs do not exist on Windows. - `mknod` — [mknod invocation](https://www.gnu.org/software/coreutils/manual/html_node/mknod-invocation.html); `mknod [OPTION]... NAME TYPE [MAJOR MINOR]`; `-m/--mode=MODE`, `-Z`, `--context[=CTX]`, `TYPE` in `b`, `c`/`u`, `p`; key note: WinuxCmd now accepts the GNU-shaped option surface, validates common operand-shape rules such as `p` versus `b/c` major/minor requirements, and always exits with a clear Windows limitation because special files and device nodes do not exist on Windows. - `runcon` — [runcon invocation](https://www.gnu.org/software/coreutils/manual/html_node/runcon-invocation.html); `runcon CONTEXT COMMAND [ARG]...` / `runcon [-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] [COMMAND [ARG]...]`; `-c/--compute`, `-u/--user`, `-r/--role`, `-t/--type`, `-l/--range`; key note: WinuxCmd now accepts the GNU-shaped option surface, validates that the plain-context form includes a command operand, and always exits with a clear Windows limitation because SELinux process contexts do not exist on Windows. - `link` — [link invocation](https://www.gnu.org/software/coreutils/manual/html_node/link-invocation.html); `link FILE LINKNAME`; no regular options; key note: GNU `link` is optionless, WinuxCmd now lets `-V/--version` succeed, and it uses GNU-shaped `cannot create link 'LINK' to 'FILE'` diagnostics for the common missing-source and existing-destination failure cases, the narrower uutils-shaped `2 values required` operand-count diagnostic, and explicit `unrecognized option` help hints for invalid options; source wildcards now follow the shared file-input policy by expanding only on an exact single match, collapsing ambiguous multi-match input back to the same `2 values required` failure a shell-expanded call would produce, and otherwise falling back to the literal path. - `dir` — [dir invocation](https://www.gnu.org/software/coreutils/manual/html_node/dir-invocation.html); `dir [OPTION]... [FILE]...`; GNU wrapper around `ls -C`; key note: WinuxCmd keeps the wrapper shape and column-default behavior, now forwards the original argv surface so wrapper options such as `-a` and `-d` actually reach `ls`, and still preserves single arguments containing spaces via Windows `CreateProcessW` quoting rules. - `nice` — [nice invocation](https://www.gnu.org/software/coreutils/manual/html_node/nice-invocation.html); `nice [OPTION] [COMMAND [ARG]...]`; `-n/--adjustment=N`; key note: the current implementation maps niceness to Windows priority classes rather than true GNU niceness semantics, but bare `nice` now prints the current niceness, explicit adjustments without a command now fail with the GNU/uutils-style `A command must be given with an adjustment.` usage error and exit `125`, legacy GNU bare adjustment forms such as `-1`, `--1`, and `-+1` now rewrite to `-n...` before command parsing, huge positive/negative adjustment values are clamped instead of failing during option parsing, invalid adjustment strings now return exit `125` with a GNU-shaped usage error, parse-time invalid-option failures now also return `125`, child command lines now preserve single arguments containing spaces via Windows `CreateProcessW` quoting rules, and missing child commands report a GNU-shaped `failed to run command 'CMD': No such file or directory` diagnostic while returning exit `127`. - `nohup` — [nohup invocation](https://www.gnu.org/software/coreutils/manual/html_node/nohup-invocation.html); `nohup COMMAND [ARG]...`; no regular options; key note: WinuxCmd currently keeps a local `-a/--append` extension, missing-operand and invalid-option help hints now stay on stderr, those usage errors return the default `125` but switch to `127` under `POSIXLY_CORRECT`, child command lines now preserve single arguments containing spaces via Windows `CreateProcessW` quoting rules, and a missing child command now reports a GNU-shaped `failed to run command 'CMD': No such file or directory` diagnostic while returning exit `127`. - `env` — [env invocation](https://www.gnu.org/software/coreutils/manual/html_node/env-invocation.html); `env [option]... [-] [name=value]... [command [args]...]`; `-i/--ignore-environment`, repeatable `-u/--unset=NAME`, `-0/--null`, `-f/--file=FILE`, `-v/--debug`, `-a/--argv0=STRING`, `-C/--chdir=DIR`, `NAME=VALUE`, and command execution are wired; key note: parse-time invalid options now also return GNU/uutils-style exit `125` with the standard help hint, `-f/--file` now loads simple trimmed `.env`-style `NAME=VALUE` entries before `-u` and command-line assignments while ignoring blank lines plus `#` comments, `-a/--argv0` now overrides the child process `argv[0]` while still executing the original program, the `-a/--argv0`, `-C/--chdir`, and `-S/--split-string` alias pairs now follow last-occurrence precedence, `-C/--chdir` now matches GNU usage by requiring a command operand, `-0/--null` is now limited to environment-printing mode and fails with GNU/uutils-style exit `125` plus `cannot specify --null (-0) with command` when a command is present, repeated debug flags now accumulate so `-vv` also prints raw input arguments, `-f` file-open failures now return exit `1` instead of a usage error, command-start failures now keep the common GNU split between missing commands (`127`, `No such file or directory`) and found-but-not-executable paths (`126`, `Permission denied`) even when `--argv0` is in use, and the current `-S` parser now rejects unterminated quotes while also handling common GNU separators and escapes such as literal newlines, `\_`, and unquoted `\c`; full GNU `-S` parsing, full dotenv semantics, remaining GNU debug edge details, and signal controls remain future work. - `pwd` — [pwd invocation](https://www.gnu.org/software/coreutils/manual/html_node/pwd-invocation.html); `pwd [OPTION]...`; `-L/--logical`, `-P/--physical`; key note: default output remains physical unless `POSIXLY_CORRECT` is present, in which case bare `pwd` now defaults to logical mode and prefers `PWD` only when it is absolute, still resolves to the current directory, and contains no `.` or `..` path components; the `-L/-P` family follows last-occurrence precedence; extra non-option operands now emit the GNU-shaped `ignoring non-option arguments` warning while still succeeding; deeper symlink lexical-shape validation is still open. - `printenv` — [printenv invocation](https://www.gnu.org/software/coreutils/manual/html_node/printenv-invocation.html); `printenv [OPTION]... [VARIABLE]...`; `-0/--null`; key note: full-environment enumeration and named-variable output are in place, named empty variables still emit empty records, mixed found/missing variable lists keep the found output while returning status `1`, variable-name operands containing `=` are now silently ignored while still contributing to exit status `1`, invalid options now return GNU/uutils-style exit `2` with the standard help hint, NUL termination works for named output, and full enumeration skips Windows hidden `=...` pseudo-entries. - `stdbuf` — [stdbuf invocation](https://www.gnu.org/software/coreutils/manual/html_node/stdbuf-invocation.html); `stdbuf [OPTION]... COMMAND [ARG]...`; `-i/--input`, `-o/--output`, `-e/--error`; key note: missing-command, invalid-mode, and invalid-option usage/parse failures now return GNU/uutils-style exit `125` while keeping the GNU-style help hint on stderr, child command lines now preserve single arguments containing spaces via Windows `CreateProcessW` quoting rules, but the current implementation still only adjusts parent buffering, not child-process stdio the way GNU stdbuf does. - `timeout` — [timeout invocation](https://www.gnu.org/software/coreutils/manual/html_node/timeout-invocation.html); `timeout [OPTION] DURATION COMMAND [ARG]...`; `-s/--signal`, `-k/--kill-after`, `--foreground`, `--preserve-status`; key note: the main timeout knobs are wired, missing operand / missing command now emit GNU-style help hints and return exit `125`, parse-time invalid options now also return `125` with the standard help hint, `--foreground` no longer disables timeout enforcement in the Windows implementation, invalid `--signal` / duration / `--kill-after` usage errors now also return `125` with GNU-shaped diagnostics, verbose timeout reporting now prefers signal names like `TERM`, `-s0` combined with `-k/--kill-after` now defers the forced kill to the KILL phase and returns `137` in the GNU/uutils shape, and child argv is now quoted with Windows `CreateProcessW` rules so spaced arguments remain single argv entries; remaining timeout signal semantics, preserve-status edge cases, and foreground/background details still need tightening. - `vdir` — [vdir invocation](https://www.gnu.org/software/coreutils/manual/html_node/vdir-invocation.html); `vdir [OPTION]... [FILE]...`; GNU wrapper around `ls -l`; key note: WinuxCmd keeps the wrapper shape and long-format-default behavior, now forwards the original argv surface so wrapper options such as `-a` and `-d` actually reach `ls`, and still preserves single arguments containing spaces via Windows `CreateProcessW` quoting rules. - `tty` — [tty invocation](https://www.gnu.org/software/coreutils/manual/html_node/tty-invocation.html); `tty [OPTION]...`; `-s/--silent`, `--quiet`; key note: WinuxCmd accepts the quiet-style alias, extra operands and invalid options now use GNU-shaped stderr diagnostics plus the help hint while returning exit `2`, non-tty stdin returns `1` in silent and non-silent modes, and broken stdout during non-silent output now follows GNU/uutils-style exit `3`. - `arch` — [arch invocation](https://www.gnu.org/software/coreutils/manual/html_node/arch-invocation.html); `arch`; no regular options; key note: WinuxCmd now lets `-V/--version` succeed instead of misparsing it as an unknown option, while ordinary output still reports the Windows processor architecture in GNU-style names such as `x86_64` and `aarch64`. - `hostid` — [hostid invocation](https://www.gnu.org/software/coreutils/manual/html_node/hostid-invocation.html); `hostid`; no regular options; key note: WinuxCmd now lets `-V/--version` succeed instead of misparsing it as an unknown option, while normal output remains the Windows-derived 8-hex-digit host identifier. - `logname` — [logname invocation](https://www.gnu.org/software/coreutils/manual/html_node/logname-invocation.html); `logname`; no regular options; key note: WinuxCmd now lets `-V/--version` succeed instead of misparsing it as an unknown option, while normal output still reports the current Windows username as a login-name approximation. - `unlink` — [unlink invocation](https://www.gnu.org/software/coreutils/manual/html_node/unlink-invocation.html); `unlink FILE`; no regular options; key note: GNU `unlink` is essentially optionless, WinuxCmd now lets `-V/--version` succeed, and it uses GNU-shaped `cannot unlink` diagnostics for missing-path and directory failures, keeps operand-error help hints on stderr, emits explicit `unrecognized option` help hints for invalid options, names the offending extra operand in both direct and wildcard-expanded multi-operand failures, falls back to the literal path when a wildcard input matches nothing, and now removes directory symlinks/junctions as links rather than touching their targets. - `whoami` — [whoami invocation](https://www.gnu.org/software/coreutils/manual/html_node/whoami-invocation.html); `whoami`; no regular options; key note: WinuxCmd now lets `-V/--version` succeed instead of misparsing it as an unknown option, while ordinary output still reports the effective Windows username. - Local or third-party commands such as `getconf`, `cal`, `less`, `top`, `watch`, `cygpath`, `d2u`, `dos2unix`, `u2d`, `unix2dos`, `tzset`, and `tree` are outside the GNU Coreutils parity surface and stay tracked in the implementation matrix. - `column` — util-linux `column` command; `column [options] [file ...]`; `-c/--columns`, `-t/--table`, `-s/--separator`, `-o/--output-separator`, `--table-right` / `-R`, `-H/--table-hide`, `-N/--table-no-trunc`, `-E/--table-noescape`, `-J/--json`, `-O/--output-width`; key note: current WinuxCmd coverage handles the common table formatting path, JSON output, custom separators, width/right-alignment controls, and the common long-option spellings for `--json`, `--output-width`, and `--table-right`; the ordinary newline-delimited `-t/--table` path now trims a trailing `\r` from CRLF input records before column sizing and output; missing input files now report the closer GNU/util-linux-shaped `cannot open 'FILE' for reading: No such file or directory` diagnostic, and directory operands now report `Is a directory`.