Why do most *NIX commands my (experience is Linux mostly and rare encounter with FreeBDS) have such "insane" (unintuitive) default, behaviours, i.e. VERY different from what the "equivalent" GUI action would do.
The most obvious example is the file copy command,
cp, that by default on Linux does (1) not copy directories recursively (obviously counterintuitive for anyone coming to the shell from previously using a GUI where a copy/paste copies a directory and everythind in it) and (2) follow simlinks (!!) instead of just copying them the way they are (again, as any GUI user would expect). So the "sane" version of
cp that I imagine should be default is something like:
(And again, this is not a "biased" perspective unique to someone who only used a GUI before. The DOS command
copy for example does what you would expect, like an equivalent of
cp -r or
Another obvious example is the
rm -ri is what any non-shell-geek would expect to be the default.
And it goes on with 90% of all *NIX commands where to get what you would intuitively expect to be the default is something you achieve by adding a few more options. And is not as if what an advanced user expects to be the default is not what a novice user does, for things like
rm it's obvious that 99% of the time
cp -r and
rm -r is what you need. And is not as if things just needed to stay this way for backwards compatibility, as you can just create a new shell and keep
#/usr/bin/oldshell or something for the old one.
So again, the question would be why are the default *NIX shell commands options/switches so far off for what you'd intuitively expect? Where can I find the historical arguments for how things are (even for anecdotical purpose) and what reason other then the obnoxious backwards-compatibility are for the current state of things?
Found this on unix.stackexchange which actually answers A LOT of my questions...