63 lines
1.9 KiB
Plaintext
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.
|