urchin/SORTING
Thomas Levine e4b2a4e7ea sort
2016-03-31 18:20:54 +00:00

63 lines
1.9 KiB
Plaintext

On the criteria for ordering
==============================
The following sh code creates several files in a directory and then
calls "*", listing them in order.
printf '@ b\n- d\n? a\n~ c\n! e\n' | while read line; do
touch -- "${line}"
done
for file in *; do echo "$file"; done
On one computer, running FreeBSD, the order is apparently
ASCIIbetical/lexicographic.
! e
- d
? a
@ b
~ c
On two GNU systems, running NixOS and Debian, respectively, output is
in dictionary order. I'm not exactly sure what dictionary order is, but
it is something like sorting on the alphabetical characters before
sorting on the rest of the line.
? a
@ b
~ c
- d
! e
While I don't really know what dictionary order is, I was able to determine
that the above results are in dictionary order because of my investigation of
incompatible implementations of sort. Consider the following two sort
commands.
printf '@ b\n- d\n? a\n~ c\n! e\n' | sort
printf '@ b\n- d\n? a\n~ c\n! e\n' | sort -d
With BusyBox v1.23.2 on NixOS 15.09, the first of these commands returns
ASCIIbetical order, and the second returns dictionary order.
With GNU coreutils version 8.24 on NixOS, both commands return
dictionary order. The same is true for GNU coreutils version 8.23 on
Debian Wheezy.
IEEE Std 1003.1, 2013 Edition
http://pubs.opengroup.org/onlinepubs/9699919799/
All of these versions of sort are clear about the order that should be
returned when the "-d" flag is set. Here are results from the "--help"
flag (info and man give similar explanations.) for BusyBox
-d Dictionary order (blank or alphanumeric only)
and GNU coreutils.
-d, --dictionary-order consider only blanks and alphanumeric characters
So the "-d" flag seems to be fine in all of these versions.
I have found no explicit documentation from any of the three versions
of sort as to what the default order should be.