(info "(coreutils) comm invocation") "Before ‘comm’ can be used, the input files must be sorted" ^^^^ "If an input file is diagnosed as being unsorted, the ‘comm’ command will exit with a nonzero status (and the output should not be used). ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"Forcing ‘comm’ to process wrongly sorted input files ... is not guaranteed to produce any particular output. The output will probably not correspond with whatever you hoped it would be." OK, so I would change the default. The new default should be: before producing even a line of output, check both files. If either of them is in order, print the error message, and exit non-zero... _without any line of output!_ Because currently, $ seq 55 > 5 $ seq 55 |tac > 5r $ comm 5 5r just causes the error messages to fly off the screen, leaving only the savvy user, who checks exit values, to have any inkling that there is a problem, and he should not order futher warships, airplanes, etc. based on the results after all. OR, be so kind as to add a second error message after all the output is printed, so it won't fly off the screen.