I came to Linux from a DOS background, where I was pretty proficient. My first attempt went down in flames and I didn't come back for years.
Now that I've learned it enough to consider myself 'good' (but not 'expert'), I prefer it. That took a LONG time. Longer than it took for DOS, actually.
And 'help' should probably be a built-in (like it is in fish!) that explains how to navigate the help files, and give a brief introduction to the shell.
The non-obviousness of these commands is not an inherent flaw of the CLI, it's an implementation error.
@tg-login1:~> crap
If 'crap' is not a typo you can run the following command to lookup the package that contains the binary:
command-not-found crap
-bash: crap: command not found` stavros@stavrosvise ~> crap
fish: Unknown command “crap”
No command 'crap' found, did you mean:
Command 'cap' from package 'capistrano' (universe)
Command 'czap' from package 'dvb-apps' (universe)
Command 'crip' from package 'crip' (universe)
Command 'grap' from package 'grap' (universe)
crap: command not found> shell should offer a tutorial by default on first login.
> 'help' should probably be a built-in
FYI, OpenBSD has all these. I don't know why the various Linux distros don't.