In the ancient times, we'd say "RTFM" to people who attempted to "discover" functionality instead of Ring the Fing M.
(to what extent have we made progress in software by standing on each others' shoulders instead of each others' toes, and to what extent have we been fortunate that the EEs have been standing on each others' shoulders this short century?)
Note that I'm not anti-discoverability in general — it's just the ticket for GUIs. I just happen to believe that attempting to make CLIs discoverable would nerf their greatest power: that single-character changes can have drastic effects on behaviour. We have high display bandwidths, even in our pockets, so why not have GUIs for infrequently used software and CLIs for power used software?
1. People have to learn the basics of the GUI. Take someone who lived 50 years without seeing a computer and show them Windows. They will have to learn that they can move the mouse, left/right click, and even move while clicking. They will have to learn that some parts of the UI are interactive (e.g. buttons) and others aren't. It is not as intuitive as people tend to imply. My father still double-clicks on elements that - to me - obviously don't require a double click (like a hyperlink). And many people are completely lost if you move them from their Windows to macOS or some Linux UI. Or even between two flavours of Android.
2. Once you know the basic of GUI ("there is a start menu", "I can click on buttons", ...), the UI does not show you that there exists apps like Photoshop to edit pictures, or like Slack to talk to people. You have to somehow learn about the app from somewhere, install it, and only then you get their UI that "shows you what's possible".
I would argue that the CLI is actually quite similar. Once you have learned the basics ("I can change directory", "I can `man cmd`"), then you have to discover apps somehow (e.g. a friend saying "install git with `apt install git`"), and then you can just open the manual with `man git`, and it will most definitely show you what's possible.
The difference, I think, is that people generally don't really want to learn the CLI (it "looks old", I guess?), and many apps don't provide proper manpages (pretty sure most developers don't know how to even create manpages, or package their app for their distro).
With a CLI you have absolutely nothing. There is nothing to see at all, nothing to even begin to interact with to discover the capabilities.
I kindly disagree :-): I would say that with the CLI you have the exact equivalent: man pages.
Just like for a GUI you have to know that by hovering the cursor about an icon you will get some text description, with a CLI you have to know that there are man pages. And just like a bad GUI may have cryptic icons without any description text, a bad CLI will have no manpage. But we should compare a good GUI to a good CLI, to be fair.
[0] admittedly a holdover from the typewriter, but even presented only a keyboard and a screen I've had a kid realize that one special key makes the words go vertically instead of horizontally.
In most GUI applications I can at least find the word “help” of I look around.
Unless the GUI uses some material style nonsense. Then you have to guess where buttons are. Menus are so uncool. Every modern emacs distro starts with disabling them. Mobile apps have replaced the menubar with the hamburger button by necessity. Modern desktop GUIs have copied that despite it clearly being worse on a desktop than a menubar.
The DOS we had came with a few-hundred page manual. The same for any major programs that ran on it. These must have been exhaustive, as I don't remember being stuck at any point, honestly.
Once you learn "man" and "man -k" the cli environment is emminently explorable, and it's not just "try poking at it and see what it does" it's all laid out in written documents that you can read in advance.
I dunno if it is all as high as it appears. I learned to navigate and use Unix type systems in the mid 90s, with only terminal access.
Internet was practically non existent and gopher was still (barely) in active use.
So, yeah, for a start, I don't know if extensive online resources are necessary. For example, I learned most of bash from the bash manages.
It is very difficult, at least initially, to even begin to discover what’s possible in a terminal environment.
There are so many important things that a new user simply needs to be taught, or they will likely never discover basic functionality - such as how to even open, read, and navigate the manual.
The UX barrier to entry is very high without hand-holding or extensive online searching and a strong willingness to persevere in the face of adversity.
GUI applications (generally) solve the initial discoverability barrier by simply showing you what’s possible.
I remember being a kid looking at DOS and wondering “what do I even do?” It was essentially a blank screen with very little indication of how to proceed. My dad had sticky notes on the monitor with the commands to enter to run games.
I never really looked at a command line again after I started using the Windows desktop until I started really learning programming after college, and it was just as daunting at first.