The idea of a simple rule is great, but the suggested rule fails on sort -u which afaik came after sort | uniq for performance reasons.

Another idea on the same vein is that a flag should be added only when the job can be done inside the program and not with stdin/stdout (or no flag can be added if one can reproduce the same behavior using pipelines).

So, you need sort -u because only within sort can you get the performance needed to get the job done.

But you don't need -h in ls -lh. All the information to render a human readable number is present on stdout of ls -l. You could easily have a filter which renders numbers with options like adding commas, dots, scientific notation, precision, money, units, etc.

Tyler

On Sun, Mar 8, 2020, 07:33 Jon Steinhart <jon@fourwinds.com> wrote:
After following this discussion, I guess that I have a simplistic way to
determine whether something should be a dash option or a filter.  In
general, I'd make a filter if whatever it was doing was applicable to
more than one command, a dash option otherwise.

Jon