od(1) on Solnix vs Linux and the BSDs
On Solnix, od is the illumos od at /usr/bin/od, and /usr/xpg4/bin/od is also shipped. It has none of the GNU long options and none of the BSD letter shortcuts (-a, -h, -i, -l, -e, -H, -I, -L, -B). Its default output is 2-byte octal words, and -S means signed decimal long words, not strings.
The manual pages
- Solnix: od(1) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: od(1) coreutils-full-9.11
- FreeBSD: od(1) 15.1-RELEASE
- OpenBSD: od(1) 8.0
- NetBSD: od(1) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
od
What Solnix runs
A default Solnix system runs the illumos od at /usr/bin/od. /usr/xpg4/bin/od is also shipped with a similar synopsis. The visible difference is -c: /usr/bin/od -c shows single-byte characters, while xpg4 -c and -C read multibyte characters per LC_CTYPE and print ** for continuation bytes. /usr/bin/od lists -C in its synopsis, but the bundle text does not describe it. Part of the Solnix page (-t type details, -v, -x, -X) is trimmed in the bundle.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| Linux | default output | With no type option, Solnix od acts as if -t o2 was given (octal 2-byte words). Linux od writes octal bytes by default. Dumps of the same file differ in grouping unless you pass -t explicitly.Source: Solnix od(1) DESCRIPTION (default as if -t o2); Linux od(1) DESCRIPTION (octal bytes by default) |
| FreeBSD, OpenBSD, NetBSD | default output | FreeBSD assumes -t oS, which is 2-byte octal, so it matches Solnix. The OpenBSD and NetBSD pages contradict themselves: -b is called the default, but the closing paragraph says the default is -o. Do not rely on the default.Source: FreeBSD od(1) (-t oS assumed); OpenBSD od(1) -b and closing paragraph; NetBSD od(1) -b and closing paragraph; Solnix od(1) DESCRIPTION |
| Linux, FreeBSD | -S meaning | Solnix od -S reads long words as signed decimal (-t d4). Linux od -S BYTES shows only NUL-terminated strings. The FreeBSD page says the traditional -s string extraction is not supported and points to strings(1).Source: Solnix od(1) /usr/xpg4/bin/od -S; Linux od(1) -S, --strings; FreeBSD od(1) COMPATIBILITY |
| OpenBSD | -D meaning | Solnix and FreeBSD od -D print unsigned decimal 4-byte values (-t u4). OpenBSD od -D prints 4-byte octal. Linux has no -D, and the NetBSD page lists -D in its synopsis without describing it.Source: Solnix od(1) /usr/xpg4/bin/od -D; FreeBSD od(1) -D; OpenBSD od(1) -D; NetBSD od(1) SYNOPSIS and OPTIONS |
| all four | missing single-letter shortcuts | The Solnix synopsis has no -a, -h, -H, -i, -I, -l, -L, -e or -B. Linux uses -a, -i, -l; the BSDs use -a, -h, -H, -i, -I, -L, -l, -e, -B. On Solnix use -t, for example -t x2.Source: Solnix od(1) SYNOPSIS; Linux od(1) -a -i -l; FreeBSD od(1) OPTIONS; OpenBSD od(1) OPTIONS; NetBSD od(1) OPTIONS |
| Linux | long options and extra GNU features | Solnix od has no long options, no -w line width, no --endian, no --traditional, and no z type suffix. Linux od has all of these.Source: Solnix od(1) SYNOPSIS; Linux od(1) -w, --endian, --traditional, TYPE z suffix |
| OpenBSD, NetBSD | -t fL size | On OpenBSD and NetBSD, f followed by L means eight-byte floats and f defaults to eight bytes. On FreeBSD and Linux, L means long double. The Solnix -t text in the bundle is trimmed, so check it before using fL.Source: OpenBSD od(1) -t f; NetBSD od(1) -t f; FreeBSD od(1) -t f[F|D|L|n]; Linux od(1) TYPE f |
| all four | -j and -N argument syntax | Solnix -j and -N take decimal, 0x hex or leading-0 octal, and -j takes suffixes b, k, m (512, 1024, 1048576). Linux lists b, KB, K, MB, M and so on, with no lowercase k or m. FreeBSD documents b, k, m only.Source: Solnix od(1) -j, -N; Linux od(1) BYTES; FreeBSD od(1) -j |
| all four | short input and exit status | Solnix -j writes a diagnostic and exits non-zero if the combined input is shorter than skip. Short input under -N is not an error. The other pages do not document either case, and the BSD pages say only 0 on success, >0 on error.Source: Solnix od(1) -j, -N; FreeBSD od(1) EXIT STATUS; OpenBSD od(1) EXIT STATUS; NetBSD od(1) EXIT STATUS |
| all four | offset operand | Solnix accepts an [offset_string] operand but not together with -A, -j, -N or -t. Linux treats OFFSET as -j, and a LABEL operand needs --traditional. FreeBSD and NetBSD show [+]offset[.][Bb] in the synopsis. OpenBSD documents it only under -j.Source: Solnix od(1) DESCRIPTION; Linux od(1) SYNOPSIS and DESCRIPTION; FreeBSD od(1) SYNOPSIS; NetBSD od(1) SYNOPSIS; OpenBSD od(1) -j |
| FreeBSD | -c escapes and locale | Solnix /usr/bin/od -c prints only \0 \b \f \n \r \t as escapes. FreeBSD -c also uses \a and \v, and shows ** for continuation bytes of multibyte characters. Solnix shows ** only in the xpg4 version.Source: Solnix od(1) /usr/bin/od -c, /usr/xpg4/bin/od -c; FreeBSD od(1) -t c |
Standards
- POSIX: od is a POSIX.1-2024 utility.
- FreeBSD: The od utility conforms to IEEE Std 1003.1-2001 (“POSIX.1”).
Writing portable scripts
- Select formats with
-tand explicit sizes (for example-tx1,-to2,-tu4), plus-A,-j,-Nand-v. Avoid-a,-D,-S,-s,-i,-l,-hand-e, which differ or are missing. - Do not rely on the default output; pass
-tor-bexplicitly, since Solnix, Linux and the BSD pages give different or conflicting defaults.
Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.