Also ps. Everyone uses their own incantation and never strays from it. I use `ps aux` and used to use `ps -def` on Solaris. Some options require a dash, some don’t, it’s such a confusing CLI I never bothered to learn more.
EDIT: also why is `ps` default output so useless? With no arguments it only prints a couple processes and that's it. I have no idea what it's supposed to show me. Talk about bad UX.
Regarding default ps output: remember how people were using Unix in the old days. Logged in via a text terminal on a multiuser system, 99% the only processes you care about are those associated with the current terminal, and that's what ps shows by default. You might have half a dozen backgrounded programs running in that terminal, but that's about it.
Now, my X sessions always have a dozen xterms running and plain ps isn't very useful, but it might break scripts if they changed it...
Yeah this is the problem, the 'terminal' used to be the box/machine in-front of you. Now a 'terminal' is pretty much just a window or tab most of the time.
In case you're curious, the differences basically stem from BSD and Solaris/POSIX having different command syntaxes, and GNU/Linux's ps command trying to implement both. `ps -ef` is the Solaris syntax, while `ps aux` is from BSD.
I think you could say this for CLIs in general. While we can all agree that the
CLI is great for tasks that require repetition; it's just a PITA for any
one-time task. When you just need to do something once and as soon as possible,
the manual-help-type-run loop gets tiresome quickly.
Passing options to a program so it can do what most users would want it to do in
the first place is nonsensical, and yet that describes the behaviour of many if
not all of *nix's tools. It should be the other way around: do what is expected
by default, and provide options for different, more uncommon use-cases. Though I
suppose this is also a form of baggage from the past that it's very difficult to
get rid off because of backwards compatibility.
EDIT: also why is `ps` default output so useless? With no arguments it only prints a couple processes and that's it. I have no idea what it's supposed to show me. Talk about bad UX.